@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
@@ -1,8 +1,5 @@
1
- import{a as z}from"../../chunk-JRALYIRA.js";import{b as h}from"../../chunk-CFMM35UQ.js";import{a as e,c as u}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as c,c as l,d as a,i as m}from"../../chunk-2JHVFROL.js";import"../../chunk-BETAO4PB.js";import"../../chunk-2ALXOKBR.js";import{f as d,k as f,s as p}from"../../chunk-DOUR5YEY.js";import"../../chunk-CLT45ZCW.js";import"../../chunk-2XAO2OYD.js";import{listOrganizations as $}from"@tigrisdata/iam";var n=m("organizations","select");async function b(O){if(c(n),p()!=="oauth"){f()?console.log(`You are using access key credentials, which belong to a single organization.
2
- Organization 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 i=z(O,["name","N"]);i||(a(n,"Organization name or ID is required"),e("Organization name or ID is required",n));let w=await h(),{data:y,error:r}=await $({config:w});r&&(a(n,r.message),e(r,n));let s=y?.organizations??[],o=s.find(t=>t.id===i||t.name===i);if(!o){let t=s.map(g=>` - ${g.name} (${g.id})`).join(`
5
- `);a(n,`Organization "${i}" not found
1
+ import{f as S,h as $}from"../../chunk-552FMFE5.js";import{a as z,b as O}from"../../chunk-AHGPPFCQ.js";import{a as d,b as r,d as p}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as g,c,d as f,i as l}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import{h as u}from"../../chunk-7RGWTDUP.js";import{listOrganizations as A}from"@tigrisdata/iam";var n=l("organizations","select");async function N(a){if(g(n),$("Organization selection"))return;let w=O(a),i=z(a,["name","N"]);i||r(n,"Organization name or ID is required");let x=await S(),{data:h,error:e}=await A({config:x});e&&r(n,e);let s=h?.organizations??[],t=s.find(o=>o.id===i||o.name===i);if(!t){let o=s.map(m=>` - ${m.name} (${m.id})`).join(`
2
+ `);f(n,`Organization "${i}" not found
6
3
 
7
4
  Available organizations:
8
- ${t}`),e(`Organization "${i}" not found`,n)}await d(o.id),l(n,{name:o.name}),u(n,{name:o.name})}export{b as default};
5
+ ${o}`),d(`Organization "${i}" not found`,n)}await u(t.id),w==="json"&&console.log(JSON.stringify({action:"selected",organization:t.name})),c(n,{name:t.name}),p(n,{name:t.name})}export{N as default};
@@ -1 +1,3 @@
1
- import{b as I}from"../chunk-CQCBYE3X.js";import{f as w}from"../chunk-LCWHZUZZ.js";import{a as n}from"../chunk-JRALYIRA.js";import{a as k,b as K}from"../chunk-CFMM35UQ.js";import{a as s}from"../chunk-LQ4BU234.js";import"../chunk-DV3LCXRH.js";import"../chunk-2JHVFROL.js";import"../chunk-BETAO4PB.js";import{b as h}from"../chunk-2ALXOKBR.js";import{g as u}from"../chunk-DOUR5YEY.js";import{c as p}from"../chunk-CLT45ZCW.js";import"../chunk-2XAO2OYD.js";import{getPresignedUrl as A}from"@tigrisdata/storage";import{listAccessKeys as x}from"@tigrisdata/iam";import P from"enquirer";var{prompt:v}=P;async function C(i){let m=n(i,["path"]);m||s("path argument is required");let{bucket:r,path:a}=w(m);r||s("Invalid path"),a||s("Object key is required");let f=n(i,["method","m"])??"get",o=parseInt(n(i,["expires-in","expiresIn","e"])??"3600",10),l=n(i,["json"])?"json":n(i,["format","f"])??"url",t=n(i,["access-key","accessKey"]),g=await K(),e;t?e=t:g.accessKeyId?e=g.accessKeyId:(await k()!=="oauth"&&s("Presigning requires an access key. Pass --access-key or configure credentials."),e=await b(r)),e||s("Presigning requires an access key. Pass --access-key or configure credentials.");let{data:c,error:y}=await A(a,{method:f,expiresIn:o,accessKeyId:e,config:{...g,bucket:r}});y&&s(y),console.log(l==="json"?I({url:c.url,expiresIn:c.expiresIn,method:f,bucket:r,key:a}):c.url),process.exit(0)}async function b(i){process.stdin.isTTY||s("Presigning requires an access key. Pass --access-key tid_...");let r=await h().getAccessToken(),a=u(),f=p(),{data:o,error:d}=await x({config:{sessionToken:r,organizationId:a??void 0,iamEndpoint:f.iamEndpoint}});d&&s(d),(!o.accessKeys||o.accessKeys.length===0)&&s('No access keys found. Create one with "tigris access-keys create <name>"');let l=o.accessKeys.filter(e=>e.status==="active"&&e.roles?.some(c=>c.bucket===i||c.bucket==="*")),t;if(l.length>0)t=l;else{let e=o.accessKeys.filter(c=>c.status==="active");e.length===0&&s('No active access keys found. Create one with "tigris access-keys create <name>"'),console.error(`No access keys with explicit access to bucket "${i}" found. Showing all active keys.`),t=e}if(t.length===1)return console.error(`Using access key: ${t[0].name} (${t[0].id})`),t[0].id;let{selectedKey:g}=await v({type:"select",name:"selectedKey",message:"Select an access key for presigning:",choices:t.map(e=>({name:e.id,message:`${e.name} (${e.id})`}))});return g}export{C as default};
1
+ import{b as w}from"../chunk-CQCBYE3X.js";import{f as A}from"../chunk-JQUG732D.js";import{a as h,d as k,f as K}from"../chunk-552FMFE5.js";import{a as g,b as p}from"../chunk-AHGPPFCQ.js";import{a as r}from"../chunk-3FMWZQ3C.js";import"../chunk-DV3LCXRH.js";import"../chunk-5VDFQRGP.js";import"../chunk-PPNBQWSR.js";import"../chunk-ATBINUDP.js";import{d as u}from"../chunk-BC2HK4K6.js";import{i as y}from"../chunk-7RGWTDUP.js";import{listAccessKeys as C}from"@tigrisdata/iam";import{getPresignedUrl as P}from"@tigrisdata/storage";import $ from"enquirer";var{prompt:b}=$;async function T(s){let n=g(s,["path"]);n||r("path argument is required");let{bucket:c,path:e}=A(n);c||r("Invalid path"),e||r("Object key is required");let i=g(s,["method","m"])??"get",t=parseInt(g(s,["expires-in","expiresIn","e"])??"3600",10),l=p(s,"url"),o=g(s,["access-key","accessKey"]),x=g(s,["select"]),f=await K(),a;o?a=o:f.accessKeyId?a=f.accessKeyId:(await k()!=="oauth"&&r("Presigning requires an access key. Pass --access-key or configure credentials."),x?a=await E(c,i):a=await q(c,i)),a||r("Presigning requires an access key. Pass --access-key or configure credentials.");let{data:d,error:m}=await P(e,{method:i,expiresIn:t,accessKeyId:a,config:{...f,bucket:c}});m&&r(m),console.log(l==="json"?w({url:d.url,expiresIn:d.expiresIn,method:i,bucket:c,key:e}):d.url),process.exit(0)}async function v(){let n=await u().getAccessToken(),c=y(),e=h(),{data:i,error:t}=await C({config:{sessionToken:n,organizationId:c??void 0,iamEndpoint:e.iamEndpoint}});return t&&r(t),(!i.accessKeys||i.accessKeys.length===0)&&r('No access keys found. Create one with "tigris access-keys create <name>"'),i.accessKeys}function I(s,n,c){return s.roles?s.roles.some(e=>e.role==="NamespaceAdmin"?!0:e.bucket!==n&&e.bucket!=="*"?!1:c==="put"?e.role==="Editor":e.role==="Editor"||e.role==="ReadOnly"):!1}async function q(s,n){let e=(await v()).filter(t=>t.status==="active");e.length===0&&r('No active access keys found. Create one with "tigris access-keys create <name>"');let i=e.find(t=>I(t,s,n));return i||r(`No access key with ${n==="put"?"Editor":"Editor or ReadOnly"} access to bucket "${s}" found.
2
+ Create one: tigris access-keys create <name>
3
+ Then assign: tigris access-keys assign <id> --bucket ${s} --role Editor`),console.error(`Using access key: ${i.name} (${i.id})`),i.id}async function E(s,n){process.stdin.isTTY||r("Interactive selection requires a TTY. Omit --select to auto-resolve, or pass --access-key tid_...");let e=(await v()).filter(o=>o.status==="active");e.length===0&&r('No active access keys found. Create one with "tigris access-keys create <name>"');let i=e.filter(o=>I(o,s,n)),t;if(i.length>0?t=i:(console.error(`No access keys with explicit access to bucket "${s}" found. Showing all active keys.`),t=e),t.length===1)return console.error(`Using access key: ${t[0].name} (${t[0].id})`),t[0].id;let{selectedKey:l}=await b({type:"select",name:"selectedKey",message:"Select an access key for presigning:",choices:t.map(o=>({name:o.id,message:`${o.name} (${o.id})`}))});return l}export{T as default,I as keyMatchesOperation};
package/dist/lib/rm.js CHANGED
@@ -1 +1 @@
1
- import{a as v,b as h}from"../chunk-S77OAN6Y.js";import{a as P,b as W,d as I,g as N,h as O,i as E}from"../chunk-LCWHZUZZ.js";import{a as f}from"../chunk-JRALYIRA.js";import{b as A}from"../chunk-CFMM35UQ.js";import{a as s}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{remove as b,removeBucket as M,list as U}from"@tigrisdata/storage";var i=!1;async function T(m){let g=f(m,["path"]),$=f(m,["force","f","F","yes","y"]),k=!!f(m,["recursive","r"]);i=(f(m,["json"])?"json":f(m,["format"],"table"))==="json",g||s("path argument is required"),P(g)||s("Path must be a remote Tigris path (t3:// or tigris://)");let{bucket:e,path:o}=W(g);e||s("Invalid path");let n=await A(),R=g.endsWith("/");if(!o&&!R){if(!$&&(v("Use --yes to skip confirmation"),!await h(`Are you sure you want to delete bucket '${e}'?`))){i||console.log("Aborted");return}let{error:r}=await M(e,{config:n});r&&s(r),console.log(i?JSON.stringify({action:"removed",bucket:e}):`Removed bucket '${e}'`);return}let a=o.includes("*"),u=o.endsWith("/")||!o&&R;if(!a&&!u&&(u=await I(e,o,n)),u&&!a&&!k&&s("Source is a remote folder (not removed). Use -r to remove recursively."),a||u){let r=a?O(o):o?o.endsWith("/")?o:`${o}/`:"",{items:w,error:j}=await E(e,r||void 0,n);j&&s(j);let d=w;if(a){let t=o.split("/").pop(),l=N(t);d=d.filter(S=>{let x=r?S.name.slice(r.length):S.name;return!k&&x.includes("/")?!1:l.test(x.split("/").pop())})}let c=r,J=d.some(t=>t.name===c),y=!1;if(!J&&!a){let{data:t}=await U({prefix:c,limit:1,config:{...n,bucket:e}});y=t?.items?.some(l=>l.name===c)||!1}let F=d.length+(y?1:0);if(F===0){console.log(i?JSON.stringify({action:"removed",count:0}):"No objects to remove");return}if(!$&&(v("Use --yes to skip confirmation"),!await h(`Are you sure you want to delete ${F} object(s)?`))){i||console.log("Aborted");return}let p=0;for(let t of d){let{error:l}=await b(t.name,{config:{...n,bucket:e}});l?console.error(`Failed to remove ${t.name}: ${l.message}`):(i||console.log(`Removed t3://${e}/${t.name}`),p++)}if(y){let{error:t}=await b(c,{config:{...n,bucket:e}});t?console.error(`Failed to remove ${c}: ${t.message}`):(i||console.log(`Removed t3://${e}/${c}`),p++)}console.log(i?JSON.stringify({action:"removed",count:p}):`Removed ${p} object(s)`)}else{if(!$&&(v("Use --yes to skip confirmation"),!await h(`Are you sure you want to delete 't3://${e}/${o}'?`))){i||console.log("Aborted");return}let{error:r}=await b(o,{config:{...n,bucket:e}});r&&s(r),console.log(i?JSON.stringify({action:"removed",count:1,path:`t3://${e}/${o}`}):`Removed t3://${e}/${o}`)}process.exit(0)}export{T as default};
1
+ import{a as v,b as h}from"../chunk-S77OAN6Y.js";import{a as j,b as I,d as N,g as O,h as E,j as J}from"../chunk-JQUG732D.js";import{f as W}from"../chunk-552FMFE5.js";import{a as $,b as P}from"../chunk-AHGPPFCQ.js";import{a as s}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 U,remove as b,removeBucket as T}from"@tigrisdata/storage";var i=!1;async function q(m){let d=$(m,["path"]),g=$(m,["yes","y","force","f"]),k=!!$(m,["recursive","r"]);i=P(m)==="json",d||s("path argument is required"),j(d)||s("Path must be a remote Tigris path (t3:// or tigris://)");let{bucket:e,path:o}=I(d);e||s("Invalid path");let n=await W(),R=d.endsWith("/");if(!o&&!R){if(!g&&(v("Use --yes to skip confirmation"),!await h(`Are you sure you want to delete bucket '${e}'?`))){i||console.log("Aborted");return}let{error:r}=await T(e,{config:n,force:g});r&&s(r),console.log(i?JSON.stringify({action:"removed",bucket:e}):`Removed bucket '${e}'`);return}let a=o.includes("*"),u=o.endsWith("/")||!o&&R;if(!a&&!u&&(u=await N(e,o,n)),u&&!a&&!k&&s("Source is a remote folder (not removed). Use -r to remove recursively."),a||u){let r=a?E(o):o?o.endsWith("/")?o:`${o}/`:"",{items:w,error:S}=await J(e,r||void 0,n);S&&s(S);let f=w;if(a){let t=o.split("/").pop(),l=O(t);f=f.filter(A=>{let F=r?A.name.slice(r.length):A.name;return!k&&F.includes("/")?!1:l.test(F.split("/").pop())})}let c=r,M=f.some(t=>t.name===c),y=!1;if(!M&&!a){let{data:t}=await U({prefix:c,limit:1,config:{...n,bucket:e}});y=t?.items?.some(l=>l.name===c)||!1}let x=f.length+(y?1:0);if(x===0){console.log(i?JSON.stringify({action:"removed",count:0}):"No objects to remove");return}if(!g&&(v("Use --yes to skip confirmation"),!await h(`Are you sure you want to delete ${x} object(s)?`))){i||console.log("Aborted");return}let p=0;for(let t of f){let{error:l}=await b(t.name,{config:{...n,bucket:e}});l?console.error(`Failed to remove ${t.name}: ${l.message}`):(i||console.log(`Removed t3://${e}/${t.name}`),p++)}if(y){let{error:t}=await b(c,{config:{...n,bucket:e}});t?console.error(`Failed to remove ${c}: ${t.message}`):(i||console.log(`Removed t3://${e}/${c}`),p++)}console.log(i?JSON.stringify({action:"removed",count:p}):`Removed ${p} object(s)`)}else{if(!g&&(v("Use --yes to skip confirmation"),!await h(`Are you sure you want to delete 't3://${e}/${o}'?`))){i||console.log("Aborted");return}let{error:r}=await b(o,{config:{...n,bucket:e}});r&&s(r),console.log(i?JSON.stringify({action:"removed",count:1,path:`t3://${e}/${o}`}):`Removed t3://${e}/${o}`)}process.exit(0)}export{q as default};
@@ -1 +1 @@
1
- import{f as l}from"../../chunk-CQCBYE3X.js";import{a as e}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{b as f,c as p,d as a,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{listBucketSnapshots as j}from"@tigrisdata/storage";var t=g("snapshots","list");async function S(r){f(t);let m=e(r,["name"]),h=e(r,["json"])?"json":e(r,["format","f","F"],"table");m||(a(t,"Bucket name is required"),i("Bucket name is required",t));let k=await d(),{data:o,error:n}=await j(m,{config:k});if(n&&(a(t,n.message),i(n,t)),!o||o.length===0){u(t);return}let c=o.map(s=>({name:s.name||"",version:s.version||"",created:s.creationDate})),y=l(c,h,"snapshots","snapshot",[{key:"name",header:"Name"},{key:"version",header:"Version"},{key:"created",header:"Created"}]);console.log(y),p(t,{count:c.length})}export{S as default};
1
+ import{f as h}from"../../chunk-CQCBYE3X.js";import{f as d}from"../../chunk-552FMFE5.js";import{a as u,b as g}from"../../chunk-AHGPPFCQ.js";import{b as o}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as m,c,e as p,i as f}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{listBucketSnapshots as S}from"@tigrisdata/storage";var t=f("snapshots","list");async function v(n){m(t);let a=u(n,["name"]),l=g(n);a||o(t,"Bucket name is required");let k=await d(),{data:e,error:i}=await S(a,{config:k});if(i&&o(t,i),!e||e.length===0){p(t);return}let s=e.map(r=>({name:r.name||"",version:r.version||"",created:r.creationDate})),y=h(s,l,"snapshots","snapshot",[{key:"name",header:"Name"},{key:"version",header:"Version"},{key:"created",header:"Created"}]);console.log(y),c(t,{count:s.length})}export{v as default};
@@ -1 +1 @@
1
- import{a as s}from"../../chunk-JRALYIRA.js";import{b as g}from"../../chunk-CFMM35UQ.js";import{a as r}from"../../chunk-LQ4BU234.js";import"../../chunk-DV3LCXRH.js";import{b as p,c,d as o,i as f}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{createBucketSnapshot as h}from"@tigrisdata/storage";var t=f("snapshots","take");async function k(a){p(t);let n=s(a,["name"]),i=s(a,["snapshot-name","snapshotName"]);n||(o(t,"Bucket name is required"),r("Bucket name is required",t));let u=await g(),{data:m,error:e}=await h(n,{name:i,config:u});e&&(o(t,e.message),r(e,t)),c(t,{name:n,snapshotName:i||m?.snapshotVersion,version:m?.snapshotVersion})}export{k as default};
1
+ import{f as g}from"../../chunk-552FMFE5.js";import{a,b as f}from"../../chunk-AHGPPFCQ.js";import{b as r}from"../../chunk-3FMWZQ3C.js";import"../../chunk-DV3LCXRH.js";import{b as m,c,i as p}from"../../chunk-5VDFQRGP.js";import"../../chunk-PPNBQWSR.js";import"../../chunk-ATBINUDP.js";import"../../chunk-BC2HK4K6.js";import"../../chunk-7RGWTDUP.js";import{createBucketSnapshot as k}from"@tigrisdata/storage";var o=p("snapshots","take");async function S(n){m(o);let h=f(n),t=a(n,["name"]),e=a(n,["snapshot-name","snapshotName"]);t||r(o,"Bucket name is required");let u=await g(),{data:s,error:i}=await k(t,{name:e,config:u});i&&r(o,i),h==="json"&&console.log(JSON.stringify({action:"taken",bucket:t,version:s?.snapshotVersion})),c(o,{name:t,snapshotName:e||s?.snapshotVersion,version:s?.snapshotVersion})}export{S as default};
package/dist/lib/stat.js CHANGED
@@ -1 +1 @@
1
- import{a as x}from"../chunk-WIOXQDND.js";import{a as v,f}from"../chunk-CQCBYE3X.js";import{f as O}from"../chunk-LCWHZUZZ.js";import{a as n}from"../chunk-JRALYIRA.js";import{b as y}from"../chunk-CFMM35UQ.js";import{a as r}from"../chunk-LQ4BU234.js";import"../chunk-DV3LCXRH.js";import{b,c as u,d as i,i as j}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{getStats as V,getBucketInfo as A,head as M}from"@tigrisdata/storage";var t=j("stat");async function z(c){b(t);let S=n(c,["path"]),l=n(c,["json"])?"json":n(c,["format","f","F"],"table"),k=n(c,["snapshot-version","snapshotVersion","snapshot"]),p=await y();if(!S){let{data:a,error:e}=await V({config:p});e&&(i(t,e.message),r(e,t));let d=[{metric:"Active Buckets",value:String(a.stats.activeBuckets)},{metric:"Total Objects",value:String(a.stats.totalObjects)},{metric:"Total Unique Objects",value:String(a.stats.totalUniqueObjects)},{metric:"Total Storage",value:v(a.stats.totalStorageBytes)}],h=f(d,l,"stats","stat",[{key:"metric",header:"Metric"},{key:"value",header:"Value"}]);console.log(h),u(t),process.exit(0)}let{bucket:s,path:m}=O(S);if(s||(i(t,"Invalid path"),r("Invalid path",t)),!m||m==="/"){let{data:a,error:e}=await A(s,{config:p});e&&(i(t,e.message),r(e,t));let d=x(a).map(({label:I,value:T})=>({metric:I,value:T})),h=f(d,l,"bucket-info","info",[{key:"metric",header:"Metric"},{key:"value",header:"Value"}]);console.log(h),u(t,{bucket:s}),process.exit(0)}let{data:o,error:g}=await M(m,{...k?{snapshotVersion:k}:{},config:{...p,bucket:s}});g&&(i(t,g.message),r(g,t)),o||(i(t,"Object not found"),r("Object not found",t));let w=[{metric:"Path",value:o.path},{metric:"Size",value:v(o.size)},{metric:"Content-Type",value:o.contentType||"N/A"},{metric:"Content-Disposition",value:o.contentDisposition||"N/A"},{metric:"Modified",value:o.modified.toISOString()}],B=f(w,l,"object-info","info",[{key:"metric",header:"Metric"},{key:"value",header:"Value"}]);console.log(B),u(t,{bucket:s,path:m}),process.exit(0)}export{z as default};
1
+ import{a as w}from"../chunk-WIOXQDND.js";import{a as d,f as c}from"../chunk-CQCBYE3X.js";import{f as j}from"../chunk-JQUG732D.js";import{f as O}from"../chunk-552FMFE5.js";import{a as g,b}from"../chunk-AHGPPFCQ.js";import{b as i}from"../chunk-3FMWZQ3C.js";import"../chunk-DV3LCXRH.js";import{b as k,c as n,i as y}from"../chunk-5VDFQRGP.js";import"../chunk-PPNBQWSR.js";import"../chunk-ATBINUDP.js";import"../chunk-BC2HK4K6.js";import"../chunk-7RGWTDUP.js";import{getBucketInfo as A,getStats as I,head as M}from"@tigrisdata/storage";var t=y("stat");async function z(u){k(t);let h=g(u,["path"]),m=b(u),v=g(u,["snapshot-version","snapshotVersion","snapshot"]),f=await O();if(!h){let{data:o,error:r}=await I({config:f});r&&i(t,r);let p=[{metric:"Active Buckets",value:String(o.stats.activeBuckets)},{metric:"Total Objects",value:String(o.stats.totalObjects)},{metric:"Total Unique Objects",value:String(o.stats.totalUniqueObjects)},{metric:"Total Storage",value:d(o.stats.totalStorageBytes)}],l=c(p,m,"stats","stat",[{key:"metric",header:"Metric"},{key:"value",header:"Value"}]);console.log(l),n(t),process.exit(0)}let{bucket:a,path:s}=j(h);if(a||i(t,"Invalid path"),!s||s==="/"){let{data:o,error:r}=await A(a,{config:f});r&&i(t,r);let p=w(o).map(({label:T,value:V})=>({metric:T,value:V})),l=c(p,m,"bucket-info","info",[{key:"metric",header:"Metric"},{key:"value",header:"Value"}]);console.log(l),n(t,{bucket:a}),process.exit(0)}let{data:e,error:S}=await M(s,{...v?{snapshotVersion:v}:{},config:{...f,bucket:a}});S&&i(t,S),e||i(t,"Object not found");let x=[{metric:"Path",value:e.path},{metric:"Size",value:d(e.size)},{metric:"Content-Type",value:e.contentType||"N/A"},{metric:"Content-Disposition",value:e.contentDisposition||"N/A"},{metric:"Modified",value:e.modified.toISOString()}],B=c(x,m,"object-info","info",[{key:"metric",header:"Metric"},{key:"value",header:"Value"}]);console.log(B),n(t,{bucket:a,path:s}),process.exit(0)}export{z as default};
package/dist/lib/touch.js CHANGED
@@ -1 +1 @@
1
- import{f as c}from"../chunk-LCWHZUZZ.js";import{a as e}from"../chunk-JRALYIRA.js";import{b as s}from"../chunk-CFMM35UQ.js";import{a as t}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{put as m}from"@tigrisdata/storage";async function p(n){let i=e(n,["path"]);i||t("path argument is required");let{bucket:o,path:r}=c(i);o||t("Invalid path"),r||t("Object key is required (use mk to create buckets)");let f=e(n,["json"])?"json":e(n,["format","f","F"],"table"),g=await s(),{error:a}=await m(r,"",{config:{...g,bucket:o}});a&&t(a),console.log(f==="json"?JSON.stringify({action:"created",bucket:o,path:r}):`Created '${o}/${r}'`),process.exit(0)}export{p as default};
1
+ import{f}from"../chunk-JQUG732D.js";import{f as s}from"../chunk-552FMFE5.js";import{a,b as c}from"../chunk-AHGPPFCQ.js";import{a as t}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{put as p}from"@tigrisdata/storage";async function u(e){let i=a(e,["path"]);i||t("path argument is required");let{bucket:o,path:r}=f(i);o||t("Invalid path"),r||t("Object key is required (use mk to create buckets)");let g=c(e),m=await s(),{error:n}=await p(r,"",{config:{...m,bucket:o}});n&&t(n),console.log(g==="json"?JSON.stringify({action:"created",bucket:o,path:r}):`Created '${o}/${r}'`),process.exit(0)}export{u as default};
@@ -0,0 +1 @@
1
+ import{b as d}from"../chunk-AHGPPFCQ.js";import{a as t,c as l,d as p,e as f}from"../chunk-KCWQ4II7.js";import{b as m}from"../chunk-3FMWZQ3C.js";import"../chunk-DV3LCXRH.js";import{b as s,c as i,f as a,i as c}from"../chunk-5VDFQRGP.js";import"../chunk-PPNBQWSR.js";import"../chunk-ATBINUDP.js";import{execSync as h}from"child_process";var r=c("update");async function v(u={}){let g=d(u);s(r);try{let o=await f(),e=l(t,o),n=p();if(g==="json"){console.log(JSON.stringify({currentVersion:t,latestVersion:o,updateAvailable:e,updateCommand:n}));return}console.log(`Current version: ${t}`),e?(console.log(`Latest version: ${o}`),console.log("Updating..."),h(n,{stdio:"inherit",...process.platform==="win32"?{shell:"powershell.exe"}:{}}),i(r,{latestVersion:o})):a(r,{currentVersion:t})}catch(o){m(r,o)}}export{v as default};
@@ -1,2 +1,2 @@
1
- import{a as h}from"../chunk-JRALYIRA.js";import{b as C}from"../chunk-CFMM35UQ.js";import{a as m}from"../chunk-LQ4BU234.js";import"../chunk-DV3LCXRH.js";import{d as u,f,i as z}from"../chunk-2JHVFROL.js";import"../chunk-BETAO4PB.js";import{b as y}from"../chunk-2ALXOKBR.js";import{g as w,k as $,s as j}from"../chunk-DOUR5YEY.js";import"../chunk-CLT45ZCW.js";import"../chunk-2XAO2OYD.js";import{listOrganizations as k}from"@tigrisdata/iam";var o=z("whoami");async function E(p={}){try{let I=h(p,["json"])?"json":h(p,["format","f","F"],"table"),l=j(),A=$(),d,g;if(l==="oauth"){let t=y();if(!await t.isAuthenticated()){f(o);return}let n=await t.getIdTokenClaims();d=n.email,g=n.sub}else if(A)d=void 0,g=A.accessKeyId;else{f(o);return}let e=[];e.push(""),e.push("User Information:"),e.push(` Email: ${d||"N/A"}`),e.push(` User ID: ${g||"N/A"}`);let s=[],r;if(l==="oauth"){let t=await C();r=w();let{data:i,error:n}=await k({config:t});if(n&&(u(o,n.message),m(n,o)),s=i?.organizations??[],s.length>0){if(e.push(""),e.push(`Organizations (${s.length}):`),s.forEach(a=>{let S=a.id===r?">":" ";e.push(` ${S} ${a.name} (${a.id})`)}),r){let a=s.find(O=>O.id===r);a&&(e.push(""),e.push(`Active: ${a.name}`))}}else e.push(""),e.push("Organizations: None")}else e.push(""),e.push("Login method: Access Key Credentials"),e.push(" (Organization listing requires OAuth login: tigris login)");if(I==="json"){let t={email:d,userId:g,loginMethod:l};if(l==="oauth"&&(t.organizations=s.map(i=>({id:i.id,name:i.name})),r)){let i=s.find(n=>n.id===r);i&&(t.activeOrganization=i.name)}console.log(JSON.stringify(t));return}e.push(""),console.log(e.join(`
2
- `))}catch(c){c instanceof Error?u(o,c.message):u(o),m(c,o)}}export{E as default};
1
+ import{a as O,e as S,f as k}from"../chunk-552FMFE5.js";import{b}from"../chunk-AHGPPFCQ.js";import{b as A}from"../chunk-3FMWZQ3C.js";import"../chunk-DV3LCXRH.js";import{f as I,i as z}from"../chunk-5VDFQRGP.js";import"../chunk-PPNBQWSR.js";import"../chunk-ATBINUDP.js";import{d as $}from"../chunk-BC2HK4K6.js";import{i as w}from"../chunk-7RGWTDUP.js";import{listOrganizations as v,whoami as C}from"@tigrisdata/iam";var g=z("whoami"),K={"aws-profile":"AWS Profile",oauth:"OAuth",credentials:"Access Key Credentials",environment:"Environment Variables",configured:"Configured Credentials"};async function h(f,u){try{let t=O(),{data:c}=await C({config:{accessKeyId:f,secretAccessKey:u,iamEndpoint:t.iamEndpoint}});return{userId:c?.userId,organizationId:c?.organizationId}}catch{return{userId:void 0,organizationId:void 0}}}async function E(f={}){try{let u=b(f),t=await S();if(t.type==="none"){I(g);return}let c,r,o,n,d,e=[""],l=K[t.type]??t.type;switch(t.type){case"aws-profile":{e.push(`Auth method: ${l} (${t.profile})`);let i=await h(t.accessKeyId,t.secretAccessKey);r=i.userId,o=i.organizationId;break}case"oauth":{e.push(`Auth method: ${l}`);let i=$();if(!await i.isAuthenticated()){I(g);return}let a=await i.getIdTokenClaims();c=a.email,r=a.sub;let m=await k();d=w();let{data:p,error:y}=await v({config:m});y&&A(g,y),n=p?.organizations??[];break}case"credentials":{e.push(`Auth method: ${l}`);let i=await h(t.accessKeyId,t.secretAccessKey);r=i.userId,o=i.organizationId;break}case"environment":{let i=t.source==="tigris"?"TIGRIS_STORAGE_*":"AWS_*";e.push(`Auth method: ${l} (${i})`);let s=await h(t.accessKeyId,t.secretAccessKey);r=s.userId,o=s.organizationId;break}case"configured":{e.push(`Auth method: ${l}`);let i=await h(t.accessKeyId,t.secretAccessKey);r=i.userId,o=i.organizationId;break}}if(e.push(""),e.push("User Information:"),e.push(` Email: ${c||"N/A"}`),e.push(` User ID: ${r||"N/A"}`),n)if(n.length>0){let s=n.slice(0,5);if(e.push(""),e.push(`Organizations (${n.length}):`),s.forEach(a=>{let p=a.id===d?">":" ";e.push(` ${p} ${a.name} (${a.id})`)}),n.length>5&&e.push(` ... and ${n.length-5} more. Run "tigris organizations list" to see all.`),d){let a=n.find(m=>m.id===d);a&&(e.push(""),e.push(`Active: ${a.name}`))}}else e.push(""),e.push("Organizations: None");else o&&e.push(` Organization: ${o}`);if(u==="json"){let i={authMethod:t.type,email:c,userId:r};if(n&&(i.organizations=n.map(s=>({id:s.id,name:s.name})),d)){let s=n.find(a=>a.id===d);s&&(i.activeOrganization=s.name)}o&&(i.organizationId=o),console.log(JSON.stringify(i));return}e.push(""),console.log(e.join(`
2
+ `))}catch(u){A(g,u)}}export{E as default};