@tigrisdata/cli 2.14.3 → 2.15.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.
Files changed (103) hide show
  1. package/dist/auth/client.js +1 -1
  2. package/dist/auth/fly.js +1 -1
  3. package/dist/auth/iam.js +1 -0
  4. package/dist/auth/provider.js +1 -0
  5. package/dist/auth/storage.js +1 -1
  6. package/dist/chunk-3FMWZQ3C.js +4 -0
  7. package/dist/chunk-4RNEQIK4.js +1 -0
  8. package/dist/chunk-552FMFE5.js +5 -0
  9. package/dist/{chunk-2JHVFROL.js → chunk-5VDFQRGP.js} +1 -1
  10. package/dist/chunk-7RGWTDUP.js +1 -0
  11. package/dist/chunk-AEADROU6.js +4 -0
  12. package/dist/chunk-AHGPPFCQ.js +1 -0
  13. package/dist/{chunk-2XAO2OYD.js → chunk-ATBINUDP.js} +1 -1
  14. package/dist/chunk-BC2HK4K6.js +1 -0
  15. package/dist/{chunk-5J2RG53O.js → chunk-CMGXGXVC.js} +1 -1
  16. package/dist/chunk-JQUG732D.js +1 -0
  17. package/dist/chunk-JVQ7GLJH.js +4 -0
  18. package/dist/chunk-KCWQ4II7.js +8 -0
  19. package/dist/{chunk-BETAO4PB.js → chunk-PPNBQWSR.js} +1 -1
  20. package/dist/chunk-S33FT7Z7.js +8 -0
  21. package/dist/chunk-ZHAJEGAB.js +2 -0
  22. package/dist/cli-core.js +1 -1
  23. package/dist/cli.js +1 -1
  24. package/dist/constants.js +1 -1
  25. package/dist/index.js +1 -1
  26. package/dist/lib/access-keys/assign.js +1 -3
  27. package/dist/lib/access-keys/create.js +1 -3
  28. package/dist/lib/access-keys/delete.js +1 -3
  29. package/dist/lib/access-keys/get.js +1 -3
  30. package/dist/lib/access-keys/list.js +1 -3
  31. package/dist/lib/buckets/create.js +1 -1
  32. package/dist/lib/buckets/delete.js +1 -1
  33. package/dist/lib/buckets/get.js +1 -1
  34. package/dist/lib/buckets/list.js +1 -1
  35. package/dist/lib/buckets/set-cors.js +1 -1
  36. package/dist/lib/buckets/set-locations.js +1 -1
  37. package/dist/lib/buckets/set-migration.js +1 -1
  38. package/dist/lib/buckets/set-notifications.js +1 -1
  39. package/dist/lib/buckets/set-transition.js +1 -1
  40. package/dist/lib/buckets/set-ttl.js +1 -1
  41. package/dist/lib/buckets/set.js +1 -1
  42. package/dist/lib/configure/index.js +1 -1
  43. package/dist/lib/cp.js +1 -1
  44. package/dist/lib/credentials/test.js +1 -1
  45. package/dist/lib/forks/create.js +1 -1
  46. package/dist/lib/forks/list.js +1 -1
  47. package/dist/lib/iam/policies/create.js +1 -3
  48. package/dist/lib/iam/policies/delete.js +1 -3
  49. package/dist/lib/iam/policies/edit.js +1 -3
  50. package/dist/lib/iam/policies/get.js +1 -3
  51. package/dist/lib/iam/policies/list.js +1 -3
  52. package/dist/lib/iam/users/invite.js +1 -6
  53. package/dist/lib/iam/users/list.js +4 -9
  54. package/dist/lib/iam/users/remove.js +1 -6
  55. package/dist/lib/iam/users/revoke-invitation.js +1 -6
  56. package/dist/lib/iam/users/update-role.js +1 -6
  57. package/dist/lib/login/credentials.js +1 -1
  58. package/dist/lib/login/oauth.js +1 -1
  59. package/dist/lib/login/select.js +1 -1
  60. package/dist/lib/logout.js +1 -1
  61. package/dist/lib/ls.js +1 -1
  62. package/dist/lib/mk.js +1 -1
  63. package/dist/lib/mv.js +1 -1
  64. package/dist/lib/objects/delete.js +1 -1
  65. package/dist/lib/objects/get.js +1 -1
  66. package/dist/lib/objects/info.js +1 -0
  67. package/dist/lib/objects/list.js +1 -1
  68. package/dist/lib/objects/put.js +1 -1
  69. package/dist/lib/objects/set.js +1 -1
  70. package/dist/lib/organizations/create.js +1 -7
  71. package/dist/lib/organizations/list.js +1 -4
  72. package/dist/lib/organizations/select.js +3 -6
  73. package/dist/lib/presign.js +3 -1
  74. package/dist/lib/rm.js +1 -1
  75. package/dist/lib/snapshots/list.js +1 -1
  76. package/dist/lib/snapshots/take.js +1 -1
  77. package/dist/lib/stat.js +1 -1
  78. package/dist/lib/touch.js +1 -1
  79. package/dist/lib/update.js +1 -0
  80. package/dist/lib/whoami.js +2 -2
  81. package/dist/specs.yaml +90 -219
  82. package/dist/utils/exit.js +1 -1
  83. package/dist/utils/messages.js +1 -1
  84. package/dist/utils/options.js +1 -1
  85. package/dist/utils/path.js +1 -1
  86. package/dist/utils/specs.js +1 -1
  87. package/dist/utils/update-check.js +1 -1
  88. package/package.json +29 -19
  89. package/dist/auth/config.js +0 -1
  90. package/dist/auth/s3-client.js +0 -1
  91. package/dist/auth/types.js +0 -0
  92. package/dist/chunk-2ALXOKBR.js +0 -1
  93. package/dist/chunk-6JFWKF3Y.js +0 -8
  94. package/dist/chunk-CFMM35UQ.js +0 -2
  95. package/dist/chunk-CLT45ZCW.js +0 -1
  96. package/dist/chunk-DOUR5YEY.js +0 -1
  97. package/dist/chunk-IFEXFA2T.js +0 -1
  98. package/dist/chunk-JRALYIRA.js +0 -1
  99. package/dist/chunk-LCWHZUZZ.js +0 -1
  100. package/dist/chunk-LQ4BU234.js +0 -4
  101. package/dist/chunk-RJGUZ3B2.js +0 -7
  102. package/dist/chunk-XBGYA42R.js +0 -4
  103. package/dist/chunk-Y3JRLJCC.js +0 -1
package/dist/lib/cp.js CHANGED
@@ -1 +1 @@
1
- import{a as B}from"../chunk-EKW6XTGL.js";import{a as j}from"../chunk-SAAGVLRE.js";import{a as w}from"../chunk-CQCBYE3X.js";import{a as O,b as T,d as D,g as x,h as U,i as J}from"../chunk-LCWHZUZZ.js";import{a as N}from"../chunk-JRALYIRA.js";import{b as q}from"../chunk-CFMM35UQ.js";import{a as f}from"../chunk-LQ4BU234.js";import"../chunk-DV3LCXRH.js";import"../chunk-2JHVFROL.js";import"../chunk-BETAO4PB.js";import"../chunk-2ALXOKBR.js";import"../chunk-DOUR5YEY.js";import"../chunk-CLT45ZCW.js";import"../chunk-2XAO2OYD.js";import{createReadStream as P,createWriteStream as tt,statSync as L,readdirSync as E,mkdirSync as et,existsSync as Q}from"fs";import{resolve as G,dirname as K,basename as z,join as v,relative as _}from"path";import{homedir as ot}from"os";import{Readable as V}from"stream";import{pipeline as it}from"stream/promises";import{get as X,put as M,list as nt,head as Y}from"@tigrisdata/storage";var h=!1;function rt(i,t){let e=O(i),l=O(t);return!e&&!l&&f("At least one path must be a remote Tigris path (t3:// or tigris://)"),e&&l?"remote-to-remote":e?"remote-to-local":"local-to-remote"}function Z(i){return i==="~"||i.startsWith("~/")?G(ot(),i.slice(2)):G(i)}function at(i){return E(i,{recursive:!0,withFileTypes:!0}).filter(e=>e.isFile()).map(e=>{let l=e.parentPath??e.path;return v(l,e.name)})}function lt(i,t){let e=K(i),l=z(i),s=x(l);return Q(e)?t?E(e,{recursive:!0,withFileTypes:!0}).filter(a=>a.isFile()&&s.test(a.name)).map(a=>{let n=a.parentPath??a.path;return v(n,a.name)}):E(e,{withFileTypes:!0}).filter(n=>n.isFile()&&s.test(n.name)).map(n=>v(e,n.name)):[]}async function I(i,t,e,l,s=!1){let u;try{u=L(i).size}catch{return{error:`File not found: ${i}`}}let a=P(i),n=V.toWeb(a),{error:o}=await M(e,n,{...B(u),onUploadProgress:s?({loaded:r})=>{if(u!==void 0&&u>0){let c=Math.round(r/u*100);process.stdout.write(`\rUploading: ${w(r)} / ${w(u)} (${c}%)`)}else process.stdout.write(`\rUploading: ${w(r)}`)}:void 0,config:{...l,bucket:t}});return s&&process.stdout.write("\r"+" ".repeat(60)+"\r"),o?{error:o.message}:{}}async function H(i,t,e,l,s=!1){let u;if(s){let{data:p}=await Y(t,{config:{...l,bucket:i}});u=p?.size}let{data:a,error:n}=await X(t,"stream",{config:{...l,bucket:i}});if(n)return{error:n.message};let o=K(e);Q(o)||et(o,{recursive:!0});let r=tt(e),c=V.fromWeb(a);if(s&&u!==void 0&&u>0){let p=0;c.on("data",m=>{p+=m.length;let g=Math.round(p/u*100);process.stdout.write(`\rDownloading: ${w(p)} / ${w(u)} (${g}%)`)})}return await it(c,r),s&&process.stdout.write("\r"+" ".repeat(60)+"\r"),{}}async function A(i,t,e,l,s,u=!1){if(e.endsWith("/")){let{error:c}=await M(s,"",{config:{...i,bucket:l}});return c?{error:c.message}:{}}let a;if(u){let{data:c}=await Y(e,{config:{...i,bucket:t}});a=c?.size}let{data:n,error:o}=await X(e,"stream",{config:{...i,bucket:t}});if(o)return{error:o.message};let{error:r}=await M(s,n,{...B(a),onUploadProgress:u?({loaded:c})=>{if(a!==void 0&&a>0){let p=Math.round(c/a*100);process.stdout.write(`\rCopying: ${w(c)} / ${w(a)} (${p}%)`)}else process.stdout.write(`\rCopying: ${w(c)}`)}:void 0,config:{...i,bucket:l}});return u&&process.stdout.write("\r"+" ".repeat(60)+"\r"),r?{error:r.message}:{}}async function ct(i,t,e,l){let s=Z(i);if(i.includes("*")){let n=lt(s,l);if(n.length===0){console.log(h?JSON.stringify({action:"copied",direction:"local-to-remote",count:0}):"No files matching pattern");return}let o=K(s),r=n.map(m=>async()=>{let g=_(o,m),k=t.path?`${t.path.replace(/\/$/,"")}/${g}`:g,$=await I(m,t.bucket,k,e);return $.error?(console.error(`Failed to upload ${m}: ${$.error}`),!1):(h||console.log(`Uploaded ${m} -> t3://${t.bucket}/${k}`),!0)}),p=(await j(r,8)).filter(Boolean).length;console.log(h?JSON.stringify({action:"copied",direction:"local-to-remote",count:p}):`Uploaded ${p} file(s)`);return}let a;try{a=L(s)}catch{f(`Source not found: ${i}`)}if(a.isDirectory()){l||f(`${i} is a directory (not copied). Use -r to copy recursively.`);let n=at(s);if(n.length===0){console.log(h?JSON.stringify({action:"copied",direction:"local-to-remote",count:0}):"No files to upload");return}let o=i.endsWith("/")?"":z(s),r=n.map(m=>async()=>{let g=_(s,m),$=[t.path?.replace(/\/$/,""),o,g].filter(Boolean).join("/"),R=await I(m,t.bucket,$,e);return R.error?(console.error(`Failed to upload ${m}: ${R.error}`),!1):(h||console.log(`Uploaded ${m} -> t3://${t.bucket}/${$}`),!0)}),p=(await j(r,8)).filter(Boolean).length;console.log(h?JSON.stringify({action:"copied",direction:"local-to-remote",count:p}):`Uploaded ${p} file(s)`)}else{let n=z(s),o;t.path?i.endsWith("/")||t.path.endsWith("/")?o=`${t.path.replace(/\/$/,"")}/${n}`:await D(t.bucket,t.path,e)?o=`${t.path}/${n}`:o=t.path:o=n;let r=await I(s,t.bucket,o,e,!h);r.error&&f(r.error),console.log(h?JSON.stringify({action:"copied",direction:"local-to-remote",count:1,src:i,dest:`t3://${t.bucket}/${o}`}):`Uploaded ${i} -> t3://${t.bucket}/${o}`)}}async function st(i,t,e,l,s){let u=i.endsWith("/");!t.path&&!u&&f("Cannot copy a bucket. Provide a path within the bucket.");let a=Z(e),n=t.path.includes("*"),o=t.path.endsWith("/")||!t.path&&u;if(!n&&!o&&(o=await D(t.bucket,t.path,l)),o&&!n&&!s&&f("Source is a remote folder (not copied). Use -r to copy recursively."),n||o){let r=n?U(t.path):t.path?t.path.endsWith("/")?t.path:`${t.path}/`:"",c=!n&&t.path&&!t.path.endsWith("/")?t.path.split("/").filter(Boolean).pop()??"":"",{items:p,error:m}=await J(t.bucket,r||void 0,l);m&&f(m);let g=p.filter(y=>!y.name.endsWith("/"));if(n){let y=t.path.split("/").pop(),b=x(y);g=g.filter(S=>{let d=r?S.name.slice(r.length):S.name;return!s&&d.includes("/")?!1:b.test(d.split("/").pop())})}if(g.length===0){console.log(h?JSON.stringify({action:"copied",direction:"remote-to-local",count:0}):"No objects to download");return}let k=g.map(y=>async()=>{let b=r?y.name.slice(r.length):y.name,S=c?v(a,c,b):v(a,b),d=await H(t.bucket,y.name,S,l);return d.error?(console.error(`Failed to download ${y.name}: ${d.error}`),!1):(h||console.log(`Downloaded t3://${t.bucket}/${y.name} -> ${S}`),!0)}),R=(await j(k,8)).filter(Boolean).length;console.log(h?JSON.stringify({action:"copied",direction:"remote-to-local",count:R}):`Downloaded ${R} file(s)`)}else{let r=t.path.split("/").pop(),c,p=!1;try{p=L(a).isDirectory()}catch{}p||e.endsWith("/")?c=v(a,r):c=a;let m=await H(t.bucket,t.path,c,l,!h);m.error&&f(m.error),console.log(h?JSON.stringify({action:"copied",direction:"remote-to-local",count:1,src:`t3://${t.bucket}/${t.path}`,dest:c}):`Downloaded t3://${t.bucket}/${t.path} -> ${c}`)}}async function pt(i,t,e,l,s){let u=i.endsWith("/");!t.path&&!u&&f("Cannot copy a bucket. Provide a path within the bucket.");let a=i.includes("*"),n=t.path.endsWith("/")||!t.path&&u;if(!a&&!n&&t.path&&(n=await D(t.bucket,t.path,l)),n&&!a&&!s&&f("Source is a remote folder (not copied). Use -r to copy recursively."),a||n){let o=a?U(t.path):t.path?t.path.endsWith("/")?t.path:`${t.path}/`:"",r=!a&&t.path&&!t.path.endsWith("/")?t.path.split("/").filter(Boolean).pop()??"":"",p=[e.path?.replace(/\/$/,"")||"",r].filter(Boolean).join("/"),m=p?`${p}/`:"";t.bucket===e.bucket&&o===m&&f("Source and destination are the same");let{items:g,error:k}=await J(t.bucket,o||void 0,l);k&&f(k);let $=g.filter(d=>d.name!==o);if(a){let d=t.path.split("/").pop(),F=x(d);$=$.filter(W=>{let C=o?W.name.slice(o.length):W.name;return!s&&C.includes("/")?!1:F.test(C.split("/").pop())})}let R=$.map(d=>async()=>{let F=o?d.name.slice(o.length):d.name,W=p?`${p}/${F}`:F,C=await A(l,t.bucket,d.name,e.bucket,W);return C.error?(console.error(`Failed to copy ${d.name}: ${C.error}`),!1):(h||console.log(`Copied t3://${t.bucket}/${d.name} -> t3://${e.bucket}/${W}`),!0)}),b=(await j(R,8)).filter(Boolean).length,S=!1;if(p&&o){let{data:d}=await nt({prefix:o,limit:1,config:{...l,bucket:t.bucket}});if(d?.items?.some(F=>F.name===o)){let F=`${p}/`,W=await A(l,t.bucket,o,e.bucket,F);W.error?console.error(`Failed to copy folder marker: ${W.error}`):S=!0}}if(b===0&&S&&(b=1),b===0){console.log(h?JSON.stringify({action:"copied",direction:"remote-to-remote",count:0}):"No objects to copy");return}console.log(h?JSON.stringify({action:"copied",direction:"remote-to-remote",count:b}):`Copied ${b} object(s)`)}else{let o=t.path.split("/").pop(),r;e.path?e.path.endsWith("/")?r=`${e.path}${o}`:await D(e.bucket,e.path,l)?r=`${e.path}/${o}`:r=e.path:r=o,t.bucket===e.bucket&&t.path===r&&f("Source and destination are the same");let c=await A(l,t.bucket,t.path,e.bucket,r,!h);c.error&&f(c.error),console.log(h?JSON.stringify({action:"copied",direction:"remote-to-remote",count:1,src:`t3://${t.bucket}/${t.path}`,dest:`t3://${e.bucket}/${r}`}):`Copied t3://${t.bucket}/${t.path} -> t3://${e.bucket}/${r}`)}}async function ut(i){let t=N(i,["src"]),e=N(i,["dest"]);(!t||!e)&&f("Both src and dest arguments are required");let l=!!N(i,["recursive","r"]);h=(N(i,["json"])?"json":N(i,["format"],"table"))==="json";let a=rt(t,e),n=await q({withCredentialProvider:!0});switch(a){case"local-to-remote":{let o=T(e);o.bucket||f("Invalid destination path"),await ct(t,o,n,l);break}case"remote-to-local":{let o=T(t);o.bucket||f("Invalid source path"),await st(t,o,e,n,l);break}case"remote-to-remote":{let o=T(t),r=T(e);o.bucket||f("Invalid source path"),r.bucket||f("Invalid destination path"),await pt(t,o,r,n,l);break}}process.exit(0)}export{ut as default};
1
+ import{a as C}from"../chunk-SAAGVLRE.js";import{a as B}from"../chunk-EKW6XTGL.js";import{a as w}from"../chunk-CQCBYE3X.js";import{a as U,b as T,d as D,g as O,h as J,j}from"../chunk-JQUG732D.js";import{f as G}from"../chunk-552FMFE5.js";import{a as x,b as q}from"../chunk-AHGPPFCQ.js";import{a as f}from"../chunk-3FMWZQ3C.js";import"../chunk-DV3LCXRH.js";import"../chunk-5VDFQRGP.js";import"../chunk-PPNBQWSR.js";import"../chunk-ATBINUDP.js";import"../chunk-BC2HK4K6.js";import"../chunk-7RGWTDUP.js";import{get as V,head as X,list as tt,put as E}from"@tigrisdata/storage";import{createReadStream as et,createWriteStream as ot,existsSync as Y,mkdirSync as it,readdirSync as z,statSync as L}from"fs";import{homedir as nt}from"os";import{basename as M,dirname as K,join as N,relative as _,resolve as H}from"path";import{Readable as Z}from"stream";import{pipeline as rt}from"stream/promises";var h=!1;function at(n,t){let e=U(n),l=U(t);return!e&&!l&&f("At least one path must be a remote Tigris path (t3:// or tigris://)"),e&&l?"remote-to-remote":e?"remote-to-local":"local-to-remote"}function P(n){return n==="~"||n.startsWith("~/")?H(nt(),n.slice(2)):H(n)}function lt(n){return z(n,{recursive:!0,withFileTypes:!0}).filter(e=>e.isFile()).map(e=>{let l=e.parentPath??e.path;return N(l,e.name)})}function ct(n,t){let e=K(n),l=M(n),s=O(l);return Y(e)?t?z(e,{recursive:!0,withFileTypes:!0}).filter(r=>r.isFile()&&s.test(r.name)).map(r=>{let o=r.parentPath??r.path;return N(o,r.name)}):z(e,{withFileTypes:!0}).filter(o=>o.isFile()&&s.test(o.name)).map(o=>N(e,o.name)):[]}async function I(n,t,e,l,s=!1){let p;try{p=L(n).size}catch{return{error:`File not found: ${n}`}}let r=et(n),o=Z.toWeb(r),{error:i}=await E(e,o,{...B(p),onUploadProgress:s?({loaded:a})=>{if(p!==void 0&&p>0){let c=Math.round(a/p*100);process.stdout.write(`\rUploading: ${w(a)} / ${w(p)} (${c}%)`)}else process.stdout.write(`\rUploading: ${w(a)}`)}:void 0,config:{...l,bucket:t}});return s&&process.stdout.write("\r"+" ".repeat(60)+"\r"),i?{error:i.message}:{}}async function Q(n,t,e,l,s=!1){let p;if(s){let{data:u}=await X(t,{config:{...l,bucket:n}});p=u?.size}let{data:r,error:o}=await V(t,"stream",{config:{...l,bucket:n}});if(o)return{error:o.message};let i=K(e);Y(i)||it(i,{recursive:!0});let a=ot(e),c=Z.fromWeb(r);if(s&&p!==void 0&&p>0){let u=0;c.on("data",m=>{u+=m.length;let g=Math.round(u/p*100);process.stdout.write(`\rDownloading: ${w(u)} / ${w(p)} (${g}%)`)})}return await rt(c,a),s&&process.stdout.write("\r"+" ".repeat(60)+"\r"),{}}async function A(n,t,e,l,s,p=!1){if(e.endsWith("/")){let{error:c}=await E(s,"",{config:{...n,bucket:l}});return c?{error:c.message}:{}}let r;if(p){let{data:c}=await X(e,{config:{...n,bucket:t}});r=c?.size}let{data:o,error:i}=await V(e,"stream",{config:{...n,bucket:t}});if(i)return{error:i.message};let{error:a}=await E(s,o,{...B(r),onUploadProgress:p?({loaded:c})=>{if(r!==void 0&&r>0){let u=Math.round(c/r*100);process.stdout.write(`\rCopying: ${w(c)} / ${w(r)} (${u}%)`)}else process.stdout.write(`\rCopying: ${w(c)}`)}:void 0,config:{...n,bucket:l}});return p&&process.stdout.write("\r"+" ".repeat(60)+"\r"),a?{error:a.message}:{}}async function st(n,t,e,l){let s=P(n);if(n.includes("*")){let o=ct(s,l);if(o.length===0){console.log(h?JSON.stringify({action:"copied",direction:"local-to-remote",count:0}):"No files matching pattern");return}let i=K(s),a=o.map(m=>async()=>{let g=_(i,m),k=t.path?`${t.path.replace(/\/$/,"")}/${g}`:g,$=await I(m,t.bucket,k,e);return $.error?(console.error(`Failed to upload ${m}: ${$.error}`),!1):(h||console.log(`Uploaded ${m} -> t3://${t.bucket}/${k}`),!0)}),u=(await C(a,8)).filter(Boolean).length;console.log(h?JSON.stringify({action:"copied",direction:"local-to-remote",count:u}):`Uploaded ${u} file(s)`);return}let r;try{r=L(s)}catch{f(`Source not found: ${n}`)}if(r.isDirectory()){l||f(`${n} is a directory (not copied). Use -r to copy recursively.`);let o=lt(s);if(o.length===0){console.log(h?JSON.stringify({action:"copied",direction:"local-to-remote",count:0}):"No files to upload");return}let i=n.endsWith("/")?"":M(s),a=o.map(m=>async()=>{let g=_(s,m),$=[t.path?.replace(/\/$/,""),i,g].filter(Boolean).join("/"),R=await I(m,t.bucket,$,e);return R.error?(console.error(`Failed to upload ${m}: ${R.error}`),!1):(h||console.log(`Uploaded ${m} -> t3://${t.bucket}/${$}`),!0)}),u=(await C(a,8)).filter(Boolean).length;console.log(h?JSON.stringify({action:"copied",direction:"local-to-remote",count:u}):`Uploaded ${u} file(s)`)}else{let o=M(s),i;t.path?n.endsWith("/")||t.path.endsWith("/")?i=`${t.path.replace(/\/$/,"")}/${o}`:await D(t.bucket,t.path,e)?i=`${t.path}/${o}`:i=t.path:i=o;let a=await I(s,t.bucket,i,e,!h);a.error&&f(a.error),console.log(h?JSON.stringify({action:"copied",direction:"local-to-remote",count:1,src:n,dest:`t3://${t.bucket}/${i}`}):`Uploaded ${n} -> t3://${t.bucket}/${i}`)}}async function pt(n,t,e,l,s){let p=n.endsWith("/");!t.path&&!p&&f("Cannot copy a bucket. Provide a path within the bucket.");let r=P(e),o=t.path.includes("*"),i=t.path.endsWith("/")||!t.path&&p;if(!o&&!i&&(i=await D(t.bucket,t.path,l)),i&&!o&&!s&&f("Source is a remote folder (not copied). Use -r to copy recursively."),o||i){let a=o?J(t.path):t.path?t.path.endsWith("/")?t.path:`${t.path}/`:"",c=!o&&t.path&&!t.path.endsWith("/")?t.path.split("/").filter(Boolean).pop()??"":"",{items:u,error:m}=await j(t.bucket,a||void 0,l);m&&f(m);let g=u.filter(y=>!y.name.endsWith("/"));if(o){let y=t.path.split("/").pop(),b=O(y);g=g.filter(S=>{let d=a?S.name.slice(a.length):S.name;return!s&&d.includes("/")?!1:b.test(d.split("/").pop())})}if(g.length===0){console.log(h?JSON.stringify({action:"copied",direction:"remote-to-local",count:0}):"No objects to download");return}let k=g.map(y=>async()=>{let b=a?y.name.slice(a.length):y.name,S=c?N(r,c,b):N(r,b),d=await Q(t.bucket,y.name,S,l);return d.error?(console.error(`Failed to download ${y.name}: ${d.error}`),!1):(h||console.log(`Downloaded t3://${t.bucket}/${y.name} -> ${S}`),!0)}),R=(await C(k,8)).filter(Boolean).length;console.log(h?JSON.stringify({action:"copied",direction:"remote-to-local",count:R}):`Downloaded ${R} file(s)`)}else{let a=t.path.split("/").pop(),c,u=!1;try{u=L(r).isDirectory()}catch{}u||e.endsWith("/")?c=N(r,a):c=r;let m=await Q(t.bucket,t.path,c,l,!h);m.error&&f(m.error),console.log(h?JSON.stringify({action:"copied",direction:"remote-to-local",count:1,src:`t3://${t.bucket}/${t.path}`,dest:c}):`Downloaded t3://${t.bucket}/${t.path} -> ${c}`)}}async function ut(n,t,e,l,s){let p=n.endsWith("/");!t.path&&!p&&f("Cannot copy a bucket. Provide a path within the bucket.");let r=n.includes("*"),o=t.path.endsWith("/")||!t.path&&p;if(!r&&!o&&t.path&&(o=await D(t.bucket,t.path,l)),o&&!r&&!s&&f("Source is a remote folder (not copied). Use -r to copy recursively."),r||o){let i=r?J(t.path):t.path?t.path.endsWith("/")?t.path:`${t.path}/`:"",a=!r&&t.path&&!t.path.endsWith("/")?t.path.split("/").filter(Boolean).pop()??"":"",u=[e.path?.replace(/\/$/,"")||"",a].filter(Boolean).join("/"),m=u?`${u}/`:"";t.bucket===e.bucket&&i===m&&f("Source and destination are the same");let{items:g,error:k}=await j(t.bucket,i||void 0,l);k&&f(k);let $=g.filter(d=>d.name!==i);if(r){let d=t.path.split("/").pop(),W=O(d);$=$.filter(F=>{let v=i?F.name.slice(i.length):F.name;return!s&&v.includes("/")?!1:W.test(v.split("/").pop())})}let R=$.map(d=>async()=>{let W=i?d.name.slice(i.length):d.name,F=u?`${u}/${W}`:W,v=await A(l,t.bucket,d.name,e.bucket,F);return v.error?(console.error(`Failed to copy ${d.name}: ${v.error}`),!1):(h||console.log(`Copied t3://${t.bucket}/${d.name} -> t3://${e.bucket}/${F}`),!0)}),b=(await C(R,8)).filter(Boolean).length,S=!1;if(u&&i){let{data:d}=await tt({prefix:i,limit:1,config:{...l,bucket:t.bucket}});if(d?.items?.some(W=>W.name===i)){let W=`${u}/`,F=await A(l,t.bucket,i,e.bucket,W);F.error?console.error(`Failed to copy folder marker: ${F.error}`):S=!0}}if(b===0&&S&&(b=1),b===0){console.log(h?JSON.stringify({action:"copied",direction:"remote-to-remote",count:0}):"No objects to copy");return}console.log(h?JSON.stringify({action:"copied",direction:"remote-to-remote",count:b}):`Copied ${b} object(s)`)}else{let i=t.path.split("/").pop(),a;e.path?e.path.endsWith("/")?a=`${e.path}${i}`:await D(e.bucket,e.path,l)?a=`${e.path}/${i}`:a=e.path:a=i,t.bucket===e.bucket&&t.path===a&&f("Source and destination are the same");let c=await A(l,t.bucket,t.path,e.bucket,a,!h);c.error&&f(c.error),console.log(h?JSON.stringify({action:"copied",direction:"remote-to-remote",count:1,src:`t3://${t.bucket}/${t.path}`,dest:`t3://${e.bucket}/${a}`}):`Copied t3://${t.bucket}/${t.path} -> t3://${e.bucket}/${a}`)}}async function ft(n){let t=x(n,["src"]),e=x(n,["dest"]);(!t||!e)&&f("Both src and dest arguments are required");let l=!!x(n,["recursive","r"]);h=q(n)==="json";let p=at(t,e),r=await G({withCredentialProvider:!0});switch(p){case"local-to-remote":{let o=T(e);o.bucket||f("Invalid destination path"),await st(t,o,r,l);break}case"remote-to-local":{let o=T(t);o.bucket||f("Invalid source path"),await pt(t,o,e,r,l);break}case"remote-to-remote":{let o=T(t),i=T(e);o.bucket||f("Invalid source path"),i.bucket||f("Invalid destination path"),await ut(t,o,i,r,l);break}}process.exit(0)}export{ft as default};
@@ -1 +1 @@
1
- import{a as c}from"../../chunk-JRALYIRA.js";import{b}from"../../chunk-CFMM35UQ.js";import{a as s}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as l,c as d,d as r,i as m}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import{g as k}from"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{listBuckets as p,getBucketInfo as N}from"@tigrisdata/storage";var e=m("credentials","test");async function B(a){l(e);let f=c(a,["json"])?"json":c(a,["format","f","F"],"table"),t=c(a,["bucket","b"]),i=await b();!i.accessKeyId&&!i.sessionToken&&(r(e,'No credentials found. Run "tigris configure" or "tigris login" first.'),s('No credentials found. Run "tigris configure" or "tigris login" first.',e));let g=k(),u={...i,...g&&!i.organizationId?{organizationId:g}:{}};if(t){let{data:o,error:n}=await N(t,{config:u});n&&(r(e,`Current credentials don't have access to bucket "${t}"`),s(n,e)),f==="json"?console.log(JSON.stringify({valid:!0,bucket:t,...o.sourceBucketName?{forkOf:o.sourceBucketName}:{}})):(console.log(` Bucket: ${t}`),console.log(" Access verified."),o.sourceBucketName&&console.log(` Fork of: ${o.sourceBucketName}`))}else{let{data:o,error:n}=await p({config:u});n&&(r(e,"Current credentials don't have sufficient access"),s(n,e)),console.log(f==="json"?JSON.stringify({valid:!0,bucketCount:o.buckets.length}):` Access verified. Found ${o.buckets.length} bucket(s).`)}d(e)}export{B as default};
1
+ import{f as B}from"../../chunk-552FMFE5.js";import{a as p,b}from"../../chunk-AHGPPFCQ.js";import{a as c,b as m}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as g,c as l,d as n,i as d}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import{i as k}from"../../chunk-7RGWTDUP.js";import{getBucketInfo as N,listBuckets as h}from"@tigrisdata/storage";var t=d("credentials","test");async function v(s){g(t);let a=b(s),o=p(s,["bucket","b"]),i=await B();!i.accessKeyId&&!i.sessionToken&&m(t,'No credentials found. Run "tigris configure" or "tigris login" first.');let f=k(),u={...i,...f&&!i.organizationId?{organizationId:f}:{}};if(o){let{data:e,error:r}=await N(o,{config:u});r&&(n(t,`Current credentials don't have access to bucket "${o}"`),c(r,t)),a==="json"?console.log(JSON.stringify({valid:!0,bucket:o,...e.sourceBucketName?{forkOf:e.sourceBucketName}:{}})):(console.log(` Bucket: ${o}`),console.log(" Access verified."),e.sourceBucketName&&console.log(` Fork of: ${e.sourceBucketName}`))}else{let{data:e,error:r}=await h({config:u});r&&(n(t,"Current credentials don't have sufficient access"),c(r,t)),console.log(a==="json"?JSON.stringify({valid:!0,bucketCount:e.buckets.length}):` Access verified. Found ${e.buckets.length} bucket(s).`)}l(t)}export{v as default};
@@ -1 +1 @@
1
- import{a as o}from"../../chunk-JRALYIRA.js";import{b as f}from"../../chunk-CFMM35UQ.js";import{a as t}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as c,c as m,d as e,i as u}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{createBucket as g}from"@tigrisdata/storage";var r=u("forks","create");async function p(i){c(r);let n=o(i,["name"]),a=o(i,["fork-name","forkName"]),k=o(i,["snapshot","s","S"]);n||(e(r,"Source bucket name is required"),t("Source bucket name is required",r)),a||(e(r,"Fork name is required"),t("Fork name is required",r));let{error:s}=await g(a,{sourceBucketName:n,sourceBucketSnapshot:k,config:await f()});s&&(e(r,s.message),t(s,r)),m(r,{name:n,forkName:a})}export{p as default};
1
+ import{f as g}from"../../chunk-552FMFE5.js";import{a,b as m}from"../../chunk-AHGPPFCQ.js";import{b as n}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as c,c as s,i as f}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{createBucket as p}from"@tigrisdata/storage";var r=f("forks","create");async function S(t){c(r);let u=m(t),o=a(t,["name"]),e=a(t,["fork-name","forkName"]),k=a(t,["snapshot","s","S"]);o||n(r,"Source bucket name is required"),e||n(r,"Fork name is required");let{error:i}=await p(e,{sourceBucketName:o,sourceBucketSnapshot:k,config:await g()});i&&n(r,i),u==="json"&&console.log(JSON.stringify({action:"created",name:e,forkOf:o})),s(r,{name:o,forkName:e})}export{S as default};
@@ -1 +1 @@
1
- import{f as l}from"../../chunk-CQCBYE3X.js";import{a as i}from"../../chunk-JRALYIRA.js";import{b as d}from"../../chunk-CFMM35UQ.js";import{a}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as g,c as k,d as n,e as u,i as p}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{listBuckets as x,getBucketInfo as b}from"@tigrisdata/storage";var t=p("forks","list");async function B(s){g(t);let e=i(s,["name"]),h=i(s,["json"])?"json":i(s,["format","f","F"],"table");e||(n(t,"Source bucket name is required"),a("Source bucket name is required",t));let c=await d(),{data:w,error:f}=await b(e,{config:c});if(f&&(n(t,f.message),a(f,t)),!w.hasForks){u(t);return}let{data:y,error:m}=await x({config:c});m&&(n(t,m.message),a(m,t));let r=[];for(let o of y.buckets){if(o.name===e)continue;let{data:j}=await b(o.name,{config:c});j?.sourceBucketName===e&&r.push({name:o.name,created:o.creationDate})}if(r.length===0){u(t);return}let S=l(r,h,"forks","fork",[{key:"name",header:"Name"},{key:"created",header:"Created"}]);console.log(S),k(t,{count:r.length})}export{B as default};
1
+ import{f as l}from"../../chunk-CQCBYE3X.js";import{f as d}from"../../chunk-552FMFE5.js";import{a as g,b as p}from"../../chunk-AHGPPFCQ.js";import{b as n}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as m,c as u,e as i,i as k}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{getBucketInfo as h,listBuckets as E}from"@tigrisdata/storage";var t=k("forks","list");async function x(c){m(t);let r=g(c,["name"]),w=p(c);r||n(t,"Source bucket name is required");let a=await d(),{data:y,error:f}=await h(r,{config:a});if(f&&n(t,f),!y.hasForks){i(t);return}let{data:b,error:s}=await E({config:a});s&&n(t,s);let e=[];for(let o of b.buckets){if(o.name===r)continue;let{data:B}=await h(o.name,{config:a});B?.sourceBucketName===r&&e.push({name:o.name,created:o.creationDate})}if(e.length===0){i(t);return}let S=l(e,w,"forks","fork",[{key:"name",header:"Name"},{key:"created",header:"Created"}]);console.log(S),u(t,{count:e.length})}export{x as default};
@@ -1,3 +1 @@
1
- import{a as v,b as w}from"../../../chunk-Y7MJZRR4.js";import{a as r}from"../../../chunk-JRALYIRA.js";import{a as P}from"../../../chunk-CFMM35UQ.js";import{a as e}from"../../../chunk-LQ4BU234.js";import"../../../chunk-DV3LCXRH.js";import{b as u,c as g,d as t,i as p}from"../../../chunk-2JHVFROL.js";import"../../../chunk-BETAO4PB.js";import{b as y}from"../../../chunk-2ALXOKBR.js";import{g as h}from"../../../chunk-DOUR5YEY.js";import{c as f}from"../../../chunk-CLT45ZCW.js";import"../../../chunk-2XAO2OYD.js";import{existsSync as T,readFileSync as C}from"fs";import{addPolicy as I}from"@tigrisdata/iam";var i=p("iam policies","create");async function k(a){u(i);let c=r(a,["name"]),n=r(a,["document","d"]),A=r(a,["description"])??"";c||(t(i,"Policy name is required"),e("Policy name is required",i)),/^[a-zA-Z0-9=,.@_-]+$/.test(c)||(t(i,"Invalid policy name. Only alphanumeric characters and =,.@_- are allowed."),e("Invalid policy name. Only alphanumeric characters and =,.@_- are allowed.",i)),await P()!=="oauth"&&(t(i,`Policies can only be created when logged in via OAuth.
2
- Run "tigris login oauth" first.`),e(`Policies can only be created when logged in via OAuth.
3
- Run "tigris login oauth" first.`,i));let d=y();await d.isAuthenticated()||(t(i,'Not authenticated. Run "tigris login oauth" first.'),e('Not authenticated. Run "tigris login oauth" first.',i));let O=await d.getAccessToken(),S=h(),N=f(),R={sessionToken:O,organizationId:S??void 0,iamEndpoint:N.iamEndpoint},o;n?T(n)?o=C(n,"utf-8"):o=n:process.stdin.isTTY?(t(i,"Policy document is required. Provide via --document or pipe to stdin."),e("Policy document is required. Provide via --document or pipe to stdin.",i)):o=await v();let l;try{l=w(o)}catch{t(i,"Invalid JSON in policy document"),e("Invalid JSON in policy document",i)}let{data:m,error:s}=await I(c,{document:l,description:A,config:R});s&&(t(i,s.message),e(s,i)),g(i,{name:m.name}),console.log(`Resource: ${m.resource}`)}export{k as default};
1
+ import{a as g,b as y}from"../../../chunk-Y7MJZRR4.js";import{a as p}from"../../../chunk-ZHAJEGAB.js";import"../../../chunk-552FMFE5.js";import{a as c,b as u}from"../../../chunk-AHGPPFCQ.js";import{b as t}from"../../../chunk-3FMWZQ3C.js";import"../../../chunk-DV3LCXRH.js";import{b as d,c as l,i as f}from"../../../chunk-5VDFQRGP.js";import"../../../chunk-PPNBQWSR.js";import"../../../chunk-ATBINUDP.js";import"../../../chunk-AEADROU6.js";import"../../../chunk-BC2HK4K6.js";import"../../../chunk-7RGWTDUP.js";import{existsSync as h,readFileSync as w}from"fs";import{addPolicy as O}from"@tigrisdata/iam";var e=f("iam policies","create");async function A(o){d(e);let P=u(o),a=c(o,["name"]),i=c(o,["document","d"]),S=c(o,["description"])??"";a||t(e,"Policy name is required"),/^[a-zA-Z0-9=,.@_-]+$/.test(a)||t(e,"Invalid policy name. Only alphanumeric characters and =,.@_- are allowed.");let v=await p(e),n;i?h(i)?n=w(i,"utf-8"):n=i:process.stdin.isTTY?t(e,"Policy document is required. Provide via --document or pipe to stdin."):n=await g();let m;try{m=y(n)}catch{t(e,"Invalid JSON in policy document")}let{data:r,error:s}=await O(a,{document:m,description:S,config:v});s&&t(e,s),P==="json"&&console.log(JSON.stringify({action:"created",name:r.name,arn:r.resource})),l(e,{name:r.name}),console.log(`Resource: ${r.resource}`)}export{A as default};
@@ -1,3 +1 @@
1
- import{a,b as R}from"../../../chunk-S77OAN6Y.js";import{a as l}from"../../../chunk-JRALYIRA.js";import{a as k}from"../../../chunk-CFMM35UQ.js";import{a as o}from"../../../chunk-LQ4BU234.js";import"../../../chunk-DV3LCXRH.js";import{b as d,c as u,d as i,e as p,i as h}from"../../../chunk-2JHVFROL.js";import"../../../chunk-BETAO4PB.js";import{b as A}from"../../../chunk-2ALXOKBR.js";import{g as w}from"../../../chunk-DOUR5YEY.js";import{c as y}from"../../../chunk-CLT45ZCW.js";import"../../../chunk-2XAO2OYD.js";import v from"enquirer";import{deletePolicy as T,listPolicies as x}from"@tigrisdata/iam";var{prompt:S}=v,e=h("iam policies","delete");async function M(g){d(e);let t=l(g,["resource"]),C=l(g,["force","yes","y"]);await k()!=="oauth"&&(i(e,`Policies can only be deleted when logged in via OAuth.
2
- Run "tigris login oauth" first.`),o(`Policies can only be deleted when logged in via OAuth.
3
- Run "tigris login oauth" first.`,e));let m=A();await m.isAuthenticated()||(i(e,'Not authenticated. Run "tigris login oauth" first.'),o('Not authenticated. Run "tigris login oauth" first.',e));let E=await m.getAccessToken(),O=w(),P=y(),f={sessionToken:E,organizationId:O??void 0,iamEndpoint:P.iamEndpoint};if(!t){let{data:n,error:s}=await x({config:f});if(s&&(i(e,s.message),o(s,e)),!n.policies||n.policies.length===0){p(e);return}a("Provide the policy ARN as a positional argument");let{selected:b}=await S({type:"select",name:"selected",message:"Select a policy to delete:",choices:n.policies.map(c=>({name:c.resource,message:`${c.name} (${c.resource})`}))});t=b}if(!C&&(a("Use --yes to skip confirmation"),!await R(`Delete policy '${t}'?`))){console.log("Aborted");return}let{error:r}=await T(t,{config:f});r&&(i(e,r.message),o(r,e)),u(e,{resource:t})}export{M as default};
1
+ import{a as w}from"../../../chunk-ZHAJEGAB.js";import{a as n,b as u}from"../../../chunk-S77OAN6Y.js";import"../../../chunk-552FMFE5.js";import{a as s,b as y}from"../../../chunk-AHGPPFCQ.js";import{b as c}from"../../../chunk-3FMWZQ3C.js";import"../../../chunk-DV3LCXRH.js";import{b as f,c as p,e as g,i as d}from"../../../chunk-5VDFQRGP.js";import"../../../chunk-PPNBQWSR.js";import"../../../chunk-ATBINUDP.js";import"../../../chunk-AEADROU6.js";import"../../../chunk-BC2HK4K6.js";import"../../../chunk-7RGWTDUP.js";import E from"enquirer";import{deletePolicy as P,listPolicies as $}from"@tigrisdata/iam";var{prompt:O}=E,o=d("iam policies","delete");async function b(i){f(o);let h=y(i),e=s(i,["resource"]),A=s(i,["yes","y","force"]),a=await w(o);if(!e){let{data:t,error:m}=await $({config:a});if(m&&c(o,m),!t.policies||t.policies.length===0){g(o);return}n("Provide the policy ARN as a positional argument");let{selected:S}=await O({type:"select",name:"selected",message:"Select a policy to delete:",choices:t.policies.map(r=>({name:r.resource,message:`${r.name} (${r.resource})`}))});e=S}if(!A&&(n("Use --yes to skip confirmation"),!await u(`Delete policy '${e}'?`))){console.log("Aborted");return}let{error:l}=await P(e,{config:a});l&&c(o,l),h==="json"&&console.log(JSON.stringify({action:"deleted",arn:e})),p(o,{resource:e})}export{b as default};
@@ -1,3 +1 @@
1
- import{a as T,b as f}from"../../../chunk-Y7MJZRR4.js";import{a as E}from"../../../chunk-S77OAN6Y.js";import{a as c}from"../../../chunk-JRALYIRA.js";import{a as R}from"../../../chunk-CFMM35UQ.js";import{a as e}from"../../../chunk-LQ4BU234.js";import"../../../chunk-DV3LCXRH.js";import{b as w,c as A,d as t,e as P,i as S}from"../../../chunk-2JHVFROL.js";import"../../../chunk-BETAO4PB.js";import{b as O}from"../../../chunk-2ALXOKBR.js";import{g as N}from"../../../chunk-DOUR5YEY.js";import{c as v}from"../../../chunk-CLT45ZCW.js";import"../../../chunk-2XAO2OYD.js";import{existsSync as D,readFileSync as k}from"fs";import M from"enquirer";import{editPolicy as z,getPolicy as F,listPolicies as Y}from"@tigrisdata/iam";var{prompt:b}=M,i=S("iam policies","edit");async function $(a){w(i);let n=c(a,["resource"]),r=c(a,["document","d"]),d=c(a,["description"]);await R()!=="oauth"&&(t(i,`Policies can only be edited when logged in via OAuth.
2
- Run "tigris login oauth" first.`),e(`Policies can only be edited when logged in via OAuth.
3
- Run "tigris login oauth" first.`,i));let h=O();await h.isAuthenticated()||(t(i,'Not authenticated. Run "tigris login oauth" first.'),e('Not authenticated. Run "tigris login oauth" first.',i));let q=await h.getAccessToken(),I=N(),J=v(),m={sessionToken:q,organizationId:I??void 0,iamEndpoint:J.iamEndpoint};if(!n){process.stdin.isTTY||(t(i,"Policy ARN is required when piping document via stdin."),e("Policy ARN is required when piping document via stdin.",i));let{data:o,error:g}=await Y({config:m});if(g&&(t(i,g.message),e(g,i)),!o.policies||o.policies.length===0){P(i);return}E("Provide the policy ARN as a positional argument");let{selected:C}=await b({type:"select",name:"selected",message:"Select a policy to edit:",choices:o.policies.map(p=>({name:p.resource,message:`${p.name} (${p.resource})`}))});n=C}let s;if(r){let o;D(r)?o=k(r,"utf-8"):o=r;try{s=f(o)}catch{t(i,"Invalid JSON in policy document"),e("Invalid JSON in policy document",i)}}else if(!process.stdin.isTTY&&!d){let o=await T();try{s=f(o)}catch{t(i,"Invalid JSON in policy document"),e("Invalid JSON in policy document",i)}}!s&&!d&&(t(i,"Either --document or --description is required."),e("Either --document or --description is required.",i));let{data:y,error:u}=await F(n,{config:m});u&&(t(i,u.message),e(u,i));let{data:x,error:l}=await z(n,{document:s??y.document,description:d??y.description,config:m});l&&(t(i,l.message),e(l,i)),A(i,{resource:x.resource})}export{$ as default};
1
+ import{a as E,b as l}from"../../../chunk-Y7MJZRR4.js";import{a as D}from"../../../chunk-ZHAJEGAB.js";import{a as v}from"../../../chunk-S77OAN6Y.js";import"../../../chunk-552FMFE5.js";import{a as s,b as A}from"../../../chunk-AHGPPFCQ.js";import{b as i}from"../../../chunk-3FMWZQ3C.js";import"../../../chunk-DV3LCXRH.js";import{b as h,c as w,e as S,i as P}from"../../../chunk-5VDFQRGP.js";import"../../../chunk-PPNBQWSR.js";import"../../../chunk-ATBINUDP.js";import"../../../chunk-AEADROU6.js";import"../../../chunk-BC2HK4K6.js";import"../../../chunk-7RGWTDUP.js";import{existsSync as O,readFileSync as q}from"fs";import x from"enquirer";import{editPolicy as T,getPolicy as R,listPolicies as C}from"@tigrisdata/iam";var{prompt:I}=x,e=P("iam policies","edit");async function F(o){h(e);let J=A(o),r=s(o,["resource"]),n=s(o,["document","d"]),a=s(o,["description"]),m=await D(e);if(!r){process.stdin.isTTY||i(e,"Policy ARN is required when piping document via stdin.");let{data:t,error:y}=await C({config:m});if(y&&i(e,y),!t.policies||t.policies.length===0){S(e);return}v("Provide the policy ARN as a positional argument");let{selected:N}=await I({type:"select",name:"selected",message:"Select a policy to edit:",choices:t.policies.map(d=>({name:d.resource,message:`${d.name} (${d.resource})`}))});r=N}let c;if(n){let t;O(n)?t=q(n,"utf-8"):t=n;try{c=l(t)}catch{i(e,"Invalid JSON in policy document")}}else if(!process.stdin.isTTY&&!a){let t=await E();try{c=l(t)}catch{i(e,"Invalid JSON in policy document")}}!c&&!a&&i(e,"Either --document or --description is required.");let{data:p,error:u}=await R(r,{config:m});u&&i(e,u);let{data:f,error:g}=await T(r,{document:c??p.document,description:a??p.description,config:m});g&&i(e,g),J==="json"&&console.log(JSON.stringify({action:"updated",arn:f.resource})),w(e,{resource:f.resource})}export{F as default};
@@ -1,3 +1 @@
1
- import{f as w}from"../../../chunk-CQCBYE3X.js";import{a as r}from"../../../chunk-JRALYIRA.js";import{a as O}from"../../../chunk-CFMM35UQ.js";import{a as n}from"../../../chunk-LQ4BU234.js";import"../../../chunk-DV3LCXRH.js";import{b as p,c as g,d as i,e as h,i as y}from"../../../chunk-2JHVFROL.js";import"../../../chunk-BETAO4PB.js";import{b as S}from"../../../chunk-2ALXOKBR.js";import{g as A}from"../../../chunk-DOUR5YEY.js";import{c as v}from"../../../chunk-CLT45ZCW.js";import"../../../chunk-2XAO2OYD.js";import E from"enquirer";import{getPolicy as I,listPolicies as b}from"@tigrisdata/iam";var{prompt:P}=E,o=y("iam policies","get");async function N(s){p(o);let a=r(s,["resource"]),f=r(s,["json"])?"json":r(s,["format","f","F"],"table");await O()!=="oauth"&&(i(o,`Policies can only be retrieved when logged in via OAuth.
2
- Run "tigris login oauth" first.`),n(`Policies can only be retrieved when logged in via OAuth.
3
- Run "tigris login oauth" first.`,o));let d=S();await d.isAuthenticated()||(i(o,'Not authenticated. Run "tigris login oauth" first.'),n('Not authenticated. Run "tigris login oauth" first.',o));let j=await d.getAccessToken(),C=A(),R=v(),m={sessionToken:j,organizationId:C??void 0,iamEndpoint:R.iamEndpoint};if(!a){let{data:t,error:l}=await b({config:m});if(l&&(i(o,l.message),n(l,o)),!t.policies||t.policies.length===0){h(o);return}let{selected:D}=await P({type:"select",name:"selected",message:"Select a policy:",choices:t.policies.map(u=>({name:u.resource,message:`${u.name} (${u.resource})`}))});a=D}let{data:e,error:c}=await I(a,{config:m});if(c&&(i(o,c.message),n(c,o)),f==="json"){console.log(JSON.stringify(e,null,2)),g(o);return}let $=[{field:"Name",value:e.name},{field:"ID",value:e.id},{field:"Resource",value:e.resource},{field:"Description",value:e.description||"-"},{field:"Path",value:e.path},{field:"Version",value:e.defaultVersionId},{field:"Attachments",value:String(e.attachmentCount)},{field:"Created",value:e.createDate.toISOString()},{field:"Updated",value:e.updateDate.toISOString()}],k=w($,f,"policy","field",[{key:"field",header:"Field"},{key:"value",header:"Value"}]);if(console.log(k),e.users&&e.users.length>0){console.log("Attached Users:");for(let t of e.users)console.log(` - ${t}`);console.log()}console.log("Policy Document:"),console.log(` Version: ${e.document.version}`),console.log(" Statements:");for(let t of e.document.statements)console.log(` - Effect: ${t.effect}`),console.log(` Action: ${Array.isArray(t.action)?t.action.join(", "):t.action}`),console.log(` Resource: ${Array.isArray(t.resource)?t.resource.join(", "):t.resource}`);g(o)}export{N as default};
1
+ import{a as h}from"../../../chunk-ZHAJEGAB.js";import{f as v}from"../../../chunk-CQCBYE3X.js";import"../../../chunk-552FMFE5.js";import{a as p,b as y}from"../../../chunk-AHGPPFCQ.js";import{b as n}from"../../../chunk-3FMWZQ3C.js";import"../../../chunk-DV3LCXRH.js";import{b as m,c as s,e as g,i as d}from"../../../chunk-5VDFQRGP.js";import"../../../chunk-PPNBQWSR.js";import"../../../chunk-ATBINUDP.js";import"../../../chunk-AEADROU6.js";import"../../../chunk-BC2HK4K6.js";import"../../../chunk-7RGWTDUP.js";import $ from"enquirer";import{getPolicy as w,listPolicies as I}from"@tigrisdata/iam";var{prompt:D}=$,t=d("iam policies","get");async function C(c){m(t);let r=p(c,["resource"]),l=y(c),a=await h(t);if(!r){let{data:o,error:u}=await I({config:a});if(u&&n(t,u),!o.policies||o.policies.length===0){g(t);return}let{selected:O}=await D({type:"select",name:"selected",message:"Select a policy:",choices:o.policies.map(i=>({name:i.resource,message:`${i.name} (${i.resource})`}))});r=O}let{data:e,error:f}=await w(r,{config:a});if(f&&n(t,f),l==="json"){console.log(JSON.stringify(e,null,2)),s(t);return}let S=[{field:"Name",value:e.name},{field:"ID",value:e.id},{field:"Resource",value:e.resource},{field:"Description",value:e.description||"-"},{field:"Path",value:e.path},{field:"Version",value:e.defaultVersionId},{field:"Attachments",value:String(e.attachmentCount)},{field:"Created",value:e.createDate.toISOString()},{field:"Updated",value:e.updateDate.toISOString()}],A=v(S,l,"policy","field",[{key:"field",header:"Field"},{key:"value",header:"Value"}]);if(console.log(A),e.users&&e.users.length>0){console.log("Attached Users:");for(let o of e.users)console.log(` - ${o}`);console.log()}console.log("Policy Document:"),console.log(` Version: ${e.document.version}`),console.log(" Statements:");for(let o of e.document.statements)console.log(` - Effect: ${o.effect}`),console.log(` Action: ${Array.isArray(o.action)?o.action.join(", "):o.action}`),console.log(` Resource: ${Array.isArray(o.resource)?o.resource.join(", "):o.resource}`);s(t)}export{C as default};
@@ -1,3 +1 @@
1
- import{f as A}from"../../../chunk-CQCBYE3X.js";import{a as r}from"../../../chunk-JRALYIRA.js";import{a as k}from"../../../chunk-CFMM35UQ.js";import{a as o}from"../../../chunk-LQ4BU234.js";import"../../../chunk-DV3LCXRH.js";import{b as u,c as g,d as i,e as m,i as h}from"../../../chunk-2JHVFROL.js";import"../../../chunk-BETAO4PB.js";import{b as f}from"../../../chunk-2ALXOKBR.js";import{g as p}from"../../../chunk-DOUR5YEY.js";import{c as l}from"../../../chunk-CLT45ZCW.js";import"../../../chunk-2XAO2OYD.js";import{listPolicies as b}from"@tigrisdata/iam";var t=h("iam policies","list");async function j(s){u(t);let w=r(s,["json"])?"json":r(s,["format","f","F"],"table");await k()!=="oauth"&&(i(t,`Policies can only be listed when logged in via OAuth.
2
- Run "tigris login oauth" first.`),o(`Policies can only be listed when logged in via OAuth.
3
- Run "tigris login oauth" first.`,t));let c=f();await c.isAuthenticated()||(i(t,'Not authenticated. Run "tigris login oauth" first.'),o('Not authenticated. Run "tigris login oauth" first.',t));let y=await c.getAccessToken(),C=p(),O=l(),{data:n,error:a}=await b({config:{sessionToken:y,organizationId:C??void 0,iamEndpoint:O.iamEndpoint}});if(a&&(i(t,a.message),o(a,t)),!n.policies||n.policies.length===0){m(t);return}let d=n.policies.map(e=>({name:e.name,id:e.id,resource:e.resource,description:e.description||"-",attachments:e.attachmentCount,created:e.createDate,updated:e.updateDate})),R=A(d,w,"policies","policy",[{key:"id",header:"ID"},{key:"resource",header:"Resource"},{key:"name",header:"Name"},{key:"description",header:"Description"},{key:"attachments",header:"Attachments"},{key:"created",header:"Created"},{key:"updated",header:"Updated"}]);console.log(R),g(t,{count:d.length})}export{j as default};
1
+ import{a as u}from"../../../chunk-ZHAJEGAB.js";import{f}from"../../../chunk-CQCBYE3X.js";import"../../../chunk-552FMFE5.js";import{b as p}from"../../../chunk-AHGPPFCQ.js";import{b as m}from"../../../chunk-3FMWZQ3C.js";import"../../../chunk-DV3LCXRH.js";import{b as n,c as s,e as c,i as d}from"../../../chunk-5VDFQRGP.js";import"../../../chunk-PPNBQWSR.js";import"../../../chunk-ATBINUDP.js";import"../../../chunk-AEADROU6.js";import"../../../chunk-BC2HK4K6.js";import"../../../chunk-7RGWTDUP.js";import{listPolicies as k}from"@tigrisdata/iam";var t=d("iam policies","list");async function y(h){n(t);let g=p(h),o=await u(t),{data:i,error:r}=await k({config:{sessionToken:o.sessionToken,organizationId:o.organizationId,iamEndpoint:o.iamEndpoint}});if(r&&m(t,r),!i.policies||i.policies.length===0){c(t);return}let a=i.policies.map(e=>({name:e.name,id:e.id,resource:e.resource,description:e.description||"-",attachments:e.attachmentCount,created:e.createDate,updated:e.updateDate})),l=f(a,g,"policies","policy",[{key:"id",header:"ID"},{key:"resource",header:"Resource"},{key:"name",header:"Name"},{key:"description",header:"Description"},{key:"attachments",header:"Attachments"},{key:"created",header:"Created"},{key:"updated",header:"Updated"}]);console.log(l),s(t,{count:a.length})}export{y as default};
@@ -1,6 +1 @@
1
- import{a as R}from"../../../chunk-Y3JRLJCC.js";import{a as l}from"../../../chunk-JRALYIRA.js";import{a as b}from"../../../chunk-CFMM35UQ.js";import{a as n}from"../../../chunk-LQ4BU234.js";import"../../../chunk-DV3LCXRH.js";import{b as c,c as f,d as t,i as h}from"../../../chunk-2JHVFROL.js";import"../../../chunk-BETAO4PB.js";import{b as y}from"../../../chunk-2ALXOKBR.js";import{g as v}from"../../../chunk-DOUR5YEY.js";import{c as p}from"../../../chunk-CLT45ZCW.js";import"../../../chunk-2XAO2OYD.js";import{inviteUser as M}from"@tigrisdata/iam";var i=h("iam users","invite");async function U(m){c(i),await b()!=="oauth"&&(t(i,`Users can only be invited when logged in via OAuth.
2
- Run "tigris login oauth" first.`),n(`Users can only be invited when logged in via OAuth.
3
- Run "tigris login oauth" first.`,i));let g=v();if(R(g??void 0)){console.log(`User management is not available for Fly.io organizations.
4
- Your users are managed through Fly.io.
5
-
6
- Visit https://fly.io to manage your organization members.`);return}let o=l(m,["email"]),e=l(m,["role","r"])??"member",r=Array.isArray(o)?o:o?[o]:[];r.length===0&&(t(i,"Email address is required"),n("Email address is required",i));let s=["admin","member"];s.includes(e)||(t(i,`Invalid role "${e}". Must be one of: ${s.join(", ")}`),n(`Invalid role "${e}". Must be one of: ${s.join(", ")}`,i));let A=e,d=y();await d.isAuthenticated()||(t(i,'Not authenticated. Run "tigris login oauth" first.'),n('Not authenticated. Run "tigris login oauth" first.',i));let w=await d.getAccessToken(),u=p(),E=r.map(O=>({email:O,role:A})),{error:a}=await M(E,{config:{sessionToken:w,organizationId:g??void 0,iamEndpoint:u.iamEndpoint,mgmtEndpoint:u.mgmtEndpoint}});a&&(t(i,a.message),n(a,i)),f(i,{email:r.join(", ")})}export{U as default};
1
+ import{a as u}from"../../../chunk-ZHAJEGAB.js";import"../../../chunk-552FMFE5.js";import{a as s,b as p}from"../../../chunk-AHGPPFCQ.js";import{b as n}from"../../../chunk-3FMWZQ3C.js";import"../../../chunk-DV3LCXRH.js";import{b as l,c,i as f}from"../../../chunk-5VDFQRGP.js";import"../../../chunk-PPNBQWSR.js";import"../../../chunk-ATBINUDP.js";import{b as g}from"../../../chunk-AEADROU6.js";import"../../../chunk-BC2HK4K6.js";import"../../../chunk-7RGWTDUP.js";import{inviteUser as b}from"@tigrisdata/iam";var i=f("iam users","invite");async function j(e){l(i);let d=p(e);if(g("User management"))return;let o=s(e,["email"]),r=s(e,["role","r"])??"member",t=Array.isArray(o)?o:o?[o]:[];t.length===0&&n(i,"Email address is required");let a=["admin","member"];a.includes(r)||n(i,`Invalid role "${r}". Must be one of: ${a.join(", ")}`);let v=r,y=await u(i),R=t.map(O=>({email:O,role:v})),{error:m}=await b(R,{config:y});m&&n(i,m),d==="json"&&console.log(JSON.stringify({action:"invited",email:t.join(", ")})),c(i,{email:t.join(", ")})}export{j as default};
@@ -1,10 +1,5 @@
1
- import{a as v}from"../../../chunk-Y3JRLJCC.js";import{b as T,d as l,e as m}from"../../../chunk-CQCBYE3X.js";import{a as r}from"../../../chunk-JRALYIRA.js";import{a as E}from"../../../chunk-CFMM35UQ.js";import{a}from"../../../chunk-LQ4BU234.js";import"../../../chunk-DV3LCXRH.js";import{b as p,c as y,d as i,e as k,i as b}from"../../../chunk-2JHVFROL.js";import"../../../chunk-BETAO4PB.js";import{b as C}from"../../../chunk-2ALXOKBR.js";import{g as w}from"../../../chunk-DOUR5YEY.js";import{c as U}from"../../../chunk-CLT45ZCW.js";import"../../../chunk-2XAO2OYD.js";import{listUsers as j}from"@tigrisdata/iam";var e=b("iam users","list");async function z(g){p(e);let u=r(g,["json"])?"json":r(g,["format","f","F"],"table");await E()!=="oauth"&&(i(e,`Users can only be listed when logged in via OAuth.
2
- Run "tigris login oauth" first.`),a(`Users can only be listed when logged in via OAuth.
3
- Run "tigris login oauth" first.`,e));let c=w();if(v(c??void 0)){console.log(`User management is not available for Fly.io organizations.
4
- Your users are managed through Fly.io.
5
-
6
- Visit https://fly.io to manage your organization members.`);return}let d=C();await d.isAuthenticated()||(i(e,'Not authenticated. Run "tigris login oauth" first.'),a('Not authenticated. Run "tigris login oauth" first.',e));let A=await d.getAccessToken(),h=U(),{data:f,error:s}=await j({config:{sessionToken:A,organizationId:c??void 0,iamEndpoint:h.iamEndpoint,mgmtEndpoint:h.mgmtEndpoint}});s&&(i(e,s.message),a(s,e));let o=f.users.map(t=>({email:t.email,name:t.userName||"-",role:t.isOrgOwner?"owner":t.role,userId:t.userId})),n=f.invitations.map(t=>({id:t.id,email:t.email,role:t.role,status:t.status,validUntil:t.validUntil.toLocaleDateString()}));if(o.length===0&&n.length===0){k(e);return}let I=[{key:"email",header:"Email"},{key:"name",header:"Name"},{key:"role",header:"Role"},{key:"userId",header:"User ID"}],O=[{key:"id",header:"ID"},{key:"email",header:"Email"},{key:"role",header:"Role"},{key:"status",header:"Status"},{key:"validUntil",header:"Valid Until"}];if(u==="json")console.log(T({users:o,invitations:n}));else if(u==="xml"){let t=["<organization>"];t.push(" "+l(o,"users","user").replace(/\n/g,`
7
- `)),t.push(" "+l(n,"invitations","invitation").replace(/\n/g,`
8
- `)),t.push("</organization>"),console.log(t.join(`
1
+ import{a as p}from"../../../chunk-ZHAJEGAB.js";import{b as y,d as i,e as a}from"../../../chunk-CQCBYE3X.js";import"../../../chunk-552FMFE5.js";import{b as h}from"../../../chunk-AHGPPFCQ.js";import{b as d}from"../../../chunk-3FMWZQ3C.js";import"../../../chunk-DV3LCXRH.js";import{b as m,c as g,e as c,i as u}from"../../../chunk-5VDFQRGP.js";import"../../../chunk-PPNBQWSR.js";import"../../../chunk-ATBINUDP.js";import{b as f}from"../../../chunk-AEADROU6.js";import"../../../chunk-BC2HK4K6.js";import"../../../chunk-7RGWTDUP.js";import{listUsers as v}from"@tigrisdata/iam";var n=u("iam users","list");async function w(k){m(n);let r=h(k);if(f("User management"))return;let C=await p(n),{data:l,error:s}=await v({config:C});s&&d(n,s);let o=l.users.map(e=>({email:e.email,name:e.userName||"-",role:e.isOrgOwner?"owner":e.role,userId:e.userId})),t=l.invitations.map(e=>({id:e.id,email:e.email,role:e.role,status:e.status,validUntil:e.validUntil.toLocaleDateString()}));if(o.length===0&&t.length===0){c(n);return}let I=[{key:"email",header:"Email"},{key:"name",header:"Name"},{key:"role",header:"Role"},{key:"userId",header:"User ID"}],U=[{key:"id",header:"ID"},{key:"email",header:"Email"},{key:"role",header:"Role"},{key:"status",header:"Status"},{key:"validUntil",header:"Valid Until"}];if(r==="json")console.log(y({users:o,invitations:t}));else if(r==="xml"){let e=["<organization>"];e.push(" "+i(o,"users","user").replace(/\n/g,`
2
+ `)),e.push(" "+i(t,"invitations","invitation").replace(/\n/g,`
3
+ `)),e.push("</organization>"),console.log(e.join(`
9
4
  `))}else o.length>0&&(console.log(`
10
- Members`),console.log(m(o,I))),n.length>0&&(console.log("Pending Invitations"),console.log(m(n,O)));let R=o.length+n.length;y(e,{count:R})}export{z as default};
5
+ Members`),console.log(a(o,I))),t.length>0&&(console.log("Pending Invitations"),console.log(a(t,U)));let b=o.length+t.length;g(n,{count:b})}export{w as default};
@@ -1,6 +1 @@
1
- import{a as E}from"../../../chunk-Y3JRLJCC.js";import{a as c,b}from"../../../chunk-S77OAN6Y.js";import{a as g}from"../../../chunk-JRALYIRA.js";import{a as R}from"../../../chunk-CFMM35UQ.js";import{a as o}from"../../../chunk-LQ4BU234.js";import"../../../chunk-DV3LCXRH.js";import{b as h,c as y,d as t,e as v,i as w}from"../../../chunk-2JHVFROL.js";import"../../../chunk-BETAO4PB.js";import{b as U}from"../../../chunk-2ALXOKBR.js";import{g as O}from"../../../chunk-DOUR5YEY.js";import{c as A}from"../../../chunk-CLT45ZCW.js";import"../../../chunk-2XAO2OYD.js";import z from"enquirer";import{removeUser as S,listUsers as T}from"@tigrisdata/iam";var{prompt:I}=z,e=w("iam users","remove");async function x(l){h(e);let i=g(l,["resource"]),k=g(l,["force","yes","y"]);await R()!=="oauth"&&(t(e,`Users can only be removed when logged in via OAuth.
2
- Run "tigris login oauth" first.`),o(`Users can only be removed when logged in via OAuth.
3
- Run "tigris login oauth" first.`,e));let u=O();if(E(u??void 0)){console.log(`User management is not available for Fly.io organizations.
4
- Your users are managed through Fly.io.
5
-
6
- Visit https://fly.io to manage your organization members.`);return}let f=U();await f.isAuthenticated()||(t(e,'Not authenticated. Run "tigris login oauth" first.'),o('Not authenticated. Run "tigris login oauth" first.',e));let C=await f.getAccessToken(),d=A(),p={sessionToken:C,organizationId:u??void 0,iamEndpoint:d.iamEndpoint,mgmtEndpoint:d.mgmtEndpoint},r=Array.isArray(i)?i:i?[i]:[];if(r.length===0){let{data:a,error:m}=await T({config:p});if(m&&(t(e,m.message),o(m,e)),a.users.length===0){v(e);return}c("Provide user ID(s) as a positional argument");let{selected:F}=await I({type:"multiselect",name:"selected",message:"Select user(s) to remove (space to select, enter to confirm):",choices:a.users.map(n=>({name:n.userId,message:`${n.email} (${n.isOrgOwner?"owner":n.role})`}))});r=F}if(!k&&(c("Use --yes to skip confirmation"),!await b(`Remove ${r.length} user(s)?`))){console.log("Aborted");return}let{error:s}=await S(r,{config:p});s&&(t(e,s.message),o(s,e)),y(e)}export{x as default};
1
+ import{a as O}from"../../../chunk-ZHAJEGAB.js";import{a,b as v}from"../../../chunk-S77OAN6Y.js";import"../../../chunk-552FMFE5.js";import{a as m,b as w}from"../../../chunk-AHGPPFCQ.js";import{b as n}from"../../../chunk-3FMWZQ3C.js";import"../../../chunk-DV3LCXRH.js";import{b as l,c as u,e as p,i as d}from"../../../chunk-5VDFQRGP.js";import"../../../chunk-PPNBQWSR.js";import"../../../chunk-ATBINUDP.js";import{b as y}from"../../../chunk-AEADROU6.js";import"../../../chunk-BC2HK4K6.js";import"../../../chunk-7RGWTDUP.js";import I from"enquirer";import{listUsers as E,removeUser as F}from"@tigrisdata/iam";var{prompt:S}=I,e=d("iam users","remove");async function $(s){l(e);let h=w(s),t=m(s,["resource"]),U=m(s,["yes","y","force"]);if(y("User management"))return;let c=await O(e),r=Array.isArray(t)?t:t?[t]:[];if(r.length===0){let{data:i,error:g}=await E({config:c});if(g&&n(e,g),i.users.length===0){p(e);return}a("Provide user ID(s) as a positional argument");let{selected:A}=await S({type:"multiselect",name:"selected",message:"Select user(s) to remove (space to select, enter to confirm):",choices:i.users.map(o=>({name:o.userId,message:`${o.email} (${o.isOrgOwner?"owner":o.role})`}))});r=A}if(!U&&(a("Use --yes to skip confirmation"),!await v(`Remove ${r.length} user(s)?`))){console.log("Aborted");return}let{error:f}=await F(r,{config:c});f&&n(e,f),h==="json"&&console.log(JSON.stringify({action:"removed",users:r})),u(e)}export{$ as default};
@@ -1,6 +1 @@
1
- import{a as E}from"../../../chunk-Y3JRLJCC.js";import{a as g,b}from"../../../chunk-S77OAN6Y.js";import{a as m}from"../../../chunk-JRALYIRA.js";import{a as O}from"../../../chunk-CFMM35UQ.js";import{a as e}from"../../../chunk-LQ4BU234.js";import"../../../chunk-DV3LCXRH.js";import{b as h,c as v,d as i,e as y,i as k}from"../../../chunk-2JHVFROL.js";import"../../../chunk-BETAO4PB.js";import{b as I}from"../../../chunk-2ALXOKBR.js";import{g as A}from"../../../chunk-DOUR5YEY.js";import{c as w}from"../../../chunk-CLT45ZCW.js";import"../../../chunk-2XAO2OYD.js";import F from"enquirer";import{revokeInvitation as T,listUsers as U}from"@tigrisdata/iam";var{prompt:S}=F,t=k("iam users","revoke-invitation");async function $(l){h(t);let o=m(l,["resource"]),R=m(l,["force","yes","y"]);await O()!=="oauth"&&(i(t,`Invitations can only be revoked when logged in via OAuth.
2
- Run "tigris login oauth" first.`),e(`Invitations can only be revoked when logged in via OAuth.
3
- Run "tigris login oauth" first.`,t));let f=A();if(E(f??void 0)){console.log(`User management is not available for Fly.io organizations.
4
- Your users are managed through Fly.io.
5
-
6
- Visit https://fly.io to manage your organization members.`);return}let u=I();await u.isAuthenticated()||(i(t,'Not authenticated. Run "tigris login oauth" first.'),e('Not authenticated. Run "tigris login oauth" first.',t));let C=await u.getAccessToken(),d=w(),p={sessionToken:C,organizationId:f??void 0,iamEndpoint:d.iamEndpoint,mgmtEndpoint:d.mgmtEndpoint},n=Array.isArray(o)?o:o?[o]:[];if(n.length===0){let{data:a,error:c}=await U({config:p});if(c&&(i(t,c.message),e(c,t)),a.invitations.length===0){y(t);return}g("Provide invitation ID(s) as a positional argument");let{selected:z}=await S({type:"multiselect",name:"selected",message:"Select invitation(s) to revoke (space to select, enter to confirm):",choices:a.invitations.map(r=>({name:r.id,message:`${r.email} (${r.role} - ${r.status})`}))});n=z}if(!R&&(g("Use --yes to skip confirmation"),!await b(`Revoke ${n.length} invitation(s)?`))){console.log("Aborted");return}let{error:s}=await T(n,{config:p});s&&(i(t,s.message),e(s,t)),v(t)}export{$ as default};
1
+ import{a as h}from"../../../chunk-ZHAJEGAB.js";import{a,b as y}from"../../../chunk-S77OAN6Y.js";import"../../../chunk-552FMFE5.js";import{a as c,b as k}from"../../../chunk-AHGPPFCQ.js";import{b as s}from"../../../chunk-3FMWZQ3C.js";import"../../../chunk-DV3LCXRH.js";import{b as g,c as p,e as u,i as v}from"../../../chunk-5VDFQRGP.js";import"../../../chunk-PPNBQWSR.js";import"../../../chunk-ATBINUDP.js";import{b as d}from"../../../chunk-AEADROU6.js";import"../../../chunk-BC2HK4K6.js";import"../../../chunk-7RGWTDUP.js";import O from"enquirer";import{listUsers as $,revokeInvitation as E}from"@tigrisdata/iam";var{prompt:S}=O,t=v("iam users","revoke-invitation");async function U(r){g(t);let w=k(r),o=c(r,["resource"]),I=c(r,["yes","y","force"]);if(d("User management"))return;let m=await h(t),e=Array.isArray(o)?o:o?[o]:[];if(e.length===0){let{data:n,error:l}=await $({config:m});if(l&&s(t,l),n.invitations.length===0){u(t);return}a("Provide invitation ID(s) as a positional argument");let{selected:A}=await S({type:"multiselect",name:"selected",message:"Select invitation(s) to revoke (space to select, enter to confirm):",choices:n.invitations.map(i=>({name:i.id,message:`${i.email} (${i.role} - ${i.status})`}))});e=A}if(!I&&(a("Use --yes to skip confirmation"),!await y(`Revoke ${e.length} invitation(s)?`))){console.log("Aborted");return}let{error:f}=await E(e,{config:m});f&&s(t,f),w==="json"&&console.log(JSON.stringify({action:"revoked",invitations:e})),p(t)}export{U as default};
@@ -1,6 +1 @@
1
- import{a as U}from"../../../chunk-Y3JRLJCC.js";import{a as E}from"../../../chunk-S77OAN6Y.js";import{a as c}from"../../../chunk-JRALYIRA.js";import{a as I}from"../../../chunk-CFMM35UQ.js";import{a as i}from"../../../chunk-LQ4BU234.js";import"../../../chunk-DV3LCXRH.js";import{b,c as R,d as r,e as v,i as w}from"../../../chunk-2JHVFROL.js";import"../../../chunk-BETAO4PB.js";import{b as O}from"../../../chunk-2ALXOKBR.js";import{g as $}from"../../../chunk-DOUR5YEY.js";import{c as A}from"../../../chunk-CLT45ZCW.js";import"../../../chunk-2XAO2OYD.js";import q from"enquirer";import{updateUserRole as F,listUsers as N}from"@tigrisdata/iam";var{prompt:z}=q,e=w("iam users","update-role");async function S(d){b(e),await I()!=="oauth"&&(r(e,`User roles can only be updated when logged in via OAuth.
2
- Run "tigris login oauth" first.`),i(`User roles can only be updated when logged in via OAuth.
3
- Run "tigris login oauth" first.`,e));let f=$();if(U(f??void 0)){console.log(`User management is not available for Fly.io organizations.
4
- Your users are managed through Fly.io.
5
-
6
- Visit https://fly.io to manage your organization members.`);return}let g=["admin","member"],a=c(d,["role","r"]);a||(r(e,"Role is required. Use --role admin or --role member"),i("Role is required. Use --role admin or --role member",e));let t=Array.isArray(a)?a:[a];for(let o of t)g.includes(o)||(r(e,`Invalid role "${o}". Must be one of: ${g.join(", ")}`),i(`Invalid role "${o}". Must be one of: ${g.join(", ")}`,e));let l=c(d,["resource"]),n=Array.isArray(l)?l:l?[l]:[],p=O();await p.isAuthenticated()||(r(e,'Not authenticated. Run "tigris login oauth" first.'),i('Not authenticated. Run "tigris login oauth" first.',e));let C=await p.getAccessToken(),h=A(),y={sessionToken:C,organizationId:f??void 0,iamEndpoint:h.iamEndpoint,mgmtEndpoint:h.mgmtEndpoint};if(n.length===0){let{data:o,error:s}=await N({config:y});if(s&&(r(e,s.message),i(s,e)),o.users.length===0){v(e);return}E("Provide user ID(s) as a positional argument");let{selected:k}=await z({type:"multiselect",name:"selected",message:"Select user(s) to update (space to select, enter to confirm):",choices:o.users.map(m=>({name:m.userId,message:`${m.email} (${m.isOrgOwner?"owner":m.role})`}))});n=k}t.length>1&&t.length!==n.length&&(r(e,`Number of roles (${t.length}) must match number of users (${n.length}), or provide a single role for all users`),i(`Number of roles (${t.length}) must match number of users (${n.length}), or provide a single role for all users`,e));let M=n.map((o,s)=>({userId:o,role:t.length===1?t[0]:t[s]})),{error:u}=await F(M,{config:y});u&&(r(e,u.message),i(u,e)),R(e)}export{S as default};
1
+ import{a as v}from"../../../chunk-ZHAJEGAB.js";import{a as w}from"../../../chunk-S77OAN6Y.js";import"../../../chunk-552FMFE5.js";import{a as c,b}from"../../../chunk-AHGPPFCQ.js";import{b as o}from"../../../chunk-3FMWZQ3C.js";import"../../../chunk-DV3LCXRH.js";import{b as d,c as h,e as y,i as R}from"../../../chunk-5VDFQRGP.js";import"../../../chunk-PPNBQWSR.js";import"../../../chunk-ATBINUDP.js";import{b as O}from"../../../chunk-AEADROU6.js";import"../../../chunk-BC2HK4K6.js";import"../../../chunk-7RGWTDUP.js";import I from"enquirer";import{listUsers as S,updateUserRole as q}from"@tigrisdata/iam";var{prompt:U}=I,e=R("iam users","update-role");async function E(m){d(e);let A=b(m);if(O("User management"))return;let f=["admin","member"],i=c(m,["role","r"]);i||o(e,"Role is required. Use --role admin or --role member");let r=Array.isArray(i)?i:[i];for(let t of r)f.includes(t)||o(e,`Invalid role "${t}". Must be one of: ${f.join(", ")}`);let n=c(m,["resource"]),s=Array.isArray(n)?n:n?[n]:[],u=await v(e);if(s.length===0){let{data:t,error:a}=await S({config:u});if(a&&o(e,a),t.users.length===0){y(e);return}w("Provide user ID(s) as a positional argument");let{selected:$}=await U({type:"multiselect",name:"selected",message:"Select user(s) to update (space to select, enter to confirm):",choices:t.users.map(l=>({name:l.userId,message:`${l.email} (${l.isOrgOwner?"owner":l.role})`}))});s=$}r.length>1&&r.length!==s.length&&o(e,`Number of roles (${r.length}) must match number of users (${s.length}), or provide a single role for all users`);let g=s.map((t,a)=>({userId:t,role:r.length===1?r[0]:r[a]})),{error:p}=await q(g,{config:u});p&&o(e,p),A==="json"&&console.log(JSON.stringify({action:"updated",users:g})),h(e)}export{E as default};
@@ -1 +1 @@
1
- import{a}from"../../chunk-IFEXFA2T.js";import"../../chunk-S77OAN6Y.js";import"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-DOUR5YEY.js";import"../../chunk-2XAO2OYD.js";export{a as default};
1
+ import{a}from"../../chunk-4RNEQIK4.js";import"../../chunk-S77OAN6Y.js";import"../../chunk-552FMFE5.js";import"../../chunk-AHGPPFCQ.js";import"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";export{a as default};
@@ -1 +1 @@
1
- import{a,b}from"../../chunk-XBGYA42R.js";import"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";export{b as default,a as oauth};
1
+ import{a,b}from"../../chunk-JVQ7GLJH.js";import"../../chunk-AHGPPFCQ.js";import"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";export{b as default,a as oauth};
@@ -1 +1 @@
1
- import{a as r}from"../../chunk-XBGYA42R.js";import{a as c}from"../../chunk-IFEXFA2T.js";import{a as s}from"../../chunk-S77OAN6Y.js";import"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import i from"enquirer";var{prompt:n}=i;async function u(e){let a=e["access-key"]||e.accessKey||e.key||e.Key||e.accesskey,t=e["access-secret"]||e.accessSecret||e.secret||e.Secret||e.accesssecret;if(a||t){await c(e);return}s('Use "tigris login oauth" or "tigris login credentials --access-key ... --access-secret ..."');let{method:m}=await n({type:"select",name:"method",message:"Choose login method:",choices:[{name:"user",message:"As a user (OAuth2 flow)"},{name:"machine",message:"As a machine (Access Key & Secret)"}]});m==="user"?await r():await c(e)}export{u as default};
1
+ import{a as r}from"../../chunk-JVQ7GLJH.js";import{a as c}from"../../chunk-4RNEQIK4.js";import{a as s}from"../../chunk-S77OAN6Y.js";import"../../chunk-552FMFE5.js";import"../../chunk-AHGPPFCQ.js";import"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import i from"enquirer";var{prompt:n}=i;async function u(e){let a=e["access-key"]||e.accessKey||e.key||e.Key||e.accesskey,t=e["access-secret"]||e.accessSecret||e.secret||e.Secret||e.accesssecret;if(a||t){await c(e);return}s('Use "tigris login oauth" or "tigris login credentials --access-key ... --access-secret ..."');let{method:m}=await n({type:"select",name:"method",message:"Choose login method:",choices:[{name:"user",message:"As a user (OAuth2 flow)"},{name:"machine",message:"As a machine (Access Key & Secret)"}]});m==="user"?await r():await c(e)}export{u as default};
@@ -1 +1 @@
1
- import{a as c}from"../chunk-LQ4BU234.js";import"../chunk-DV3LCXRH.js";import{b as i,c as e,d as o,i as a}from"../chunk-2JHVFROL.js";import"../chunk-BETAO4PB.js";import{t as n}from"../chunk-DOUR5YEY.js";import"../chunk-2XAO2OYD.js";var r=a("logout");async function s(){i(r);try{await n(),e(r)}catch(t){t instanceof Error?o(r,t.message):o(r),c(t,r)}}export{s as default};
1
+ import{b as c}from"../chunk-AHGPPFCQ.js";import{b as n}from"../chunk-3FMWZQ3C.js";import"../chunk-DV3LCXRH.js";import{b as t,c as r,i}from"../chunk-5VDFQRGP.js";import"../chunk-PPNBQWSR.js";import{t as a}from"../chunk-7RGWTDUP.js";var o=i("logout");async function f(m={}){t(o);let e=c(m);try{await a(),e==="json"&&console.log(JSON.stringify({action:"logged_out"})),r(o)}catch(s){n(o,s)}}export{f as default};
package/dist/lib/ls.js CHANGED
@@ -1 +1 @@
1
- import{a as b,f as m}from"../chunk-CQCBYE3X.js";import{f as y}from"../chunk-LCWHZUZZ.js";import{a as s}from"../chunk-JRALYIRA.js";import{b as d}from"../chunk-CFMM35UQ.js";import{a as i}from"../chunk-LQ4BU234.js";import"../chunk-DV3LCXRH.js";import"../chunk-2JHVFROL.js";import"../chunk-BETAO4PB.js";import"../chunk-2ALXOKBR.js";import"../chunk-DOUR5YEY.js";import"../chunk-CLT45ZCW.js";import"../chunk-2XAO2OYD.js";import{list as S,listBuckets as O}from"@tigrisdata/storage";async function W(a){let p=s(a,["path"]),h=s(a,["snapshot-version","snapshotVersion","snapshot"]),l=s(a,["json"])?"json":s(a,["format","f","F"],"table");if(!p){let e=await d(),{data:t,error:o}=await O({config:e});o&&i(o);let n=(t.buckets||[]).map(g=>({name:g.name,created:g.creationDate})),f=m(n,l,"buckets","bucket",[{key:"name",header:"Name"},{key:"created",header:"Created"}]);console.log(f);return}let{bucket:u,path:r}=y(p);u||i("Invalid path");let j=await d(),c=r?r.endsWith("/")?r:`${r}/`:void 0,{data:w,error:k}=await S({prefix:c,...h?{snapshotVersion:h}:{},config:{...j,bucket:u}});k&&i(k);let x=(w.items||[]).map(e=>{let t=c?e.name.slice(c.length):e.name,o=t.indexOf("/"),n=o===-1?t:t.slice(0,o+1),f=n.endsWith("/");return{key:n,size:f?"-":b(e.size),modified:e.lastModified}}).filter((e,t,o)=>e.key!==""&&o.findIndex(n=>n.key===e.key)===t),z=m(x,l,"objects","object",[{key:"key",header:"Key"},{key:"size",header:"Size"},{key:"modified",header:"Modified"}]);console.log(z)}export{W as default};
1
+ import{a as b,f as m}from"../chunk-CQCBYE3X.js";import{f as w}from"../chunk-JQUG732D.js";import{f}from"../chunk-552FMFE5.js";import{a as d,b as y}from"../chunk-AHGPPFCQ.js";import{a}from"../chunk-3FMWZQ3C.js";import"../chunk-DV3LCXRH.js";import"../chunk-5VDFQRGP.js";import"../chunk-PPNBQWSR.js";import"../chunk-ATBINUDP.js";import"../chunk-BC2HK4K6.js";import"../chunk-7RGWTDUP.js";import{list as O,listBuckets as W}from"@tigrisdata/storage";async function v(i){let p=d(i,["path"]),h=d(i,["snapshot-version","snapshotVersion","snapshot"]),l=y(i);if(!p){let e=await f(),{data:t,error:o}=await W({config:e});o&&a(o);let n=(t.buckets||[]).map(g=>({name:g.name,created:g.creationDate})),c=m(n,l,"buckets","bucket",[{key:"name",header:"Name"},{key:"created",header:"Created"}]);console.log(c);return}let{bucket:u,path:s}=w(p);u||a("Invalid path");let x=await f(),r=s?s.endsWith("/")?s:`${s}/`:void 0,{data:z,error:k}=await O({prefix:r,...h?{snapshotVersion:h}:{},config:{...x,bucket:u}});k&&a(k);let S=(z.items||[]).map(e=>{let t=r?e.name.slice(r.length):e.name,o=t.indexOf("/"),n=o===-1?t:t.slice(0,o+1),c=n.endsWith("/");return{key:n,size:c?"-":b(e.size),modified:e.lastModified}}).filter((e,t,o)=>e.key!==""&&o.findIndex(n=>n.key===e.key)===t),j=m(S,l,"objects","object",[{key:"key",header:"Key"},{key:"size",header:"Size"},{key:"modified",header:"Modified"}]);console.log(j)}export{v as default};
package/dist/lib/mk.js CHANGED
@@ -1 +1 @@
1
- import{b}from"../chunk-TD2HGNDY.js";import"../chunk-S77OAN6Y.js";import{f as m}from"../chunk-LCWHZUZZ.js";import{a as e}from"../chunk-JRALYIRA.js";import{b as h}from"../chunk-CFMM35UQ.js";import{a as o}from"../chunk-LQ4BU234.js";import"../chunk-DV3LCXRH.js";import"../chunk-2JHVFROL.js";import"../chunk-BETAO4PB.js";import"../chunk-2ALXOKBR.js";import"../chunk-DOUR5YEY.js";import"../chunk-CLT45ZCW.js";import"../chunk-2XAO2OYD.js";import{createBucket as y,put as j}from"@tigrisdata/storage";async function C(t){let f=e(t,["path"]);f||o("path argument is required");let{bucket:s,path:n}=m(f);s||o("Invalid path");let u=await h(),d=e(t,["json"])?"json":e(t,["format","f","F"],"table");if(n){let r=n.endsWith("/")?n:`${n}/`,{error:a}=await j(r,"",{config:{...u,bucket:s}});a&&o(a),console.log(d==="json"?JSON.stringify({action:"created",type:"folder",bucket:s,path:r}):`Folder '${s}/${r}' created`),process.exit(0)}else{let a=e(t,["public"])?"public":e(t,["access","a","A"]),S=e(t,["enableSnapshots","enable-snapshots","s","S"]),k=e(t,["defaultTier","default-tier","t","T"]),c=e(t,["locations","l","L"]),i=e(t,["fork-of","forkOf","fork"]),l=e(t,["source-snapshot","sourceSnapshot","source-snap"]),g=e(t,["region","r","R"]),w=e(t,["consistency","c","C"]);g!==void 0&&(console.warn("Warning: --region is deprecated, use --locations instead. See https://www.tigrisdata.com/docs/buckets/locations/"),c===void 0&&(c=g)),w!==void 0&&console.warn("Warning: --consistency is deprecated, use --locations instead. See https://www.tigrisdata.com/docs/buckets/locations/"),l&&!i&&o("--source-snapshot requires --fork-of");let{error:p}=await y(s,{defaultTier:k??"STANDARD",enableSnapshot:S===!0,access:a??"private",locations:b(c??"global"),...i?{sourceBucketName:i}:{},...l?{sourceBucketSnapshot:l}:{},config:u});p&&o(p),console.log(d==="json"?JSON.stringify({action:"created",type:"bucket",name:s}):`Bucket '${s}' created`),process.exit(0)}}export{C as default};
1
+ import{b as S}from"../chunk-TD2HGNDY.js";import"../chunk-S77OAN6Y.js";import{f as b}from"../chunk-JQUG732D.js";import{f as m}from"../chunk-552FMFE5.js";import{a as t,b as h}from"../chunk-AHGPPFCQ.js";import{a as o}from"../chunk-3FMWZQ3C.js";import"../chunk-DV3LCXRH.js";import"../chunk-5VDFQRGP.js";import"../chunk-PPNBQWSR.js";import"../chunk-ATBINUDP.js";import"../chunk-BC2HK4K6.js";import"../chunk-7RGWTDUP.js";import{createBucket as C,put as O}from"@tigrisdata/storage";async function T(e){let f=t(e,["path"]);f||o("path argument is required");let{bucket:s,path:n}=b(f);s||o("Invalid path");let u=await m(),d=h(e);if(n){let r=n.endsWith("/")?n:`${n}/`,{error:a}=await O(r,"",{config:{...u,bucket:s}});a&&o(a),console.log(d==="json"?JSON.stringify({action:"created",type:"folder",bucket:s,path:r}):`Folder '${s}/${r}' created`),process.exit(0)}else{let a=t(e,["public"])?"public":t(e,["access","a","A"]),k=t(e,["enableSnapshots","enable-snapshots","s","S"]),w=t(e,["defaultTier","default-tier","t","T"]),c=t(e,["locations","l","L"]),i=t(e,["fork-of","forkOf","fork"]),l=t(e,["source-snapshot","sourceSnapshot","source-snap"]),g=t(e,["region","r","R"]),y=t(e,["consistency","c","C"]);g!==void 0&&(console.warn("Warning: --region is deprecated, use --locations instead. See https://www.tigrisdata.com/docs/buckets/locations/"),c===void 0&&(c=g)),y!==void 0&&console.warn("Warning: --consistency is deprecated, use --locations instead. See https://www.tigrisdata.com/docs/buckets/locations/"),l&&!i&&o("--source-snapshot requires --fork-of");let{error:p}=await C(s,{defaultTier:w??"STANDARD",enableSnapshot:k===!0,access:a??"private",locations:S(c??"global"),...i?{sourceBucketName:i}:{},...l?{sourceBucketSnapshot:l}:{},config:u});p&&o(p),console.log(d==="json"?JSON.stringify({action:"created",type:"bucket",name:s}):`Bucket '${s}' created`),process.exit(0)}}export{T as default};
package/dist/lib/mv.js CHANGED
@@ -1 +1 @@
1
- import{a as J}from"../chunk-EKW6XTGL.js";import{a as y}from"../chunk-CQCBYE3X.js";import{a as W,b as x}from"../chunk-S77OAN6Y.js";import{a as E,b as R,d as A,g as U,h as D,i as z}from"../chunk-LCWHZUZZ.js";import{a as h}from"../chunk-JRALYIRA.js";import{b as T}from"../chunk-CFMM35UQ.js";import{a as n}from"../chunk-LQ4BU234.js";import"../chunk-DV3LCXRH.js";import"../chunk-2JHVFROL.js";import"../chunk-BETAO4PB.js";import"../chunk-2ALXOKBR.js";import"../chunk-DOUR5YEY.js";import"../chunk-CLT45ZCW.js";import"../chunk-2XAO2OYD.js";import{get as L,put as q,remove as I,list as Q,head as V}from"@tigrisdata/storage";var m=!1;async function X(s){let l=h(s,["src"]),f=h(s,["dest"]),g=h(s,["force","f","F","yes","y"]),b=!!h(s,["recursive","r"]);m=(h(s,["json"])?"json":h(s,["format"],"table"))==="json",(!l||!f)&&n("both src and dest arguments are required"),(!E(l)||!E(f))&&n("Both src and dest must be remote Tigris paths (t3:// or tigris://)");let e=R(l),o=R(f);e.bucket||n("Invalid source path"),o.bucket||n("Invalid destination path");let k=l.endsWith("/");!e.path&&!k&&n("Cannot move a bucket. Provide a path within the bucket.");let i=await T({withCredentialProvider:!0}),u=e.path.includes("*"),a=e.path.endsWith("/")||!e.path&&k;if(!u&&!a&&e.path&&(a=await A(e.bucket,e.path,i)),a&&!u&&!b&&n("Source is a remote folder (not moved). Use -r to move recursively."),u||a){let t=u?D(e.path):e.path?e.path.endsWith("/")?e.path:`${e.path}/`:"",c=!u&&e.path&&!e.path.endsWith("/")?e.path.split("/").filter(Boolean).pop()??"":"",d=[o.path?.replace(/\/$/,"")||"",c].filter(Boolean).join("/"),B=d?`${d}/`:"";e.bucket===o.bucket&&t===B&&n("Source and destination are the same");let{items:_,error:O}=await z(e.bucket,t||void 0,i);O&&n(O);let v=_.filter(r=>r.name!==t);if(u){let r=e.path.split("/").pop(),p=U(r);v=v.filter(w=>{let P=t?w.name.slice(t.length):w.name;return!b&&P.includes("/")?!1:p.test(P.split("/").pop())})}let{data:G}=await Q({prefix:t,limit:1,config:{...i,bucket:e.bucket}}),S=t?G?.items?.some(r=>r.name===t):!1;if(v.length===0&&!S){console.log(m?JSON.stringify({action:"moved",count:0}):"No objects to move");return}let H=v.length+(S?1:0);if(!g&&(W("Use --yes to skip confirmation"),!await x(`Are you sure you want to move ${H} object(s)?`))){m||console.log("Aborted");return}let $=0;for(let r of v){let p=t?r.name.slice(t.length):r.name,w=d?`${d}/${p}`:p,P=await C(i,e.bucket,r.name,o.bucket,w);P.error?console.error(`Failed to move ${r.name}: ${P.error}`):(m||console.log(`Moved t3://${e.bucket}/${r.name} -> t3://${o.bucket}/${w}`),$++)}let j=!1;if(S)if(d){let r=`${d}/`,p=await C(i,e.bucket,t,o.bucket,r);p.error?console.error(`Failed to move folder marker: ${p.error}`):j=!0}else{let{error:r}=await I(t,{config:{...i,bucket:e.bucket}});r?console.error(`Failed to remove source folder marker: ${r.message}`):j=!0}$===0&&j&&($=1),console.log(m?JSON.stringify({action:"moved",count:$}):`Moved ${$} object(s)`)}else{let t=e.path.split("/").pop(),c;if(o.path?o.path.endsWith("/")?c=`${o.path}${t}`:await A(o.bucket,o.path,i)?c=`${o.path}/${t}`:c=o.path:c=t,e.bucket===o.bucket&&e.path===c&&n("Source and destination are the same"),!g&&(W("Use --yes to skip confirmation"),!await x(`Are you sure you want to move 't3://${e.bucket}/${e.path}'?`))){m||console.log("Aborted");return}let M=await C(i,e.bucket,e.path,o.bucket,c,!m);M.error&&n(M.error),console.log(m?JSON.stringify({action:"moved",count:1,src:`t3://${e.bucket}/${e.path}`,dest:`t3://${o.bucket}/${c}`}):`Moved t3://${e.bucket}/${e.path} -> t3://${o.bucket}/${c}`)}process.exit(0)}async function C(s,l,f,g,b,F=!1){if(f.endsWith("/")){let{error:a}=await q(b,"",{config:{...s,bucket:g}});if(a)return{error:a.message};let{error:t}=await I(f,{config:{...s,bucket:l}});return t?{error:`Copied but failed to delete source: ${t.message}`}:{}}let{data:N}=await V(f,{config:{...s,bucket:l}}),e=N?.size,{data:o,error:k}=await L(f,"stream",{config:{...s,bucket:l}});if(k)return{error:k.message};let{error:i}=await q(b,o,{...J(e),onUploadProgress:F?({loaded:a})=>{if(e!==void 0&&e>0){let t=Math.round(a/e*100);process.stdout.write(`\rMoving: ${y(a)} / ${y(e)} (${t}%)`)}else process.stdout.write(`\rMoving: ${y(a)}`)}:void 0,config:{...s,bucket:g}});if(F&&process.stdout.write("\r"+" ".repeat(60)+"\r"),i)return{error:i.message};let{error:u}=await I(f,{config:{...s,bucket:l}});return u?{error:`Copied but failed to delete source: ${u.message}`}:{}}export{X as default};
1
+ import{a as J}from"../chunk-EKW6XTGL.js";import{a as y}from"../chunk-CQCBYE3X.js";import{a as x,b as E}from"../chunk-S77OAN6Y.js";import{a as j,b as R,d as A,g as U,h as D,j as z}from"../chunk-JQUG732D.js";import{f as T}from"../chunk-552FMFE5.js";import{a as w,b as O}from"../chunk-AHGPPFCQ.js";import{a as n}from"../chunk-3FMWZQ3C.js";import"../chunk-DV3LCXRH.js";import"../chunk-5VDFQRGP.js";import"../chunk-PPNBQWSR.js";import"../chunk-ATBINUDP.js";import"../chunk-BC2HK4K6.js";import"../chunk-7RGWTDUP.js";import{get as L,head as Q,list as V,put as q,remove as I}from"@tigrisdata/storage";var d=!1;async function X(s){let c=w(s,["src"]),l=w(s,["dest"]),h=w(s,["yes","y","force","f"]),g=!!w(s,["recursive","r"]);d=O(s)==="json",(!c||!l)&&n("both src and dest arguments are required"),(!j(c)||!j(l))&&n("Both src and dest must be remote Tigris paths (t3:// or tigris://)");let e=R(c),t=R(l);e.bucket||n("Invalid source path"),t.bucket||n("Invalid destination path");let P=c.endsWith("/");!e.path&&!P&&n("Cannot move a bucket. Provide a path within the bucket.");let a=await T({withCredentialProvider:!0}),f=e.path.includes("*"),m=e.path.endsWith("/")||!e.path&&P;if(!f&&!m&&e.path&&(m=await A(e.bucket,e.path,a)),m&&!f&&!g&&n("Source is a remote folder (not moved). Use -r to move recursively."),f||m){let r=f?D(e.path):e.path?e.path.endsWith("/")?e.path:`${e.path}/`:"",i=!f&&e.path&&!e.path.endsWith("/")?e.path.split("/").filter(Boolean).pop()??"":"",u=[t.path?.replace(/\/$/,"")||"",i].filter(Boolean).join("/"),B=u?`${u}/`:"";e.bucket===t.bucket&&r===B&&n("Source and destination are the same");let{items:_,error:N}=await z(e.bucket,r||void 0,a);N&&n(N);let b=_.filter(o=>o.name!==r);if(f){let o=e.path.split("/").pop(),p=U(o);b=b.filter(v=>{let $=r?v.name.slice(r.length):v.name;return!g&&$.includes("/")?!1:p.test($.split("/").pop())})}let{data:G}=await V({prefix:r,limit:1,config:{...a,bucket:e.bucket}}),F=r?G?.items?.some(o=>o.name===r):!1;if(b.length===0&&!F){console.log(d?JSON.stringify({action:"moved",count:0}):"No objects to move");return}let H=b.length+(F?1:0);if(!h&&(x("Use --yes to skip confirmation"),!await E(`Are you sure you want to move ${H} object(s)?`))){d||console.log("Aborted");return}let k=0;for(let o of b){let p=r?o.name.slice(r.length):o.name,v=u?`${u}/${p}`:p,$=await C(a,e.bucket,o.name,t.bucket,v);$.error?console.error(`Failed to move ${o.name}: ${$.error}`):(d||console.log(`Moved t3://${e.bucket}/${o.name} -> t3://${t.bucket}/${v}`),k++)}let W=!1;if(F)if(u){let o=`${u}/`,p=await C(a,e.bucket,r,t.bucket,o);p.error?console.error(`Failed to move folder marker: ${p.error}`):W=!0}else{let{error:o}=await I(r,{config:{...a,bucket:e.bucket}});o?console.error(`Failed to remove source folder marker: ${o.message}`):W=!0}k===0&&W&&(k=1),console.log(d?JSON.stringify({action:"moved",count:k}):`Moved ${k} object(s)`)}else{let r=e.path.split("/").pop(),i;if(t.path?t.path.endsWith("/")?i=`${t.path}${r}`:await A(t.bucket,t.path,a)?i=`${t.path}/${r}`:i=t.path:i=r,e.bucket===t.bucket&&e.path===i&&n("Source and destination are the same"),!h&&(x("Use --yes to skip confirmation"),!await E(`Are you sure you want to move 't3://${e.bucket}/${e.path}'?`))){d||console.log("Aborted");return}let S=await C(a,e.bucket,e.path,t.bucket,i,!d);S.error&&n(S.error),console.log(d?JSON.stringify({action:"moved",count:1,src:`t3://${e.bucket}/${e.path}`,dest:`t3://${t.bucket}/${i}`}):`Moved t3://${e.bucket}/${e.path} -> t3://${t.bucket}/${i}`)}process.exit(0)}async function C(s,c,l,h,g,M=!1){if(l.endsWith("/")){let{error:r}=await q(g,"",{config:{...s,bucket:h}});if(r)return{error:r.message};let{error:i}=await I(l,{config:{...s,bucket:c}});return i?{error:`Copied but failed to delete source: ${i.message}`}:{}}let{data:e}=await Q(l,{config:{...s,bucket:c}}),t=e?.size,{data:P,error:a}=await L(l,"stream",{config:{...s,bucket:c}});if(a)return{error:a.message};let{error:f}=await q(g,P,{...J(t),onUploadProgress:M?({loaded:r})=>{if(t!==void 0&&t>0){let i=Math.round(r/t*100);process.stdout.write(`\rMoving: ${y(r)} / ${y(t)} (${i}%)`)}else process.stdout.write(`\rMoving: ${y(r)}`)}:void 0,config:{...s,bucket:h}});if(M&&process.stdout.write("\r"+" ".repeat(60)+"\r"),f)return{error:f.message};let{error:m}=await I(l,{config:{...s,bucket:c}});return m?{error:`Copied but failed to delete source: ${m.message}`}:{}}export{X as default};
@@ -1 +1 @@
1
- import{a as p,b}from"../../chunk-S77OAN6Y.js";import{a as n}from"../../chunk-JRALYIRA.js";import{b as j}from"../../chunk-CFMM35UQ.js";import{a,b as k,c as y}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as u,c as l,d as f,i as d}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{remove as O}from"@tigrisdata/storage";var e=d("objects","delete");async function q(s){u(e);let x=n(s,["json"])?"json":n(s,["format","f","F"],"table"),r=n(s,["bucket"]),i=n(s,["key"]),A=n(s,["force","yes","y"]);r||(f(e,"Bucket name is required"),a("Bucket name is required",e)),i||(f(e,"Object key is required"),a("Object key is required",e));let h=await j(),g=Array.isArray(i)?i:[i];if(!A&&(p("Use --yes to skip confirmation"),!await b(`Delete ${g.length} object(s) from '${r}'?`))){console.log("Aborted");return}let m=[],c=[];for(let t of g){let{error:o}=await O(t,{config:{...h,bucket:r}});o?(f(e,o.message,{key:t}),c.push({key:t,error:o.message})):(m.push(t),l(e,{key:t}))}if(x==="json"){let t=k(e,{bucket:r}),o={action:"deleted",bucket:r,keys:m,errors:c};t.length>0&&(o.nextActions=t),console.log(JSON.stringify(o))}c.length>0&&a(c[0].error,e),y(e,{bucket:r})}export{q as default};
1
+ import{a as h,b as j}from"../../chunk-S77OAN6Y.js";import{i as w}from"../../chunk-JQUG732D.js";import{f as O}from"../../chunk-552FMFE5.js";import{a as c,b as x}from"../../chunk-AHGPPFCQ.js";import{a as p,b as f,c as b,d as A}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as l,c as d,d as k,i as y}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{remove as E}from"@tigrisdata/storage";var t=y("objects","delete");async function F(n){l(t);let S=x(n),g=c(n,["bucket"]),v=c(n,["key"]),q=c(n,["yes","y","force"]);g||f(t,"Bucket name or path is required");let m=w(g),o=m.bucket,s=v||m.key||void 0;s||f(t,"Object key is required");let N=await O(),a=Array.isArray(s)?s:[s];if(!q&&(h("Use --yes to skip confirmation"),!await j(`Delete ${a.length} object(s) from '${o}'?`))){console.log("Aborted");return}let u=[],i=[];for(let e of a){let{error:r}=await E(e,{config:{...N,bucket:o}});r?(k(t,r.message,{key:e}),i.push({key:e,error:r.message})):(u.push(e),d(t,{key:e}))}if(S==="json"){let e=b(t,{bucket:o}),r={action:"deleted",bucket:o,keys:u,errors:i};e.length>0&&(r.nextActions=e),console.log(JSON.stringify(r))}i.length>0&&p(i[0].error,t),A(t,{bucket:o})}export{F as default};
@@ -1 +1 @@
1
- import{a as r}from"../../chunk-JRALYIRA.js";import{b as j}from"../../chunk-CFMM35UQ.js";import{a as g}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as u,c,d as m,i as h}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{createWriteStream as y,writeFileSync as O}from"fs";import{Readable as b}from"stream";import{pipeline as k}from"stream/promises";import{extname as q}from"path";import{get as w}from"@tigrisdata/storage";var t=h("objects","get"),v=new Set([".js",".ts",".jsx",".tsx",".mjs",".cjs",".py",".rb",".php",".java",".go",".rs",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".scala",".clj",".ex",".exs",".erl",".sh",".bash",".zsh",".fish",".ps1",".bat",".cmd",".sql",".graphql",".gql",".json",".yaml",".yml",".toml",".ini",".cfg",".conf",".xml",".plist",".env",".properties",".html",".htm",".css",".scss",".sass",".less",".styl",".md",".markdown",".mdx",".rst",".txt",".text",".csv",".tsv",".log",".ejs",".hbs",".pug",".jade",".njk",".twig",".liquid",".svg",".gitignore",".dockerignore",".editorconfig"]);function F(e,p){let i=q(p||e).toLowerCase();return v.has(i)?"string":"stream"}async function T(e){u(t);let l=r(e,["json"])?"json":r(e,["format","f","F"],"table"),i=r(e,["bucket"]),o=r(e,["key"]),s=r(e,["output","o","O"]),x=r(e,["mode","m","M"]),f=r(e,["snapshot-version","snapshotVersion","snapshot"]);i||(m(t,"Bucket name is required"),g("Bucket name is required",t)),o||(m(t,"Object key is required"),g("Object key is required",t));let d=await j();if((x||F(o,s))==="stream"){let{data:a,error:n}=await w(o,"stream",{...f?{snapshotVersion:f}:{},config:{...d,bucket:i}});if(n&&(m(t,n.message),g(n,t)),s){let S=y(s);await k(b.fromWeb(a),S),c(t,{key:o,output:s}),l==="json"&&console.log(JSON.stringify({action:"downloaded",bucket:i,key:o,output:s}))}else await k(b.fromWeb(a),process.stdout),c(t)}else{let{data:a,error:n}=await w(o,"string",{...f?{snapshotVersion:f}:{},config:{...d,bucket:i}});n&&(m(t,n.message),g(n,t)),s?(O(s,a),c(t,{key:o,output:s}),l==="json"&&console.log(JSON.stringify({action:"downloaded",bucket:i,key:o,output:s}))):(console.log(a),c(t))}}export{T as default};
1
+ import{i as k}from"../../chunk-JQUG732D.js";import{f as j}from"../../chunk-552FMFE5.js";import{a as r,b}from"../../chunk-AHGPPFCQ.js";import{b as c}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as h,c as a,i as u}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{get as w}from"@tigrisdata/storage";import{createWriteStream as v,writeFileSync as q}from"fs";import{extname as T}from"path";import{Readable as S}from"stream";import{pipeline as x}from"stream/promises";var e=u("objects","get"),C=new Set([".js",".ts",".jsx",".tsx",".mjs",".cjs",".py",".rb",".php",".java",".go",".rs",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".scala",".clj",".ex",".exs",".erl",".sh",".bash",".zsh",".fish",".ps1",".bat",".cmd",".sql",".graphql",".gql",".json",".yaml",".yml",".toml",".ini",".cfg",".conf",".xml",".plist",".env",".properties",".html",".htm",".css",".scss",".sass",".less",".styl",".md",".markdown",".mdx",".rst",".txt",".text",".csv",".tsv",".log",".ejs",".hbs",".pug",".jade",".njk",".twig",".liquid",".svg",".gitignore",".dockerignore",".editorconfig"]);function E(s,m){let l=T(m||s).toLowerCase();return C.has(l)?"string":"stream"}async function F(s){h(e);let m=b(s),p=r(s,["bucket"]),l=r(s,["key"]),t=r(s,["output","o","O"]),y=r(s,["mode","m","M"]),g=r(s,["snapshot-version","snapshotVersion","snapshot"]);p||c(e,"Bucket name or path is required");let{bucket:f,key:o}=k(p,l);o||c(e,"Object key is required");let d=await j();if((y||E(o,t))==="stream"){let{data:i,error:n}=await w(o,"stream",{...g?{snapshotVersion:g}:{},config:{...d,bucket:f}});if(n&&c(e,n),t){let O=v(t);await x(S.fromWeb(i),O),a(e,{key:o,output:t}),m==="json"&&console.log(JSON.stringify({action:"downloaded",bucket:f,key:o,output:t}))}else await x(S.fromWeb(i),process.stdout),a(e)}else{let{data:i,error:n}=await w(o,"string",{...g?{snapshotVersion:g}:{},config:{...d,bucket:f}});n&&c(e,n),t?(q(t,i),a(e,{key:o,output:t}),m==="json"&&console.log(JSON.stringify({action:"downloaded",bucket:f,key:o,output:t}))):(console.log(i),a(e))}}export{F as default};
@@ -0,0 +1 @@
1
+ import{a as d,f as h}from"../../chunk-CQCBYE3X.js";import{i as k}from"../../chunk-JQUG732D.js";import{f as l}from"../../chunk-552FMFE5.js";import{a as i,b as g}from"../../chunk-AHGPPFCQ.js";import{b as o}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as m,c as u,i as p}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{head as O}from"@tigrisdata/storage";var e=p("objects","info");async function A(r){m(e);let b=g(r),c=i(r,["bucket"]),v=i(r,["key"]),s=i(r,["snapshot-version","snapshotVersion","snapshot"]);c||o(e,"Bucket name or path is required");let{bucket:a,key:n}=k(c,v);n||o(e,"Object key is required");let y=await l(),{data:t,error:f}=await O(n,{...s?{snapshotVersion:s}:{},config:{...y,bucket:a}});f&&o(e,f),t||o(e,"Object not found");let S=[{metric:"Path",value:t.path},{metric:"Size",value:d(t.size)},{metric:"Content-Type",value:t.contentType||"N/A"},{metric:"Content-Disposition",value:t.contentDisposition||"N/A"},{metric:"Modified",value:t.modified.toISOString()},{metric:"URL",value:t.url}],j=h(S,b,"object-info","info",[{key:"metric",header:"Metric"},{key:"value",header:"Value"}]);console.log(j),u(e,{bucket:a,key:n})}export{A as default};
@@ -1 +1 @@
1
- import{a as h,f as k}from"../../chunk-CQCBYE3X.js";import{a as e}from"../../chunk-JRALYIRA.js";import{b as l}from"../../chunk-CFMM35UQ.js";import{a}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as p,c as d,d as n,e as u,i as g}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{list as z}from"@tigrisdata/storage";var t=g("objects","list");async function S(o){p(t);let c=e(o,["bucket"]),b=e(o,["prefix","p","P"]),j=e(o,["json"])?"json":e(o,["format","f","F"],"table"),f=e(o,["snapshot-version","snapshotVersion","snapshot"]);c||(n(t,"Bucket name is required"),a("Bucket name is required",t));let y=await l(),{data:i,error:r}=await z({prefix:b||void 0,...f?{snapshotVersion:f}:{},config:{...y,bucket:c}});if(r&&(n(t,r.message),a(r,t)),!i.items||i.items.length===0){u(t);return}let m=i.items.map(s=>({key:s.name,size:h(s.size),modified:s.lastModified})),x=k(m,j,"objects","object",[{key:"key",header:"Key"},{key:"size",header:"Size"},{key:"modified",header:"Modified"}]);console.log(x),d(t,{count:m.length})}export{S as default};
1
+ import{a as l,f as b}from"../../chunk-CQCBYE3X.js";import{f as y}from"../../chunk-JQUG732D.js";import{f as k}from"../../chunk-552FMFE5.js";import{a as o,b as h}from"../../chunk-AHGPPFCQ.js";import{b as s}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as p,c as d,e as g,i as u}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{list as A}from"@tigrisdata/storage";var t=u("objects","list");async function E(e){p(t);let n=o(e,["bucket"]),j=o(e,["prefix","p","P"]),x=h(e),c=o(e,["snapshot-version","snapshotVersion","snapshot"]);n||s(t,"Bucket name is required");let a=y(n),z=a.bucket,S=j||a.path||void 0,w=await k(),{data:r,error:f}=await A({prefix:S,...c?{snapshotVersion:c}:{},config:{...w,bucket:z}});if(f&&s(t,f),!r.items||r.items.length===0){g(t);return}let m=r.items.map(i=>({key:i.name,size:l(i.size),modified:i.lastModified})),O=b(m,x,"objects","object",[{key:"key",header:"Key"},{key:"size",header:"Size"},{key:"modified",header:"Modified"}]);console.log(O),d(t,{count:m.length})}export{E as default};
@@ -1 +1 @@
1
- import{a as j}from"../../chunk-EKW6XTGL.js";import{a as n,f as k}from"../../chunk-CQCBYE3X.js";import{a as t}from"../../chunk-JRALYIRA.js";import{b as h}from"../../chunk-CFMM35UQ.js";import{a,c as S}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b,c as g,d as s,i as y}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{createReadStream as P,statSync as x}from"fs";import{Readable as z}from"stream";import{put as U}from"@tigrisdata/storage";var e=y("objects","put");async function C(r){b(e);let c=t(r,["bucket"]),d=t(r,["key"]),i=t(r,["file"]),T=t(r,["access","a","A"],"private"),q=t(r,["content-type","contentType","t","T"]),w=t(r,["json"])?"json":t(r,["format","f","F"],"table");c||(s(e,"Bucket name is required"),a("Bucket name is required",e)),d||(s(e,"Object key is required"),a("Object key is required",e));let F=!process.stdin.isTTY;!i&&!F&&(s(e,"File path is required (or pipe data via stdin)"),a("File path is required (or pipe data via stdin)",e));let m,o;if(i){try{o=x(i).size}catch{s(e,`File not found: ${i}`),a(`File not found: ${i}`,e)}let u=P(i);m=z.toWeb(u)}else m=z.toWeb(process.stdin);let R=await h({withCredentialProvider:!0}),$=i?j(o):{multipart:!0,partSize:5*1024*1024,queueSize:8},{data:p,error:f}=await U(d,m,{access:T==="public"?"public":"private",contentType:q,...$,onUploadProgress:({loaded:u,percentage:l})=>{o!==void 0&&o>0?process.stdout.write(`\rUploading: ${n(u)} / ${n(o)} (${l}%)`):process.stdout.write(`\rUploading: ${n(u)}`)},config:{...R,bucket:c}});process.stdout.write("\r"+" ".repeat(60)+"\r"),f&&(s(e,f.message),a(f,e));let v=[{path:p.path,size:n(p.size??o??0),contentType:p.contentType||"-",modified:p.modified}],O=k(v,w,"objects","object",[{key:"path",header:"Path"},{key:"size",header:"Size"},{key:"contentType",header:"Content-Type"},{key:"modified",header:"Modified"}]);console.log(O),g(e,{key:d,bucket:c}),S(e,{key:d,bucket:c})}export{C as default};
1
+ import{a as R}from"../../chunk-EKW6XTGL.js";import{a,f as j}from"../../chunk-CQCBYE3X.js";import{i as A}from"../../chunk-JQUG732D.js";import{f as w}from"../../chunk-552FMFE5.js";import{a as s,b as T}from"../../chunk-AHGPPFCQ.js";import{b as i,d as z}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as k,c as S,i as h}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{put as W}from"@tigrisdata/storage";import{createReadStream as B,statSync as E}from"fs";import{Readable as v}from"stream";var t=h("objects","put");async function M(e){k(t);let u=s(e,["bucket"]),l=s(e,["key"]),g=s(e,["file"]),O=s(e,["access","a","A"],"private"),P=s(e,["content-type","contentType","t","T"]),$=T(e);u||i(t,"Bucket name or path is required");let d=A(u),m=d.bucket,n=d.key||l,r=d.key&&l||g;n||i(t,"Object key is required");let q=!process.stdin.isTTY;!r&&!q&&i(t,"File path is required (or pipe data via stdin)");let f,o;if(r){try{o=E(r).size}catch{i(t,`File not found: ${r}`)}let p=B(r);f=v.toWeb(p)}else f=v.toWeb(process.stdin);let U=await w({withCredentialProvider:!0}),x=r?R(o):{multipart:!0,partSize:5*1024*1024,queueSize:8},{data:c,error:b}=await W(n,f,{access:O==="public"?"public":"private",contentType:P,...x,onUploadProgress:({loaded:p,percentage:y})=>{o!==void 0&&o>0?process.stdout.write(`\rUploading: ${a(p)} / ${a(o)} (${y}%)`):process.stdout.write(`\rUploading: ${a(p)}`)},config:{...U,bucket:m}});process.stdout.write("\r"+" ".repeat(60)+"\r"),b&&i(t,b);let C=[{path:c.path,size:a(c.size??o??0),contentType:c.contentType||"-",modified:c.modified}],F=j(C,$,"objects","object",[{key:"path",header:"Path"},{key:"size",header:"Size"},{key:"contentType",header:"Content-Type"},{key:"modified",header:"Modified"}]);console.log(F),S(t,{key:n,bucket:m}),z(t,{key:n,bucket:m})}export{M as default};
@@ -1 +1 @@
1
- import{a as t}from"../../chunk-JRALYIRA.js";import{b as l}from"../../chunk-CFMM35UQ.js";import{a as i}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as f,c as g,d as c,i as m}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{updateObject as d}from"@tigrisdata/storage";var e=m("objects","set");async function k(r){f(e);let p=t(r,["json"])?"json":t(r,["format","f","F"],"table"),s=t(r,["bucket"]),n=t(r,["key"]),a=t(r,["access","a","A"]),o=t(r,["new-key","n","newKey"]);s||(c(e,"Bucket name is required"),i("Bucket name is required",e)),n||(c(e,"Object key is required"),i("Object key is required",e)),a||(c(e,"Access level is required (--access public|private)"),i("Access level is required (--access public|private)",e));let b=await l(),{error:u}=await d(n,{access:a==="public"?"public":"private",...o&&{key:o},config:{...b,bucket:s}});u&&(c(e,u.message),i(u,e)),p==="json"&&console.log(JSON.stringify({action:"updated",bucket:s,key:n,access:a,...o?{newKey:o}:{}})),g(e,{key:n,bucket:s})}export{k as default};
1
+ import{i as k}from"../../chunk-JQUG732D.js";import{f as b}from"../../chunk-552FMFE5.js";import{a as c,b as p}from"../../chunk-AHGPPFCQ.js";import{b as r}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as g,c as m,i as u}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{updateObject as j}from"@tigrisdata/storage";var e=u("objects","set");async function w(t){g(e);let l=p(t),a=c(t,["bucket"]),y=c(t,["key"]),s=c(t,["access","a","A"]),i=c(t,["new-key","n","newKey"]);a||r(e,"Bucket name or path is required");let{bucket:n,key:o}=k(a,y);o||r(e,"Object key is required"),s||r(e,"Access level is required (--access public|private)");let d=await b(),{error:f}=await j(o,{access:s==="public"?"public":"private",...i&&{key:i},config:{...d,bucket:n}});f&&r(e,f),l==="json"&&console.log(JSON.stringify({action:"updated",bucket:n,key:o,access:s,...i?{newKey:i}:{}})),m(e,{key:o,bucket:n})}export{w as default};
@@ -1,7 +1 @@
1
- import{a as f}from"../../chunk-Y3JRLJCC.js";import{a as h}from"../../chunk-JRALYIRA.js";import{b as d}from"../../chunk-CFMM35UQ.js";import{a as r,c}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as e,c as a,d as n,g as s,i as g}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import{g as l,k as u,s as m}from"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{createOrganization as x}from"@tigrisdata/iam";var i=g("organizations","create");async function F(p){if(e(i),m()!=="oauth"){u()?console.log(`You are using access key credentials, which belong to a single organization.
2
- Organization creation is only available with OAuth login.
3
-
4
- Run "tigris login" to login with your Tigris account.`):console.log('Not authenticated. Please run "tigris login" to login with your Tigris account.');return}let y=l();if(f(y??void 0)){console.log(`Organization creation is not available for Fly.io users.
5
- Your organizations are managed through Fly.io.
6
-
7
- Visit https://fly.io to manage your organizations.`);return}let o=h(p,["name","N"]);o||(n(i,"Organization name is required"),r("Organization name is required",i));let z=await d(),{data:O,error:t}=await x(o,{config:z});t&&(n(i,t.message),r(t,i));let w=O.id;a(i,{name:o,id:w}),s(i,{name:o}),c(i,{name:o})}export{F as default};
1
+ import{f as O,h as d}from"../../chunk-552FMFE5.js";import{a as p,b as u}from"../../chunk-AHGPPFCQ.js";import{b as i,d as m}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as e,c,g as f,i as g}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import{b as s}from"../../chunk-AEADROU6.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{createOrganization as w}from"@tigrisdata/iam";var r=g("organizations","create");async function x(n){if(e(r),d("Organization creation")||s("Organization creation"))return;let t=p(n,["name","N"]);t||i(r,"Organization name is required");let z=await O(),l=u(n),{data:S,error:o}=await w(t,{config:z});o&&i(r,o);let a=S.id;l==="json"&&console.log(JSON.stringify({action:"created",name:t,id:a})),c(r,{name:t,id:a}),f(r,{name:t}),m(r,{name:t})}export{x as default};
@@ -1,4 +1 @@
1
- import{a as I,b}from"../../chunk-Y3JRLJCC.js";import{f as T}from"../../chunk-CQCBYE3X.js";import{a as x}from"../../chunk-S77OAN6Y.js";import{a as c}from"../../chunk-JRALYIRA.js";import{b as F}from"../../chunk-CFMM35UQ.js";import{a as y}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as h,c as r,d as p,e as z,i as w}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import{b as C}from"../../chunk-2ALXOKBR.js";import{f as O,g as k,k as S,s as j}from"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{listOrganizations as $}from"@tigrisdata/iam";import q from"enquirer";var i=w("organizations","list");async function v(l){if(h(i),j()!=="oauth"){S()?console.log(`You are using access key credentials, which belong to a single organization.
2
- Organization listing and selection is only available with OAuth login.
3
-
4
- Run "tigris login" to login with your Tigris account.`):console.log('Not authenticated. Please run "tigris login" to login with your Tigris account.');return}let g=c(l,["json"])?"json":c(l,["format","f","F"],"select"),U=await C().getAccessToken(),s=await b(U),A=s?.some(t=>I(t.id))??!1,n;if(A&&s)n=s.map(t=>({id:t.id,name:t.name,slug:t.name}));else{let t=await F(),{data:d,error:a}=await $({config:t});a&&(p(i,a.message),y(a,i)),n=d?.organizations??[]}if(n.length===0){z(i);return}let o=k();if(g==="select"){let t=n.map(e=>({name:e.id,message:`${e.name} (${e.id})`,hint:e.id===o?"currently selected":void 0}));x("Use --format table or --format json");let u=(await q.prompt({type:"select",name:"organization",message:"Select an organization:",choices:t.map(e=>e.message),initial:o?n.findIndex(e=>e.id===o):0})).organization.match(/\(([^)]+)\)$/),f=u?u[1]:n[0].id;await O(f);let M=n.find(e=>e.id===f);r(i,{name:M?.name});return}let m=n.map(t=>({id:t.id,name:t.name,slug:t.slug,selected:t.id===o?"*":""})),E=T(m,g,"organizations","organization",[{key:"selected",header:" ",width:1},{key:"id",header:"ID"},{key:"name",header:"Name"},{key:"slug",header:"Slug"}]);console.log(E),r(i,{count:m.length})}export{v as default};
1
+ import{f as q}from"../../chunk-CQCBYE3X.js";import{a as S}from"../../chunk-S77OAN6Y.js";import{f as C,h as U}from"../../chunk-552FMFE5.js";import{b as I}from"../../chunk-AHGPPFCQ.js";import{b as h}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as f,c as s,e as u,i as p}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import{a as O,c as k}from"../../chunk-AEADROU6.js";import{d as y}from"../../chunk-BC2HK4K6.js";import{h as z,i as w}from"../../chunk-7RGWTDUP.js";import{listOrganizations as T}from"@tigrisdata/iam";import b from"enquirer";var i=p("organizations","list");async function j(x){if(f(i),U("Organization listing and selection"))return;let m=I(x,"select"),A=await y().getAccessToken(),a=await k(A),E=a?.some(t=>O(t.id))??!1,n;if(E&&a)n=a.map(t=>({id:t.id,name:t.name,slug:t.name}));else{let t=await C(),{data:l,error:r}=await T({config:t});r&&h(i,r),n=l?.organizations??[]}if(n.length===0){u(i);return}let o=w();if(m==="select"){let t=n.map(e=>({name:e.id,message:`${e.name} (${e.id})`,hint:e.id===o?"currently selected":void 0}));S("Use --format table or --format json");let g=(await b.prompt({type:"select",name:"organization",message:"Select an organization:",choices:t.map(e=>e.message),initial:o?n.findIndex(e=>e.id===o):0})).organization.match(/\(([^)]+)\)$/),d=g?g[1]:n[0].id;await z(d);let $=n.find(e=>e.id===d);s(i,{name:$?.name});return}let c=n.map(t=>({id:t.id,name:t.name,slug:t.slug,selected:t.id===o?"*":""})),F=q(c,m,"organizations","organization",[{key:"selected",header:" ",width:1},{key:"id",header:"ID"},{key:"name",header:"Name"},{key:"slug",header:"Slug"}]);console.log(F),s(i,{count:c.length})}export{j as default};