@tigrisdata/cli 2.6.0 → 2.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -13
- package/dist/auth/client.js +1 -1
- package/dist/auth/config.js +1 -1
- package/dist/auth/s3-client.js +1 -1
- package/dist/auth/storage.js +1 -1
- package/dist/chunk-4LGKN5DA.js +1 -0
- package/dist/chunk-6U4U4JM6.js +1 -0
- package/dist/chunk-A3TXP5Y2.js +2 -0
- package/dist/chunk-D63SZLT5.js +1 -0
- package/dist/chunk-DJIPPZGR.js +4 -0
- package/dist/chunk-ESJWTUFN.js +1 -0
- package/dist/chunk-HE7E7ZMA.js +1 -0
- package/dist/chunk-HGIJOGCZ.js +6 -0
- package/dist/chunk-JRALYIRA.js +1 -0
- package/dist/chunk-JVB3Y42V.js +1 -0
- package/dist/chunk-LCWHZUZZ.js +1 -0
- package/dist/chunk-QZXBLNMQ.js +1 -0
- package/dist/chunk-TPUZYSCZ.js +12 -0
- package/dist/chunk-TUJTXB5G.js +8 -0
- package/dist/cli.js +1 -12
- package/dist/constants.js +1 -1
- package/dist/index.js +1 -12
- package/dist/lib/_stat.js +1 -1
- package/dist/lib/access-keys/assign.js +2 -3
- package/dist/lib/access-keys/create.js +2 -3
- package/dist/lib/access-keys/delete.js +2 -3
- package/dist/lib/access-keys/get.js +2 -3
- package/dist/lib/access-keys/list.js +2 -8
- package/dist/lib/buckets/create.js +1 -2
- package/dist/lib/buckets/delete.js +1 -2
- package/dist/lib/buckets/get.js +1 -7
- package/dist/lib/buckets/list.js +1 -7
- package/dist/lib/buckets/set.js +1 -2
- package/dist/lib/configure/index.js +1 -2
- package/dist/lib/cp.js +1 -1
- package/dist/lib/credentials/test.js +1 -2
- package/dist/lib/forks/create.js +1 -2
- package/dist/lib/forks/list.js +1 -7
- package/dist/lib/login/credentials.js +1 -2
- package/dist/lib/login/oauth.js +1 -5
- package/dist/lib/login/select.js +1 -5
- package/dist/lib/logout.js +1 -2
- package/dist/lib/ls.js +1 -6
- package/dist/lib/mk.js +1 -1
- package/dist/lib/mv.js +1 -1
- package/dist/lib/objects/delete.js +1 -2
- package/dist/lib/objects/get.js +1 -2
- package/dist/lib/objects/list.js +1 -7
- package/dist/lib/objects/put.js +1 -7
- package/dist/lib/organizations/create.js +2 -3
- package/dist/lib/organizations/list.js +2 -8
- package/dist/lib/organizations/select.js +4 -5
- package/dist/lib/rm.js +1 -1
- package/dist/lib/snapshots/list.js +1 -7
- package/dist/lib/snapshots/take.js +1 -2
- package/dist/lib/touch.js +1 -1
- package/dist/lib/whoami.js +2 -3
- package/dist/specs.yaml +49 -28
- package/dist/utils/format.js +1 -6
- package/dist/utils/messages.js +1 -2
- package/dist/utils/options.js +1 -1
- package/dist/utils/path.js +1 -1
- package/dist/utils/specs.js +1 -1
- package/dist/utils/update-check.js +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -21,16 +21,16 @@ Run `tigris help` to see all available commands, or `tigris <command> help` for
|
|
|
21
21
|
- `tigris ls [path]` - List buckets or objects in a bucket or path
|
|
22
22
|
- `tigris mk <path>` - Create a bucket or a folder in a bucket
|
|
23
23
|
- `tigris touch <path>` - Create an empty object in a bucket
|
|
24
|
-
- `tigris cp <src> <dest>` - Copy
|
|
25
|
-
- `tigris mv <src> <dest>` - Move
|
|
26
|
-
- `tigris rm <path>` - Remove a bucket
|
|
24
|
+
- `tigris cp <src> <dest>` - Copy files between local filesystem and Tigris, or within Tigris
|
|
25
|
+
- `tigris mv <src> <dest>` - Move objects within Tigris
|
|
26
|
+
- `tigris rm <path>` - Remove a bucket, folder, or object from Tigris
|
|
27
27
|
|
|
28
28
|
### Authentication
|
|
29
29
|
|
|
30
30
|
- `tigris login` - Start a session. Use OAuth (default) or temporary credentials that override your saved config
|
|
31
31
|
- `tigris logout` - End your session. Clears login state but keeps credentials from 'configure'
|
|
32
32
|
- `tigris whoami` - Show information about the current user
|
|
33
|
-
- `tigris configure` - Save credentials permanently. After running this, all commands
|
|
33
|
+
- `tigris configure` - Save credentials permanently. After running this, all commands uses these credentials.
|
|
34
34
|
|
|
35
35
|
### Resources
|
|
36
36
|
|
|
@@ -58,6 +58,7 @@ tigris ls [path]
|
|
|
58
58
|
```bash
|
|
59
59
|
tigris ls my-bucket
|
|
60
60
|
tigris ls my-bucket/my-path
|
|
61
|
+
tigris ls t3://my-bucket
|
|
61
62
|
```
|
|
62
63
|
|
|
63
64
|
### `mk` | `create`
|
|
@@ -72,6 +73,7 @@ tigris mk <path>
|
|
|
72
73
|
```bash
|
|
73
74
|
tigris mk my-bucket
|
|
74
75
|
tigris mk my-bucket/my-path
|
|
76
|
+
tigris mk t3://my-bucket
|
|
75
77
|
```
|
|
76
78
|
|
|
77
79
|
### `touch`
|
|
@@ -85,16 +87,21 @@ tigris touch <path>
|
|
|
85
87
|
**Examples:**
|
|
86
88
|
```bash
|
|
87
89
|
tigris touch my-bucket/my-file.txt
|
|
90
|
+
tigris touch t3://my-bucket/my-file.txt
|
|
88
91
|
```
|
|
89
92
|
|
|
90
93
|
### `cp` | `copy`
|
|
91
94
|
|
|
92
|
-
Copy
|
|
95
|
+
Copy files between local filesystem and Tigris, or within Tigris
|
|
93
96
|
|
|
94
97
|
```
|
|
95
|
-
tigris cp <src> <dest>
|
|
98
|
+
tigris cp <src> <dest> [flags]
|
|
96
99
|
```
|
|
97
100
|
|
|
101
|
+
| Flag | Description |
|
|
102
|
+
|------|-------------|
|
|
103
|
+
| `-r, --recursive` | copy directories recursively |
|
|
104
|
+
|
|
98
105
|
**Examples:**
|
|
99
106
|
```bash
|
|
100
107
|
tigris cp bucket/file.txt bucket/copy.txt
|
|
@@ -103,7 +110,7 @@ tigris cp bucket/folder/ other-bucket/folder/
|
|
|
103
110
|
|
|
104
111
|
### `mv` | `move`
|
|
105
112
|
|
|
106
|
-
Move
|
|
113
|
+
Move objects within Tigris
|
|
107
114
|
|
|
108
115
|
```
|
|
109
116
|
tigris mv <src> <dest> [flags]
|
|
@@ -111,6 +118,7 @@ tigris mv <src> <dest> [flags]
|
|
|
111
118
|
|
|
112
119
|
| Flag | Description |
|
|
113
120
|
|------|-------------|
|
|
121
|
+
| `-r, --recursive` | move directories recursively |
|
|
114
122
|
| `-f, --force` | Skip confirmation prompt |
|
|
115
123
|
|
|
116
124
|
**Examples:**
|
|
@@ -121,7 +129,7 @@ tigris mv bucket/folder/ other-bucket/folder/
|
|
|
121
129
|
|
|
122
130
|
### `rm` | `remove`
|
|
123
131
|
|
|
124
|
-
Remove a bucket
|
|
132
|
+
Remove a bucket, folder, or object from Tigris
|
|
125
133
|
|
|
126
134
|
```
|
|
127
135
|
tigris rm <path> [flags]
|
|
@@ -129,13 +137,14 @@ tigris rm <path> [flags]
|
|
|
129
137
|
|
|
130
138
|
| Flag | Description |
|
|
131
139
|
|------|-------------|
|
|
140
|
+
| `-r, --recursive` | remove directories recursively |
|
|
132
141
|
| `-f, --force` | Skip confirmation prompt |
|
|
133
142
|
|
|
134
143
|
**Examples:**
|
|
135
144
|
```bash
|
|
136
|
-
tigris rm my-bucket
|
|
137
|
-
tigris rm my-bucket/my-path
|
|
138
|
-
tigris rm my-bucket/my-path
|
|
145
|
+
tigris rm t3://my-bucket
|
|
146
|
+
tigris rm t3://my-bucket/my-path/my-object.json
|
|
147
|
+
tigris rm t3://my-bucket/my-path/
|
|
139
148
|
```
|
|
140
149
|
|
|
141
150
|
## Authentication
|
|
@@ -191,7 +200,7 @@ tigris whoami
|
|
|
191
200
|
|
|
192
201
|
### `configure` | `c`
|
|
193
202
|
|
|
194
|
-
Save credentials permanently. After running this, all commands
|
|
203
|
+
Save credentials permanently. After running this, all commands uses these credentials.
|
|
195
204
|
|
|
196
205
|
```
|
|
197
206
|
tigris configure [flags]
|
|
@@ -463,7 +472,7 @@ tigris objects get <bucket> <key> [flags]
|
|
|
463
472
|
#### `objects put`
|
|
464
473
|
|
|
465
474
|
```
|
|
466
|
-
tigris objects put <bucket> <key>
|
|
475
|
+
tigris objects put <bucket> <key> [file] [flags]
|
|
467
476
|
```
|
|
468
477
|
|
|
469
478
|
| Flag | Description |
|
package/dist/auth/client.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{a,b}from"../chunk-QZXBLNMQ.js";import"../chunk-6U4U4JM6.js";import"../chunk-JVB3Y42V.js";import"../chunk-D63SZLT5.js";export{a as TigrisAuthClient,b as getAuthClient};
|
package/dist/auth/config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{a,b,c}from"../chunk-6U4U4JM6.js";import"../chunk-D63SZLT5.js";export{b as TIGRIS_CLAIMS_NAMESPACE,a as getAuth0Config,c as getTigrisConfig};
|
package/dist/auth/s3-client.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a,b,c,d}from"../chunk-ESJWTUFN.js";import"../chunk-QZXBLNMQ.js";import"../chunk-6U4U4JM6.js";import"../chunk-JVB3Y42V.js";import"../chunk-D63SZLT5.js";export{a as getLoginMethod,c as getS3Client,b as getStorageConfig,d as isAuthenticated};
|
package/dist/auth/storage.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t}from"../chunk-JVB3Y42V.js";import"../chunk-D63SZLT5.js";export{t as clearAllData,q as clearCredentials,p as clearTemporaryCredentials,c as clearTokens,j as getAwsProfileConfig,k as getCredentials,h as getEnvCredentials,s as getLoginMethod,e as getOrganizations,m as getSavedCredentials,g as getSelectedOrganization,l as getStoredCredentials,b as getTokens,i as hasAwsProfile,n as storeCredentials,r as storeLoginMethod,d as storeOrganizations,f as storeSelectedOrganization,o as storeTemporaryCredentials,a as storeTokens};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{readFileSync as p}from"fs";import{join as a,dirname as c}from"path";import{fileURLToPath as m}from"url";import*as o from"yaml";var l=m(import.meta.url),u=c(l),s=null,f=a(u,"specs.yaml");function d(){if(!s){let n=p(f,"utf8");s=o.parse(n,{schema:"core"})}return s}function g(n,e){let r=d().commands.find(t=>t.name===n);return r?e&&r.operations?r.operations.find(t=>t.name===e)||null:r:null}function C(n,e,i){let r=g(n,i);return!r||!r.arguments?null:r.arguments.find(t=>t.name===e)||null}function h(n){return n.options?Array.isArray(n.options)&&typeof n.options[0]=="string"?n.options.map(e=>({name:e,message:e.charAt(0).toUpperCase()+e.slice(1),value:e})):Array.isArray(n.options)&&typeof n.options[0]=="object"?n.options.map(e=>({name:e.value,message:e.description?`${e.name} - ${e.description}`:e.name,value:e.value})):null:null}export{d as a,g as b,C as c,h as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as n,b as i}from"./chunk-D63SZLT5.js";function I(){let e=process.env.TIGRIS_ENV==="development",t=e?"auth-dev.tigris.dev":process.env.AUTH0_DOMAIN??"auth.tigris.dev",s=e?"JdJVYIyw0O1uHi5L5OJH903qaWBgd3gF":process.env.AUTH0_CLIENT_ID??"DMejqeM3CQ4IqTjEcd3oA9eEiT40hn8D",o=e?"https://tigris-api-dev":process.env.AUTH0_AUDIENCE??"https://tigris-os-api";return{domain:t,clientId:s,audience:o}}var p=process.env.TIGRIS_CLAIMS_NAMESPACE||"https://tigris";function T(){return process.env.TIGRIS_STORAGE_ENDPOINT||process.env.TIGRIS_IAM_ENDPOINT?{endpoint:process.env.TIGRIS_STORAGE_ENDPOINT||n,iamEndpoint:process.env.TIGRIS_IAM_ENDPOINT||i}:{endpoint:process.env.AWS_ENDPOINT_URL_S3||n,iamEndpoint:process.env.AWS_ENDPOINT_URL_IAM||i}}export{I as a,p as b,T as c};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as u}from"./chunk-4LGKN5DA.js";var a={success:"\u2714",failure:"\u2716",hint:"\u2192"};function r(){return process.stdout.isTTY===!0}function t(n){let s=u(n.command,n.operation);if(s)return s.messages}function o(n,s){let e=n;return e=e.replace(/\\n/g,`
|
|
2
|
+
`),s&&(e=e.replace(/\{\{(\w+)\}\}/g,(i,c)=>{let g=s[c];return g!==void 0?String(g):`{{${c}}}`})),e}function l(n,s){if(!r())return;let e=t(n);e?.onStart&&console.log(o(e.onStart,s))}function f(n,s){if(!r())return;let e=t(n);e?.onSuccess&&console.log(`${a.success} ${o(e.onSuccess,s)}`)}function m(n,s,e){let i=t(n);i?.onFailure&&console.error(`${a.failure} ${o(i.onFailure,e)}`),s&&console.error(` ${s}`)}function d(n,s){if(!r())return;let e=t(n);e?.onEmpty&&console.log(o(e.onEmpty,s))}function M(n,s){if(!r())return;let e=t(n);e?.onAlreadyDone&&console.log(o(e.onAlreadyDone,s))}function x(n,s){if(!r())return;let e=t(n);e?.hint&&console.log(`${a.hint} ${o(e.hint,s)}`)}function C(n,s){return{command:n,operation:s}}export{l as a,f as b,m as c,d,M as e,x as f,C as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var t="https://t3.storage.dev",s="https://iam.storageapi.dev",o="https://registry.npmjs.org/@tigrisdata/cli/latest",e=864e5;export{t as a,s as b,o as c,e as d};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as s,b as e,c,e as g,f as l,g as u}from"./chunk-A3TXP5Y2.js";import{b as a}from"./chunk-QZXBLNMQ.js";import{f as r}from"./chunk-JVB3Y42V.js";var t=u("login","oauth");async function f(){s(t);try{let n=a();if(await n.isAuthenticated()){g(t);return}await n.login({onDeviceCode:(o,p)=>{console.log(`
|
|
2
|
+
Your confirmation code: ${o}
|
|
3
|
+
`),console.log(`If browser doesn't open, visit: ${p}`)},onWaiting:()=>console.log(`
|
|
4
|
+
Waiting for authentication...`)});let i=await n.getOrganizations();if(i.length>0){let o=i[0];await r(o.id),e(t,{org:o.displayName||o.name}),i.length>1&&l(t,{count:i.length})}else e(t,{org:"none"})}catch{c(t),process.exit(1)}}var A=f;export{f as a,A as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as f}from"./chunk-QZXBLNMQ.js";import{a as A,c as w}from"./chunk-6U4U4JM6.js";import{g as d,h as g,i as l,j as p,l as o,s as h}from"./chunk-JVB3Y42V.js";import{a as u}from"./chunk-D63SZLT5.js";import{S3Client as a}from"@aws-sdk/client-s3";import{fromIni as C}from"@aws-sdk/credential-providers";var r=w(),T=A();async function y(){return h()}async function O(){if(l()){let e=process.env.AWS_PROFILE||"default",s=await p(e),i=await C({profile:e})();return{accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey,endpoint:s.endpoint||r.endpoint||u,iamEndpoint:s.iamEndpoint||r.iamEndpoint}}let c=await y();if(c==="oauth"){let s=await f().getAccessToken();if(!d())throw new Error('No organization selected. Please run "tigris orgs select" first.');return{sessionToken:s,accessKeyId:"",secretAccessKey:"",endpoint:r.endpoint,organizationId:d()??void 0,iamEndpoint:r.iamEndpoint,authDomain:T.domain}}if(c==="credentials"){let e=o();if(e)return{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,endpoint:e.endpoint}}let t=g();if(t)return{accessKeyId:t.accessKeyId,secretAccessKey:t.secretAccessKey,endpoint:t.endpoint};let n=o();if(n)return{accessKeyId:n.accessKeyId,secretAccessKey:n.secretAccessKey,endpoint:n.endpoint};throw new Error('Not authenticated. Please run "tigris login" or "tigris configure" first.')}async function v(){if(l()){let e=process.env.AWS_PROFILE||"default",s=await p(e);return new a({region:"auto",endpoint:s.endpoint||r.endpoint||u,credentials:C({profile:e})})}let c=await y();if(c==="oauth"){let s=await f().getAccessToken(),i=d();if(!i)throw new Error('No organization selected. Please run "tigris orgs select" first.');let K=new a({region:"auto",endpoint:r.endpoint,credentials:{sessionToken:s,accessKeyId:"",secretAccessKey:""}});return K.middlewareStack.add(I=>async m=>{let E=m.request;return E.headers["x-Tigris-Namespace"]=i,await I(m)},{name:"x-Tigris-Namespace-Middleware",step:"build",override:!0}),K}if(c==="credentials"){let e=o();if(e)return new a({region:"auto",endpoint:e.endpoint,credentials:{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey}})}let t=g();if(t)return new a({region:"auto",endpoint:t.endpoint,credentials:{accessKeyId:t.accessKeyId,secretAccessKey:t.secretAccessKey}});let n=o();if(n)return new a({region:"auto",endpoint:n.endpoint,credentials:{accessKeyId:n.accessKeyId,secretAccessKey:n.secretAccessKey}});throw new Error('Not authenticated. Please run "tigris login" or "tigris configure" first.')}async function z(){return l()||await y()!==null||g()!==null||o()!==null}export{y as a,O as b,v as c,z as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as u,b as o,c as m,g}from"./chunk-A3TXP5Y2.js";import{m as i,o as d,r as y}from"./chunk-JVB3Y42V.js";import{a as n}from"./chunk-D63SZLT5.js";import p from"enquirer";var{prompt:S}=p,t=g("login","credentials");async function l(e){u(t);let s=e["access-key"]||e.accessKey||e.key||e.Key||e.accesskey,c=e["access-secret"]||e.accessSecret||e.secret||e.Secret||e.accesssecret;if(!s||!c){let r=[];s||r.push({type:"input",name:"accessKey",message:"Access Key ID:",required:!0}),c||r.push({type:"password",name:"accessSecret",message:"Secret Access Key:",required:!0});let a=await S(r);s=s||a.accessKey,c=c||a.accessSecret}(!s||!c)&&(m(t,"Access key and secret are required"),process.exit(1));let f=i()?.endpoint||n;await d({accessKeyId:s,secretAccessKey:c,endpoint:f}),await y("credentials"),o(t)}export{l as a};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
function k(n){if(n===0)return"0 B";let e=["B","KB","MB","GB","TB"],t=Math.floor(Math.log(n)/Math.log(1024));return`${(n/Math.pow(1024,t)).toFixed(t>0?1:0)} ${e[t]}`}function l(n){return JSON.stringify(n,null,2)}function m(n){return String(n).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function w(n,e=" "){return Object.entries(n).map(([t,r])=>`${e}<${t}>${m(r)}</${t}>`).join(`
|
|
2
|
+
`)}function T(n,e,t){let r=[`<${e}>`];return n.forEach(i=>{r.push(` <${t}>`),r.push(w(i," ")),r.push(` </${t}>`)}),r.push(`</${e}>`),r.join(`
|
|
3
|
+
`)}function f(n){if(n==null)return"";if(n instanceof Date)return h(n);if(typeof n=="string"){let e=new Date(n);if(!isNaN(e.getTime())&&n.includes("T"))return h(e)}return String(n)}function h(n){return new Intl.DateTimeFormat(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(n)}function x(n,e){return e.map(t=>{if(t.width)return t.width;let r=t.header.length,i=n.reduce((a,u)=>{let s=f(u[t.key]);return Math.max(a,s.length)},0);return Math.max(r,i)})}function j(n,e){let t=[],r=x(n,e),i="\u250C"+r.map(o=>"\u2500".repeat(o+2)).join("\u252C")+"\u2510",a="\u251C"+r.map(o=>"\u2500".repeat(o+2)).join("\u253C")+"\u2524",u="\u2514"+r.map(o=>"\u2500".repeat(o+2)).join("\u2534")+"\u2518";t.push(`
|
|
4
|
+
`+i);let s="\u2502 "+e.map((o,c)=>o.header.padEnd(r[c])).join(" \u2502 ")+" \u2502";return t.push(s),t.push(a),n.forEach(o=>{let c=e.map((g,d)=>{let p=f(o[g.key]);return g.align==="right"?p.padStart(r[d]):p.padEnd(r[d])});t.push("\u2502 "+c.join(" \u2502 ")+" \u2502")}),t.push(u+`
|
|
5
|
+
`),t.join(`
|
|
6
|
+
`)}function $(n,e,t,r,i){switch(e){case"json":return l(n);case"xml":return T(n,t,r);default:return j(n,i)}}export{k as a,l as b,w as c,T as d,j as e,$ as f};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(n,r,o){for(let e of r)if(n[e]!==void 0)return n[e];return o}function f(n){if(n!==void 0)return typeof n=="boolean"?n:n==="true"}export{t as a,f as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as l}from"./chunk-D63SZLT5.js";import{homedir as d,platform as C}from"os";import{join as r}from"path";import{readFileSync as m,writeFileSync as S,existsSync as c,mkdirSync as y,chmodSync as _}from"fs";import{execFileSync as E}from"child_process";import{loadSharedConfigFiles as I}from"@smithy/shared-ini-file-loader";var s=r(d(),".tigris"),a=r(s,"config.json");function u(n,e){if(C()==="win32")try{let i=process.env.USERNAME;i&&E("icacls",[n,"/inheritance:r","/grant:r",`${i}:F`],{stdio:"ignore"})}catch{console.warn(`Warning: Could not set restrictive permissions on ${n}. It may be accessible to other users.`)}else try{_(n,e)}catch{console.warn(`Warning: Could not set restrictive permissions on ${n}. It may be accessible to other users.`)}}function T(){c(s)||(y(s,{recursive:!0,mode:448}),u(s,448))}function o(){if(c(a))try{let n=m(a,"utf8");return JSON.parse(n)}catch{return{}}return{}}async function t(n){T(),S(a,JSON.stringify(n,null,2),{mode:384}),u(a,384)}async function h(n){let e=o();e.tokens=n,await t(e)}async function z(){return o().tokens||null}async function G(){let n=o();delete n.tokens,await t(n)}async function k(n){let e=o();e.organizations=n,await t(e)}function K(){return o().organizations||[]}async function D(n){let e=o();e.selectedOrganization=n,await t(e)}function F(){return o().selectedOrganization||null}function v(){if(process.env.TIGRIS_STORAGE_ACCESS_KEY_ID||process.env.TIGRIS_STORAGE_SECRET_ACCESS_KEY){let f=process.env.TIGRIS_STORAGE_ACCESS_KEY_ID,g=process.env.TIGRIS_STORAGE_SECRET_ACCESS_KEY;if(!f||!g)return null;let p=process.env.TIGRIS_STORAGE_ENDPOINT||l;return{accessKeyId:f,secretAccessKey:g,endpoint:p}}let n=process.env.AWS_ACCESS_KEY_ID,e=process.env.AWS_SECRET_ACCESS_KEY;if(!n||!e)return null;let i=process.env.AWS_ENDPOINT_URL_S3||l;return{accessKeyId:n,secretAccessKey:e,endpoint:i}}function N(){if(!process.env.AWS_PROFILE)return!1;let n=r(d(),".aws");return c(r(n,"credentials"))||c(r(n,"config"))}async function b(n){try{let{configFile:e}=await I(),i=e[n];return i?{endpoint:i.endpoint_url_s3||i.endpoint_url,iamEndpoint:i.endpoint_url_iam,region:i.region}:{}}catch{return{}}}function L(){let n=o();return v()||n.temporaryCredentials||n.credentials||null}function M(){let n=o();return n.temporaryCredentials||n.credentials||null}function W(){return o().credentials||null}async function Y(n){let e=o();e.credentials=n,await t(e)}async function j(n){let e=o();e.temporaryCredentials=n,await t(e)}async function U(){let n=o();delete n.temporaryCredentials,await t(n)}async function $(){let n=o();delete n.credentials,await t(n)}async function J(n){let e=o();e.loginMethod=n,await t(e)}function q(){return o().loginMethod||null}async function B(){let e=o().credentials;await t({credentials:e})}export{h as a,z as b,G as c,k as d,K as e,D as f,F as g,v as h,N as i,b as j,L as k,M as l,W as m,Y as n,j as o,U as p,$ as q,J as r,q as s,B as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{list as g}from"@tigrisdata/storage";var f=["t3://","tigris://"];function p(t){return f.some(e=>t.startsWith(e))}function c(t){let e=f.find(r=>t.startsWith(r));return s(t.slice(e.length))}function s(t){let e=t.split("/");return{bucket:e[0],path:e.slice(1).join("/")}}async function m(t,e,r){let{data:i}=await g({prefix:`${e}/`,limit:1,config:{...r,bucket:t}});return!!(i?.items&&i.items.length>0)}function l(t,e){return{source:s(t),destination:s(e)}}function d(t){return p(t)?c(t):s(t)}function P(t){let e=t.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,"[^/]*");return new RegExp("^"+e+"$")}function x(t){let e=t.indexOf("*"),r=t.lastIndexOf("/",e);return r>=0?t.slice(0,r+1):""}async function h(t,e,r){let i=[],o;do{let{data:n,error:a}=await g({prefix:e,paginationToken:o,config:{...r,bucket:t}});if(a)return{items:i,error:a};n?.items&&i.push(...n.items),o=n?.hasMore?n.paginationToken:void 0}while(o);return{items:i}}export{p as a,c as b,s as c,m as d,l as e,d as f,P as g,x as h,h as i};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as g,b as k}from"./chunk-6U4U4JM6.js";import{a as c,b as s,c as l,d as p,e as u,r as h}from"./chunk-JVB3Y42V.js";import a from"axios";import w from"open";import{createRemoteJWKSet as T,jwtVerify as y}from"jose";var f=class{config;baseUrl;jwks=null;constructor(){this.config=g(),this.baseUrl=`https://${this.config.domain}`}getJWKS(){return this.jwks||(this.jwks=T(new URL(`${this.baseUrl}/.well-known/jwks.json`))),this.jwks}async verifyIdToken(e){let{payload:t}=await y(e,this.getJWKS(),{issuer:`${this.baseUrl}/`,audience:this.config.clientId});return t}async login(e){let o=(await a.post(`${this.baseUrl}/oauth/device/code`,{client_id:this.config.clientId,audience:this.config.audience,scope:"openid profile email offline_access"},{headers:{"Content-Type":"application/x-www-form-urlencoded"}})).data;e?.onDeviceCode?.(o.user_code,o.verification_uri),await this.sleep(2e3);try{await w(o.verification_uri_complete)}catch{}e?.onWaiting?.();let n=await this.pollForToken(o.device_code,o.interval||5);await c(n),h("oauth"),await this.extractAndStoreOrganizations(n.idToken)}async pollForToken(e,t){let n=0;for(;n<60;){n++;try{let r=(await a.post(`${this.baseUrl}/oauth/token`,{client_id:this.config.clientId,device_code:e,grant_type:"urn:ietf:params:oauth:grant-type:device_code"},{headers:{"Content-Type":"application/x-www-form-urlencoded"}})).data;if(!r.id_token)throw new Error("No ID token found. Please try again.");if((await this.verifyIdToken(r.id_token)).email_verified===!1)throw console.log("Email not verified. Please verify your email and try again."),new Error("Email not verified. Please verify your email and try again.");let m=Date.now()+(r.expires_in||3600)*1e3;return{accessToken:r.access_token,refreshToken:r.refresh_token,idToken:r.id_token,expiresAt:m}}catch(i){if(a.isAxiosError(i)&&i.response){let r=i.response.data?.error;if(r==="authorization_pending"){await this.sleep(t*1e3);continue}if(r==="slow_down"){t+=5,await this.sleep(t*1e3);continue}throw new Error(i.response.data?.error_description||"Authentication failed")}throw i}}throw new Error("Authentication timed out. Please try again.")}async getAccessToken(){let e=await s();if(!e)throw new Error('Not authenticated. Please run "tigris login" to authenticate.');let t=300*1e3;return Date.now()+t>=e.expiresAt&&(e=await this.refreshAccessToken(e)),e.accessToken}async refreshAccessToken(e){let t=null;if(e?.refreshToken?t=e:t=await s(),!t)throw new Error('No refresh token available. Please run "tigris login" to re-authenticate.');try{let n=(await a.post(`${this.baseUrl}/oauth/token`,{client_id:this.config.clientId,grant_type:"refresh_token",refresh_token:t.refreshToken,scope:"openid profile email offline_access"},{headers:{"Content-Type":"application/x-www-form-urlencoded"}})).data,i={accessToken:n.access_token,refreshToken:n.refresh_token||t.refreshToken,idToken:n.id_token||t.idToken,expiresAt:Date.now()+(n.expires_in||3600)*1e3};return await c(i),i}catch{throw await l(),new Error('Token refresh failed. Please run "tigris login" to re-authenticate.')}}async getIdTokenClaims(){let e=await s();if(!e||!e.idToken)throw new Error('Not authenticated. Please run "tigris login" to authenticate.');try{return await this.verifyIdToken(e.idToken)}catch{throw new Error('ID token verification failed. Please run "tigris login" to re-authenticate.')}}async extractAndStoreOrganizations(e){if(e)try{let o=(await this.verifyIdToken(e))[k];if(!o)return;let n=o?.ns?.map(i=>typeof i=="object"&&i!==null?{id:i.id,name:i.name,displayName:i.name}:{id:i,name:i,displayName:i})||[];if(n.length===0)return;p(n)}catch{}}async getOrganizations(){return await this.getAccessToken(),u()}async logout(){await l()}async isAuthenticated(){return await s()!==null}sleep(e){return new Promise(t=>setTimeout(t,e))}},d=null;function S(){return d||(d=new f),d}export{f as a,S as b};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import{a as C,c as A}from"./chunk-TUJTXB5G.js";import{a as w}from"./chunk-4LGKN5DA.js";import{Command as v}from"commander";import{existsSync as q}from"fs";import{join as c,dirname as k}from"path";import{fileURLToPath as R}from"url";process.on("unhandledRejection",e=>{(e===""||e===void 0)&&(console.error(`
|
|
2
|
+
Operation cancelled`),process.exit(1)),console.error(`
|
|
3
|
+
Error:`,e instanceof Error?e.message:e),process.exit(1)});process.on("uncaughtException",e=>{console.error(`
|
|
4
|
+
Error:`,e.message),process.exit(1)});var P=R(import.meta.url),d=k(P),l=w();function y(e,t){return(t?[c(d,"lib",e,`${t}.js`),c(d,"lib",e,t,"index.js")]:[c(d,"lib",`${e}.js`),c(d,"lib",e,"index.js")]).some(o=>q(o))}function E(e){let t;e.type==="positional"?t=` ${e.name}`:(t=` --${e.name}`,e.alias&&e.alias.length===1&&(t+=`, -${e.alias}`));let n=26,o=t.length>=n?t+" ":t.padEnd(n),s=e.description;return e.options&&(Array.isArray(e.options)&&typeof e.options[0]=="string"?s+=` (options: ${e.options.join(", ")})`:s+=` (options: ${e.options.map(i=>i.value).join(", ")})`),e.default&&(s+=` [default: ${e.default}]`),e.required&&(s+=" [required]"),e["required-when"]&&(s+=` [required when: ${e["required-when"]}]`),e.multiple&&(s+=" [multiple values: comma-separated]"),e.type==="positional"&&(s+=" [positional argument]"),e.examples&&e.examples.length>0&&(s+=` (examples: ${e.examples.join(", ")})`),`${o}${s}`}function b(e){if(console.log(`
|
|
5
|
+
${l.name} ${e.name} - ${e.description}
|
|
6
|
+
`),e.operations&&e.operations.length>0){let t=e.operations.filter(n=>y(e.name,n.name));t.length>0&&(console.log("Operations:"),t.forEach(n=>{let o=` ${n.name}`;if(n.alias){let i=Array.isArray(n.alias)?n.alias:[n.alias];o+=` (${i.join(", ")})`}let s=o.padEnd(24);console.log(`${s}${n.description}`)}),console.log())}e.arguments&&e.arguments.length>0&&(console.log("Arguments:"),e.arguments.forEach(t=>{console.log(E(t))}),console.log()),console.log(`Use "${l.name} ${e.name} <operation> help" for more information about an operation.`)}function U(e,t){console.log(`
|
|
7
|
+
${l.name} ${e.name} ${t.name} - ${t.description}
|
|
8
|
+
`),t.arguments&&t.arguments.length>0&&(console.log("Arguments:"),t.arguments.forEach(n=>{console.log(E(n))}),console.log())}function V(e){return y(e.name)?!0:e.operations?e.operations.some(t=>y(e.name,t.name)):!1}function x(){console.log(`Tigris CLI Version: ${C}
|
|
9
|
+
`),console.log(`Usage: tigris [command] [options]
|
|
10
|
+
`),console.log("Commands:"),l.commands.filter(V).forEach(t=>{let n=` ${t.name}`;t.alias&&(n+=` (${t.alias})`);let o=n.padEnd(24);console.log(`${o}${t.description}`)}),console.log(`
|
|
11
|
+
Use "${l.name} <command> help" for more information about a command.`)}function m(e,t=[]){t.forEach(n=>{if(n.type==="positional"){let o=n.required?`<${n.name}>`:`[${n.name}]`;e.argument(o,n.description)}else{let s=n.alias&&n.alias.length===1?`-${n.alias}, --${n.name}`:`--${n.name}`;n.type==="flag"||(n.type==="boolean"?s+=" [value]":n.options?s+=" <value>":s+=n.required||n["required-when"]?" <value>":" [value]"),e.option(s,n.description,n.default)}})}function g(e,t){for(let n of e){if(n["required-when"]){let[o,s]=n["required-when"].split("="),i=h(t,o,e),r=h(t,n.name,e);if(i===s&&!r)return console.error(`--${n.name} is required when --${o} is ${s}`),!1}if(n.required&&!h(t,n.name,e))return console.error(`--${n.name} is required`),!1}return!0}function h(e,t,n){if(n){let s=n.find(i=>i.name===t);if(s&&s.alias){let i=s.alias.charAt(0).toUpperCase()+s.alias.slice(1);if(e[i]!==void 0)return e[i]}}let o=[t,t.replace(/-/g,""),t.replace(/-/g,"").toLowerCase(),t.charAt(0).toUpperCase(),_(t)];for(let s of o)if(e[s]!==void 0)return e[s]}function _(e){return e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}async function D(e,t){let n=t?[`./lib/${e}/${t}.js`,`./lib/${e}/${t}/index.js`]:[`./lib/${e}.js`,`./lib/${e}/index.js`];for(let s of n){let i=await import(s).catch(()=>null);if(i)return{module:i,error:null}}return{module:null,error:`Command not found: ${t?`${e} ${t}`:e}`}}async function $(e,t,n=[],o={},s){if(s){let j=s.replace(/\\n/g,`
|
|
12
|
+
`);console.log(j)}let{module:i,error:r}=await D(e,t);(r||!i)&&(console.error(r),process.exit(1));let a=t||e,p=i.default||i[a];typeof p!="function"&&(console.error(`Command not implemented: ${a}`),process.exit(1)),await p({...o,_positional:n})}var f=new v;f.name(l.name).description(l.description).version(l.version);function u(e,t,n){let o;"optsWithGlobals"in n&&typeof n.optsWithGlobals=="function"?o=n.optsWithGlobals():"opts"in n&&typeof n.opts=="function"?o=n.opts():o=n;let s={...o};return e.filter(r=>r.type==="positional").forEach((r,a)=>{t[a]!==void 0&&(r.multiple?s[r.name]=t[a].split(",").map(p=>p.trim()):s[r.name]=t[a])}),e.forEach(r=>{r.multiple&&r.type!=="positional"&&s[r.name]&&typeof s[r.name]=="string"&&(s[r.name]=s[r.name].split(",").map(a=>a.trim()))}),s}l.commands.forEach(e=>{let t=f.command(e.name).description(e.description);if(e.alias&&t.alias(e.alias),e.operations&&e.operations.length>0)if(e.operations.forEach(n=>{let o=t.command(n.name).description(n.description);n.alias&&(Array.isArray(n.alias)?n.alias:[n.alias]).forEach(i=>o.alias(i)),m(o,n.arguments),o.action(async(...s)=>{let i=s.pop(),r=s;n.arguments&&!g(n.arguments,u(n.arguments,r,i))||await $(e.name,n.name,r,u(n.arguments||[],r,i),n.message)}),o.command("help").description("Show help for this operation").action(()=>{U(e,n)})}),e.default){let n=e.operations?.find(o=>o.name===e.default);if(n){m(t,e.arguments),m(t,n.arguments);let o=[...e.arguments||[],...n.arguments||[]];t.action(async(...s)=>{let i=s.pop(),r=s;o.length>0&&!g(o,u(o,r,i))||await $(e.name,n.name,r,u(o,r,i),e.message||n.message)})}}else t.action(()=>{b(e)});else m(t,e.arguments),t.action(async(...n)=>{let o=n.pop(),s=n;e.arguments&&!g(e.arguments,u(e.arguments,s,o))||await $(e.name,void 0,s,u(e.arguments||[],s,o),e.message)});t.command("help").description("Show help for this command").action(()=>{b(e)})});f.command("help").description("Show general help").action(()=>{x()});f.action(()=>{x()});f.parse();A();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{c as p,d as u}from"./chunk-D63SZLT5.js";import{readFileSync as h,writeFileSync as y,mkdirSync as v}from"fs";import{join as d}from"path";import{homedir as m}from"os";import b from"https";var c="2.6.2";var f=d(m(),".tigris","update-check.json");function C(){try{let e=h(f,"utf-8"),i=JSON.parse(e);return typeof i.latestVersion=="string"&&typeof i.lastChecked=="number"?i:null}catch{return null}}function k(e){try{v(d(m(),".tigris"),{recursive:!0}),y(f,JSON.stringify(e),"utf-8")}catch{}}function x(e,i){let n=t=>{let a=(t.startsWith("v")?t.slice(1):t).split(".");if(a.length!==3)return null;let o=a.map(Number);return o.some(isNaN)?null:o},s=n(e),r=n(i);if(!s||!r)return!1;for(let t=0;t<3;t++){if(r[t]>s[t])return!0;if(r[t]<s[t])return!1}return!1}function T(){try{let e=b.get(p,{timeout:5e3},i=>{let n="";i.on("data",s=>{n+=s}),i.on("end",()=>{try{let s=JSON.parse(n);typeof s.version=="string"&&k({latestVersion:s.version,lastChecked:Date.now()})}catch{}})});e.on("error",()=>{}),e.on("timeout",()=>{e.destroy()}),e.end(),e.unref()}catch{}}function V(){if(process.env.TIGRIS_NO_UPDATE_CHECK==="1"||!process.stdout.isTTY)return;let e=C();if(e&&x(c,e.latestVersion)){let n=`Update available: ${c} \u2192 ${e.latestVersion}`,s="Run `npm install -g @tigrisdata/cli` to upgrade.",r=Math.max(n.length,s.length)+4,t="\u250C"+"\u2500".repeat(r-2)+"\u2510",l="\u2514"+"\u2500".repeat(r-2)+"\u2518",a=o=>"\u2502 "+o.padEnd(r-4)+" \u2502";console.log(`
|
|
2
|
+
${t}
|
|
3
|
+
${a("")}
|
|
4
|
+
${a(n)}
|
|
5
|
+
${a(s)}
|
|
6
|
+
${a("")}
|
|
7
|
+
${l}
|
|
8
|
+
`)}let i=Number(process.env.TIGRIS_UPDATE_CHECK_INTERVAL_MS)||864e5;(!e||Date.now()-e.lastChecked>i)&&T()}export{c as a,x as b,V as c};
|
package/dist/cli.js
CHANGED
|
@@ -1,13 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
3
|
-
Operation cancelled`),process.exit(1)),console.error(`
|
|
4
|
-
Error:`,e instanceof Error?e.message:e),process.exit(1)});process.on("uncaughtException",e=>{console.error(`
|
|
5
|
-
Error:`,e.message),process.exit(1)});var D=P(import.meta.url),p=R(D),V=u(p,"specs.yaml"),M=k(V,"utf8"),l=C.parse(M);function y(e,t){return(t?[u(p,"lib",e,`${t}.js`),u(p,"lib",e,t,"index.js")]:[u(p,"lib",`${e}.js`),u(p,"lib",e,"index.js")]).some(i=>q(i))}function v(e){let t;e.type==="positional"?t=` ${e.name}`:(t=` --${e.name}`,e.alias&&e.alias.length===1&&(t+=`, -${e.alias}`));let n=26,i=t.length>=n?t+" ":t.padEnd(n),s=e.description;return e.options&&(Array.isArray(e.options)&&typeof e.options[0]=="string"?s+=` (options: ${e.options.join(", ")})`:s+=` (options: ${e.options.map(o=>o.value).join(", ")})`),e.default&&(s+=` [default: ${e.default}]`),e.required&&(s+=" [required]"),e["required-when"]&&(s+=` [required when: ${e["required-when"]}]`),e.multiple&&(s+=" [multiple values: comma-separated]"),e.type==="positional"&&(s+=" [positional argument]"),e.examples&&e.examples.length>0&&(s+=` (examples: ${e.examples.join(", ")})`),`${i}${s}`}function w(e){if(console.log(`
|
|
6
|
-
${l.name} ${e.name} - ${e.description}
|
|
7
|
-
`),e.operations&&e.operations.length>0){let t=e.operations.filter(n=>y(e.name,n.name));t.length>0&&(console.log("Operations:"),t.forEach(n=>{let i=` ${n.name}`;if(n.alias){let o=Array.isArray(n.alias)?n.alias:[n.alias];i+=` (${o.join(", ")})`}let s=i.padEnd(24);console.log(`${s}${n.description}`)}),console.log())}e.arguments&&e.arguments.length>0&&(console.log("Arguments:"),e.arguments.forEach(t=>{console.log(v(t))}),console.log()),console.log(`Use "${l.name} ${e.name} <operation> help" for more information about an operation.`)}function U(e,t){console.log(`
|
|
8
|
-
${l.name} ${e.name} ${t.name} - ${t.description}
|
|
9
|
-
`),t.arguments&&t.arguments.length>0&&(console.log("Arguments:"),t.arguments.forEach(n=>{console.log(v(n))}),console.log())}function T(e){return y(e.name)?!0:e.operations?e.operations.some(t=>y(e.name,t.name)):!1}function A(){console.log(`Tigris CLI Version: ${b}
|
|
10
|
-
`),console.log(`Usage: tigris [command] [options]
|
|
11
|
-
`),console.log("Commands:"),l.commands.filter(T).forEach(t=>{let n=` ${t.name}`;t.alias&&(n+=` (${t.alias})`);let i=n.padEnd(24);console.log(`${i}${t.description}`)}),console.log(`
|
|
12
|
-
Use "${l.name} <command> help" for more information about a command.`)}function m(e,t=[]){t.forEach(n=>{if(n.type==="positional"){let i=n.required?`<${n.name}>`:`[${n.name}]`;e.argument(i,n.description)}else{let s=n.alias&&n.alias.length===1?`-${n.alias}, --${n.name}`:`--${n.name}`;n.type==="flag"||(n.type==="boolean"?s+=" [value]":n.options?s+=" <value>":s+=n.required||n["required-when"]?" <value>":" [value]"),e.option(s,n.description,n.default)}})}function g(e,t){for(let n of e){if(n["required-when"]){let[i,s]=n["required-when"].split("="),o=h(t,i,e),r=h(t,n.name,e);if(o===s&&!r)return console.error(`--${n.name} is required when --${i} is ${s}`),!1}if(n.required&&!h(t,n.name,e))return console.error(`--${n.name} is required`),!1}return!0}function h(e,t,n){if(n){let s=n.find(o=>o.name===t);if(s&&s.alias){let o=s.alias.charAt(0).toUpperCase()+s.alias.slice(1);if(e[o]!==void 0)return e[o]}}let i=[t,t.replace(/-/g,""),t.replace(/-/g,"").toLowerCase(),t.charAt(0).toUpperCase(),_(t)];for(let s of i)if(e[s]!==void 0)return e[s]}function _(e){return e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}async function H(e,t){let n=t?[`./lib/${e}/${t}.js`,`./lib/${e}/${t}/index.js`]:[`./lib/${e}.js`,`./lib/${e}/index.js`];for(let s of n){let o=await import(s).catch(()=>null);if(o)return{module:o,error:null}}return{module:null,error:`Command not found: ${t?`${e} ${t}`:e}`}}async function $(e,t,n=[],i={},s){if(s){let x=s.replace(/\\n/g,`
|
|
13
|
-
`);console.log(x)}let{module:o,error:r}=await H(e,t);(r||!o)&&(console.error(r),process.exit(1));let a=t||e,d=o.default||o[a];typeof d!="function"&&(console.error(`Command not implemented: ${a}`),process.exit(1)),await d({...i,_positional:n})}var f=new E;f.name(l.name).description(l.description).version(l.version);function c(e,t,n){let i;"optsWithGlobals"in n&&typeof n.optsWithGlobals=="function"?i=n.optsWithGlobals():"opts"in n&&typeof n.opts=="function"?i=n.opts():i=n;let s={...i};return e.filter(r=>r.type==="positional").forEach((r,a)=>{t[a]!==void 0&&(r.multiple?s[r.name]=t[a].split(",").map(d=>d.trim()):s[r.name]=t[a])}),e.forEach(r=>{r.multiple&&r.type!=="positional"&&s[r.name]&&typeof s[r.name]=="string"&&(s[r.name]=s[r.name].split(",").map(a=>a.trim()))}),s}l.commands.forEach(e=>{let t=f.command(e.name).description(e.description);if(e.alias&&t.alias(e.alias),e.operations&&e.operations.length>0)if(e.operations.forEach(n=>{let i=t.command(n.name).description(n.description);n.alias&&(Array.isArray(n.alias)?n.alias:[n.alias]).forEach(o=>i.alias(o)),m(i,n.arguments),i.action(async(...s)=>{let o=s.pop(),r=s;n.arguments&&!g(n.arguments,c(n.arguments,r,o))||await $(e.name,n.name,r,c(n.arguments||[],r,o),n.message)}),i.command("help").description("Show help for this operation").action(()=>{U(e,n)})}),e.default){let n=e.operations?.find(i=>i.name===e.default);if(n){m(t,e.arguments),m(t,n.arguments);let i=[...e.arguments||[],...n.arguments||[]];t.action(async(...s)=>{let o=s.pop(),r=s;i.length>0&&!g(i,c(i,r,o))||await $(e.name,n.name,r,c(i,r,o),e.message||n.message)})}}else t.action(()=>{w(e)});else m(t,e.arguments),t.action(async(...n)=>{let i=n.pop(),s=n;e.arguments&&!g(e.arguments,c(e.arguments,s,i))||await $(e.name,void 0,s,c(e.arguments||[],s,i),e.message)});t.command("help").description("Show help for this command").action(()=>{w(e)})});f.command("help").description("Show general help").action(()=>{A()});f.action(()=>{A()});f.parse();
|
|
2
|
+
import"./chunk-TPUZYSCZ.js";import"./chunk-TUJTXB5G.js";import"./chunk-4LGKN5DA.js";import"./chunk-D63SZLT5.js";
|
package/dist/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{a,b,c,d}from"./chunk-D63SZLT5.js";export{b as DEFAULT_IAM_ENDPOINT,a as DEFAULT_STORAGE_ENDPOINT,c as NPM_REGISTRY_URL,d as UPDATE_CHECK_INTERVAL_MS};
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
Operation cancelled`),process.exit(1)),console.error(`
|
|
3
|
-
Error:`,e instanceof Error?e.message:e),process.exit(1)});process.on("uncaughtException",e=>{console.error(`
|
|
4
|
-
Error:`,e.message),process.exit(1)});var D=P(import.meta.url),u=R(D),V=p(u,"specs.yaml"),M=k(V,"utf8"),l=C.parse(M);function y(e,t){return(t?[p(u,"lib",e,`${t}.js`),p(u,"lib",e,t,"index.js")]:[p(u,"lib",`${e}.js`),p(u,"lib",e,"index.js")]).some(i=>q(i))}function v(e){let t;e.type==="positional"?t=` ${e.name}`:(t=` --${e.name}`,e.alias&&e.alias.length===1&&(t+=`, -${e.alias}`));let n=26,i=t.length>=n?t+" ":t.padEnd(n),s=e.description;return e.options&&(Array.isArray(e.options)&&typeof e.options[0]=="string"?s+=` (options: ${e.options.join(", ")})`:s+=` (options: ${e.options.map(o=>o.value).join(", ")})`),e.default&&(s+=` [default: ${e.default}]`),e.required&&(s+=" [required]"),e["required-when"]&&(s+=` [required when: ${e["required-when"]}]`),e.multiple&&(s+=" [multiple values: comma-separated]"),e.type==="positional"&&(s+=" [positional argument]"),e.examples&&e.examples.length>0&&(s+=` (examples: ${e.examples.join(", ")})`),`${i}${s}`}function w(e){if(console.log(`
|
|
5
|
-
${l.name} ${e.name} - ${e.description}
|
|
6
|
-
`),e.operations&&e.operations.length>0){let t=e.operations.filter(n=>y(e.name,n.name));t.length>0&&(console.log("Operations:"),t.forEach(n=>{let i=` ${n.name}`;if(n.alias){let o=Array.isArray(n.alias)?n.alias:[n.alias];i+=` (${o.join(", ")})`}let s=i.padEnd(24);console.log(`${s}${n.description}`)}),console.log())}e.arguments&&e.arguments.length>0&&(console.log("Arguments:"),e.arguments.forEach(t=>{console.log(v(t))}),console.log()),console.log(`Use "${l.name} ${e.name} <operation> help" for more information about an operation.`)}function U(e,t){console.log(`
|
|
7
|
-
${l.name} ${e.name} ${t.name} - ${t.description}
|
|
8
|
-
`),t.arguments&&t.arguments.length>0&&(console.log("Arguments:"),t.arguments.forEach(n=>{console.log(v(n))}),console.log())}function T(e){return y(e.name)?!0:e.operations?e.operations.some(t=>y(e.name,t.name)):!1}function A(){console.log(`Tigris CLI Version: ${b}
|
|
9
|
-
`),console.log(`Usage: tigris [command] [options]
|
|
10
|
-
`),console.log("Commands:"),l.commands.filter(T).forEach(t=>{let n=` ${t.name}`;t.alias&&(n+=` (${t.alias})`);let i=n.padEnd(24);console.log(`${i}${t.description}`)}),console.log(`
|
|
11
|
-
Use "${l.name} <command> help" for more information about a command.`)}function m(e,t=[]){t.forEach(n=>{if(n.type==="positional"){let i=n.required?`<${n.name}>`:`[${n.name}]`;e.argument(i,n.description)}else{let s=n.alias&&n.alias.length===1?`-${n.alias}, --${n.name}`:`--${n.name}`;n.type==="flag"||(n.type==="boolean"?s+=" [value]":n.options?s+=" <value>":s+=n.required||n["required-when"]?" <value>":" [value]"),e.option(s,n.description,n.default)}})}function g(e,t){for(let n of e){if(n["required-when"]){let[i,s]=n["required-when"].split("="),o=h(t,i,e),r=h(t,n.name,e);if(o===s&&!r)return console.error(`--${n.name} is required when --${i} is ${s}`),!1}if(n.required&&!h(t,n.name,e))return console.error(`--${n.name} is required`),!1}return!0}function h(e,t,n){if(n){let s=n.find(o=>o.name===t);if(s&&s.alias){let o=s.alias.charAt(0).toUpperCase()+s.alias.slice(1);if(e[o]!==void 0)return e[o]}}let i=[t,t.replace(/-/g,""),t.replace(/-/g,"").toLowerCase(),t.charAt(0).toUpperCase(),_(t)];for(let s of i)if(e[s]!==void 0)return e[s]}function _(e){return e.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}async function H(e,t){let n=t?[`./lib/${e}/${t}.js`,`./lib/${e}/${t}/index.js`]:[`./lib/${e}.js`,`./lib/${e}/index.js`];for(let s of n){let o=await import(s).catch(()=>null);if(o)return{module:o,error:null}}return{module:null,error:`Command not found: ${t?`${e} ${t}`:e}`}}async function $(e,t,n=[],i={},s){if(s){let x=s.replace(/\\n/g,`
|
|
12
|
-
`);console.log(x)}let{module:o,error:r}=await H(e,t);(r||!o)&&(console.error(r),process.exit(1));let a=t||e,d=o.default||o[a];typeof d!="function"&&(console.error(`Command not implemented: ${a}`),process.exit(1)),await d({...i,_positional:n})}var f=new E;f.name(l.name).description(l.description).version(l.version);function c(e,t,n){let i;"optsWithGlobals"in n&&typeof n.optsWithGlobals=="function"?i=n.optsWithGlobals():"opts"in n&&typeof n.opts=="function"?i=n.opts():i=n;let s={...i};return e.filter(r=>r.type==="positional").forEach((r,a)=>{t[a]!==void 0&&(r.multiple?s[r.name]=t[a].split(",").map(d=>d.trim()):s[r.name]=t[a])}),e.forEach(r=>{r.multiple&&r.type!=="positional"&&s[r.name]&&typeof s[r.name]=="string"&&(s[r.name]=s[r.name].split(",").map(a=>a.trim()))}),s}l.commands.forEach(e=>{let t=f.command(e.name).description(e.description);if(e.alias&&t.alias(e.alias),e.operations&&e.operations.length>0)if(e.operations.forEach(n=>{let i=t.command(n.name).description(n.description);n.alias&&(Array.isArray(n.alias)?n.alias:[n.alias]).forEach(o=>i.alias(o)),m(i,n.arguments),i.action(async(...s)=>{let o=s.pop(),r=s;n.arguments&&!g(n.arguments,c(n.arguments,r,o))||await $(e.name,n.name,r,c(n.arguments||[],r,o),n.message)}),i.command("help").description("Show help for this operation").action(()=>{U(e,n)})}),e.default){let n=e.operations?.find(i=>i.name===e.default);if(n){m(t,e.arguments),m(t,n.arguments);let i=[...e.arguments||[],...n.arguments||[]];t.action(async(...s)=>{let o=s.pop(),r=s;i.length>0&&!g(i,c(i,r,o))||await $(e.name,n.name,r,c(i,r,o),e.message||n.message)})}}else t.action(()=>{w(e)});else m(t,e.arguments),t.action(async(...n)=>{let i=n.pop(),s=n;e.arguments&&!g(e.arguments,c(e.arguments,s,i))||await $(e.name,void 0,s,c(e.arguments||[],s,i),e.message)});t.command("help").description("Show help for this command").action(()=>{w(e)})});f.command("help").description("Show general help").action(()=>{A()});f.action(()=>{A()});f.parse();
|
|
1
|
+
import"./chunk-TPUZYSCZ.js";import"./chunk-TUJTXB5G.js";import"./chunk-4LGKN5DA.js";import"./chunk-D63SZLT5.js";
|
package/dist/lib/_stat.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
async function
|
|
1
|
+
import{f as o}from"../chunk-LCWHZUZZ.js";async function s(t){let e=t.path||t._positional?.[0];e||(console.error("path argument is required"),process.exit(1));let{bucket:r}=o(e);r||(console.error("Invalid path"),process.exit(1)),console.error("stat command not yet implemented"),process.exit(1)}export{s as default};
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Run "tigris login oauth" first.`),process.exit(1));let r=x();await r.isAuthenticated()||(d(a,'Not authenticated. Run "tigris login oauth" first.'),process.exit(1));let X=await r.getAccessToken(),Z=k(),ee=T(),M={sessionToken:X,organizationId:Z??void 0,iamEndpoint:ee.iamEndpoint};if(o){let{error:l}=await Ce(e,{config:M});l&&(d(a,l.message),process.exit(1)),N(a);return}let m;if(t)m=[{bucket:"*",role:"NamespaceAdmin"}];else{i.length===0&&(d(a,"At least one bucket name is required (or use --admin or --revoke-roles)"),process.exit(1)),s.length===0&&(d(a,"At least one role is required (or use --admin or --revoke-roles)"),process.exit(1));for(let l of s)J.includes(l)||(d(a,`Invalid role "${l}". Valid roles are: ${J.join(", ")}`),process.exit(1));s.length===1?m=i.map(l=>({bucket:l,role:s[0]})):s.length===i.length?m=i.map((l,ne)=>({bucket:l,role:s[ne]})):(d(a,`Number of roles (${s.length}) must be 1 or match number of buckets (${i.length})`),process.exit(1))}let{error:D}=await ye(e,m,{config:M});D&&(d(a,D.message),process.exit(1)),N(a)}export{Te as default};
|
|
1
|
+
import{a as R,b as l,c as t,g as b}from"../../chunk-A3TXP5Y2.js";import"../../chunk-4LGKN5DA.js";import{a as n}from"../../chunk-JRALYIRA.js";import{a as A}from"../../chunk-ESJWTUFN.js";import{b as k}from"../../chunk-QZXBLNMQ.js";import{c as h}from"../../chunk-6U4U4JM6.js";import{g as p}from"../../chunk-JVB3Y42V.js";import"../../chunk-D63SZLT5.js";import{assignBucketRoles as C,revokeAllBucketRoles as N}from"@tigrisdata/iam";var e=b("access-keys","assign"),x=["Editor","ReadOnly","NamespaceAdmin"];function y(o){return o?Array.isArray(o)?o:[o]:[]}async function E(o){R(e);let c=n(o,["id"]),g=n(o,["admin"]),d=n(o,["revokeRoles","revoke-roles"]),r=y(n(o,["bucket","b"])),s=y(n(o,["role","r"]));c||(t(e,"Access key ID is required"),process.exit(1)),g&&d&&(t(e,"Cannot use --admin and --revoke-roles together"),process.exit(1)),await A()!=="oauth"&&(t(e,`Bucket roles can only be managed when logged in via OAuth.
|
|
2
|
+
Run "tigris login oauth" first.`),process.exit(1));let m=k();await m.isAuthenticated()||(t(e,'Not authenticated. Run "tigris login oauth" first.'),process.exit(1));let T=await m.getAccessToken(),v=p(),w=h(),u={sessionToken:T,organizationId:v??void 0,iamEndpoint:w.iamEndpoint};if(d){let{error:i}=await N(c,{config:u});i&&(t(e,i.message),process.exit(1)),l(e);return}let a;if(g)a=[{bucket:"*",role:"NamespaceAdmin"}];else{r.length===0&&(t(e,"At least one bucket name is required (or use --admin or --revoke-roles)"),process.exit(1)),s.length===0&&(t(e,"At least one role is required (or use --admin or --revoke-roles)"),process.exit(1));for(let i of s)x.includes(i)||(t(e,`Invalid role "${i}". Valid roles are: ${x.join(", ")}`),process.exit(1));s.length===1?a=r.map(i=>({bucket:i,role:s[0]})):s.length===r.length?a=r.map((i,O)=>({bucket:i,role:s[O]})):(t(e,`Number of roles (${s.length}) must be 1 or match number of buckets (${r.length})`),process.exit(1))}let{error:f}=await C(c,a,{config:u});f&&(t(e,f.message),process.exit(1)),l(e)}export{E as default};
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Run "tigris login oauth" first.`),process.exit(1));let o=k();await o.isAuthenticated()||(p(d,'Not authenticated. Run "tigris login oauth" first.'),process.exit(1));let s=await o.getAccessToken(),r=w(),a=h(),{data:C,error:P}=await de(e,{config:{sessionToken:s,organizationId:r??void 0,iamEndpoint:a.iamEndpoint}});P&&(p(d,P.message),process.exit(1)),console.log(` Name: ${C.name}`),console.log(` Access Key ID: ${C.id}`),console.log(` Secret Access Key: ${C.secret}`),console.log(""),console.log(" Save these credentials securely. The secret will not be shown again."),V(d)}export{le as default};
|
|
1
|
+
import{a as m,b as d,c as t,g as u}from"../../chunk-A3TXP5Y2.js";import"../../chunk-4LGKN5DA.js";import{a as c}from"../../chunk-JRALYIRA.js";import{a as l}from"../../chunk-ESJWTUFN.js";import{b as g}from"../../chunk-QZXBLNMQ.js";import{c as a}from"../../chunk-6U4U4JM6.js";import{g as r}from"../../chunk-JVB3Y42V.js";import"../../chunk-D63SZLT5.js";import{createAccessKey as y}from"@tigrisdata/iam";var e=u("access-keys","create");async function w(f){m(e);let i=c(f,["name"]);i||(t(e,"Access key name is required"),process.exit(1)),await l()!=="oauth"&&(t(e,`Access keys can only be created when logged in via OAuth.
|
|
2
|
+
Run "tigris login oauth" first.`),process.exit(1));let n=g();await n.isAuthenticated()||(t(e,'Not authenticated. Run "tigris login oauth" first.'),process.exit(1));let p=await n.getAccessToken(),h=r(),A=a(),{data:o,error:s}=await y(i,{config:{sessionToken:p,organizationId:h??void 0,iamEndpoint:A.iamEndpoint}});s&&(t(e,s.message),process.exit(1)),console.log(` Name: ${o.name}`),console.log(` Access Key ID: ${o.id}`),console.log(` Secret Access Key: ${o.secret}`),console.log(""),console.log(" Save these credentials securely. The secret will not be shown again."),d(e)}export{w as default};
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Run "tigris login oauth" first.`),process.exit(1));let o=E();await o.isAuthenticated()||(p(d,'Not authenticated. Run "tigris login oauth" first.'),process.exit(1));let s=await o.getAccessToken(),r=_(),a=h(),{error:O}=await ce(e,{config:{sessionToken:s,organizationId:r??void 0,iamEndpoint:a.iamEndpoint}});O&&(p(d,O.message),process.exit(1)),Y(d)}export{de as default};
|
|
1
|
+
import{a as d,b as m,c as e,g as f}from"../../chunk-A3TXP5Y2.js";import"../../chunk-4LGKN5DA.js";import{a as s}from"../../chunk-JRALYIRA.js";import{a as g}from"../../chunk-ESJWTUFN.js";import{b as a}from"../../chunk-QZXBLNMQ.js";import{c}from"../../chunk-6U4U4JM6.js";import{g as r}from"../../chunk-JVB3Y42V.js";import"../../chunk-D63SZLT5.js";import{removeAccessKey as A}from"@tigrisdata/iam";var t=f("access-keys","delete");async function k(u){d(t);let i=s(u,["id"]);i||(e(t,"Access key ID is required"),process.exit(1)),await g()!=="oauth"&&(e(t,`Access keys can only be deleted when logged in via OAuth.
|
|
2
|
+
Run "tigris login oauth" first.`),process.exit(1));let o=a();await o.isAuthenticated()||(e(t,'Not authenticated. Run "tigris login oauth" first.'),process.exit(1));let p=await o.getAccessToken(),h=r(),l=c(),{error:n}=await A(i,{config:{sessionToken:p,organizationId:h??void 0,iamEndpoint:l.iamEndpoint}});n&&(e(t,n.message),process.exit(1)),m(t)}export{k as default};
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Run "tigris login oauth" first.`),process.exit(1));let o=k();await o.isAuthenticated()||(f(l,'Not authenticated. Run "tigris login oauth" first.'),process.exit(1));let s=await o.getAccessToken(),r=w(),a=C(),{data:c,error:P}=await le(e,{config:{sessionToken:s,organizationId:r??void 0,iamEndpoint:a.iamEndpoint}});if(P&&(f(l,P.message),process.exit(1)),console.log(` Name: ${c.name}`),console.log(` ID: ${c.id}`),console.log(` Status: ${c.status}`),console.log(` Created: ${c.createdAt}`),console.log(` Organization: ${c.organizationId}`),c.roles&&c.roles.length>0){console.log(" Roles:");for(let N of c.roles)console.log(` - ${N.bucket}: ${N.role}`)}else console.log(" Roles: None");q(l)}export{ge as default};
|
|
1
|
+
import{a as f,b as u,c as t,g as m}from"../../chunk-A3TXP5Y2.js";import"../../chunk-4LGKN5DA.js";import{a as c}from"../../chunk-JRALYIRA.js";import{a as d}from"../../chunk-ESJWTUFN.js";import{b as l}from"../../chunk-QZXBLNMQ.js";import{c as g}from"../../chunk-6U4U4JM6.js";import{g as a}from"../../chunk-JVB3Y42V.js";import"../../chunk-D63SZLT5.js";import{getAccessKey as $}from"@tigrisdata/iam";var e=m("access-keys","get");async function w(p){f(e);let i=c(p,["id"]);i||(t(e,"Access key ID is required"),process.exit(1)),await d()!=="oauth"&&(t(e,`Access keys can only be retrieved when logged in via OAuth.
|
|
2
|
+
Run "tigris login oauth" first.`),process.exit(1));let n=l();await n.isAuthenticated()||(t(e,'Not authenticated. Run "tigris login oauth" first.'),process.exit(1));let h=await n.getAccessToken(),A=a(),k=g(),{data:o,error:s}=await $(i,{config:{sessionToken:h,organizationId:A??void 0,iamEndpoint:k.iamEndpoint}});if(s&&(t(e,s.message),process.exit(1)),console.log(` Name: ${o.name}`),console.log(` ID: ${o.id}`),console.log(` Status: ${o.status}`),console.log(` Created: ${o.createdAt}`),console.log(` Organization: ${o.organizationId}`),o.roles&&o.roles.length>0){console.log(" Roles:");for(let r of o.roles)console.log(` - ${r.bucket}: ${r.role}`)}else console.log(" Roles: None");u(e)}export{w as default};
|
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
`)}function b(n){if(n==null)return"";if(n instanceof Date)return K(n);if(typeof n=="string"){let e=new Date(n);if(!isNaN(e.getTime())&&n.includes("T"))return K(e)}return String(n)}function K(n){return new Intl.DateTimeFormat(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(n)}function ie(n,e){return e.map(t=>{if(t.width)return t.width;let i=t.header.length,o=n.reduce((r,s)=>{let a=b(s[t.key]);return Math.max(r,a.length)},0);return Math.max(i,o)})}function oe(n,e){let t=[],i=ie(n,e),o="\u250C"+i.map(c=>"\u2500".repeat(c+2)).join("\u252C")+"\u2510",r="\u251C"+i.map(c=>"\u2500".repeat(c+2)).join("\u253C")+"\u2524",s="\u2514"+i.map(c=>"\u2500".repeat(c+2)).join("\u2534")+"\u2518";t.push(`
|
|
4
|
-
`+o);let a="\u2502 "+e.map((c,u)=>c.header.padEnd(i[u])).join(" \u2502 ")+" \u2502";return t.push(a),t.push(r),n.forEach(c=>{let u=e.map((g,D)=>{let R=b(c[g.key]);return g.align==="right"?R.padStart(i[D]):R.padEnd(i[D])});t.push("\u2502 "+u.join(" \u2502 ")+" \u2502")}),t.push(s+`
|
|
5
|
-
`),t.join(`
|
|
6
|
-
`)}function z(n,e,t,i,o){switch(e){case"json":return ee(n);case"xml":return te(n,t,i);default:return oe(n,o)}}import{S3Client as We}from"@aws-sdk/client-s3";import{fromIni as Ye}from"@aws-sdk/credential-providers";import{homedir as re}from"os";import{join as L}from"path";import{readFileSync as se,writeFileSync as ae,existsSync as F,mkdirSync as ce}from"fs";import{loadSharedConfigFiles as ve}from"@smithy/shared-ini-file-loader";import{chmod as de}from"fs/promises";var p="https://t3.storage.dev",_="https://iam.storageapi.dev";var I=L(re(),".tigris"),m=L(I,"config.json");function ge(){F(I)||ce(I,{recursive:!0,mode:448})}function d(){if(F(m))try{let n=se(m,"utf8");return JSON.parse(n)}catch{return{}}return{}}async function h(n){ge(),ae(m,JSON.stringify(n,null,2),{mode:384});try{await de(m,384)}catch{}}async function E(n){let e=d();e.tokens=n,await h(e)}async function f(){return d().tokens||null}async function k(){let n=d();delete n.tokens,await h(n)}async function G(n){let e=d();e.organizations=n,await h(e)}function j(){return d().organizations||[]}function x(){return d().selectedOrganization||null}async function $(n){let e=d();e.loginMethod=n,await h(e)}function U(){return d().loginMethod||null}import C from"axios";import le from"open";function y(){let n=process.env.TIGRIS_ENV==="development",e=process.env.AUTH0_DOMAIN||n?"auth-dev.tigris.dev":"auth.tigris.dev",t=process.env.AUTH0_CLIENT_ID||n?"JdJVYIyw0O1uHi5L5OJH903qaWBgd3gF":"DMejqeM3CQ4IqTjEcd3oA9eEiT40hn8D",i=process.env.AUTH0_AUDIENCE||n?"https://tigris-api-dev":"https://tigris-os-api";return{domain:e,clientId:t,audience:i}}var W=process.env.TIGRIS_CLAIMS_NAMESPACE||"https://tigris";function T(){return process.env.TIGRIS_STORAGE_ENDPOINT||process.env.TIGRIS_IAM_ENDPOINT?{endpoint:process.env.TIGRIS_STORAGE_ENDPOINT||p,iamEndpoint:process.env.TIGRIS_IAM_ENDPOINT||_}:{endpoint:process.env.AWS_ENDPOINT_URL_S3||p,iamEndpoint:process.env.AWS_ENDPOINT_URL_IAM||_}}var O=class{config;baseUrl;constructor(){this.config=y(),this.baseUrl=`https://${this.config.domain}`}async login(e){let i=(await C.post(`${this.baseUrl}/oauth/device/code`,{client_id:this.config.clientId,audience:this.config.audience,scope:"openid profile email offline_access"},{headers:{"Content-Type":"application/x-www-form-urlencoded"}})).data;e?.onDeviceCode?.(i.user_code,i.verification_uri),await this.sleep(2e3);try{await le(i.verification_uri_complete)}catch{}e?.onWaiting?.();let o=await this.pollForToken(i.device_code,i.interval||5);await E(o),$("oauth"),await this.extractAndStoreOrganizations(o.idToken)}async pollForToken(e,t){let o=0;for(;o<60;){o++;try{let s=(await C.post(`${this.baseUrl}/oauth/token`,{client_id:this.config.clientId,device_code:e,grant_type:"urn:ietf:params:oauth:grant-type:device_code"},{headers:{"Content-Type":"application/x-www-form-urlencoded"}})).data,a=Date.now()+(s.expires_in||3600)*1e3;return{accessToken:s.access_token,refreshToken:s.refresh_token,idToken:s.id_token,expiresAt:a}}catch(r){if(C.isAxiosError(r)&&r.response){let s=r.response.data?.error;if(s==="authorization_pending"){await this.sleep(t*1e3);continue}if(s==="slow_down"){t+=5,await this.sleep(t*1e3);continue}throw new Error(r.response.data?.error_description||"Authentication failed")}throw r}}throw new Error("Authentication timed out. Please try again.")}async getAccessToken(){let e=await f();if(!e)throw new Error('Not authenticated. Please run "tigris login" to authenticate.');let t=300*1e3;return Date.now()+t>=e.expiresAt&&(e=await this.refreshAccessToken(e)),e.accessToken}async refreshAccessToken(e){let t=null;if(e?.refreshToken?t=e:t=await f(),!t)throw new Error('No refresh token available. Please run "tigris login" to re-authenticate.');try{let o=(await C.post(`${this.baseUrl}/oauth/token`,{client_id:this.config.clientId,grant_type:"refresh_token",refresh_token:t.refreshToken,scope:"openid profile email offline_access"},{headers:{"Content-Type":"application/x-www-form-urlencoded"}})).data,r={accessToken:o.access_token,refreshToken:o.refresh_token||t.refreshToken,idToken:o.id_token||t.idToken,expiresAt:Date.now()+(o.expires_in||3600)*1e3};return await E(r),r}catch{throw await k(),new Error('Token refresh failed. Please run "tigris login" to re-authenticate.')}}async getIdTokenClaims(){let e=await f();if(!e||!e.idToken)throw new Error('Not authenticated. Please run "tigris login" to authenticate.');try{let t=e.idToken.split(".")[1],i=Buffer.from(t,"base64").toString("utf8");return JSON.parse(i)}catch{throw new Error("Failed to decode ID token")}}async extractAndStoreOrganizations(e){if(e)try{let t=e.split(".")[1],i=Buffer.from(t,"base64").toString("utf8"),r=JSON.parse(i)[W];if(!r)return;let s=r?.ns?.map(a=>typeof a=="object"&&a!==null?{id:a.id,name:a.name,displayName:a.name}:{id:a,name:a,displayName:a})||[];if(s.length===0)return;G(s)}catch{}}async getOrganizations(){return await this.getAccessToken(),j()}async logout(){await k()}async isAuthenticated(){return await f()!==null}sleep(e){return new Promise(t=>setTimeout(t,e))}},v=null;function P(){return v||(v=new O),v}var Xe=T(),Qe=y();async function V(){return U()}import{listAccessKeys as Ae}from"@tigrisdata/iam";import{readFileSync as ue,existsSync as pe}from"fs";import{join as Y,dirname as fe}from"path";import{fileURLToPath as me}from"url";import*as J from"yaml";var he=me(import.meta.url),ye=fe(he),N=null;function Te(){let n=ye;for(let e=0;e<5;e++){let t=Y(n,"specs.yaml");if(pe(t))return t;n=Y(n,"..")}throw new Error("Could not find specs.yaml")}function Ce(){if(!N){let n=Te(),e=ue(n,"utf8");N=J.parse(e)}return N}function H(n,e){let i=Ce().commands.find(o=>o.name===n);return i?e&&i.operations?i.operations.find(o=>o.name===e)||null:i:null}var q={success:"\u2714",failure:"\u2716",hint:"\u2192"};function M(){return process.stdout.isTTY===!0}function A(n){let e=H(n.command,n.operation);if(e)return e.messages}function S(n,e){let t=n;return t=t.replace(/\\n/g,`
|
|
7
|
-
`),e&&(t=t.replace(/\{\{(\w+)\}\}/g,(i,o)=>{let r=e[o];return r!==void 0?String(r):`{{${o}}}`})),t}function B(n,e){if(!M())return;let t=A(n);t?.onStart&&console.log(S(t.onStart,e))}function X(n,e){if(!M())return;let t=A(n);t?.onSuccess&&console.log(`${q.success} ${S(t.onSuccess,e)}`)}function w(n,e,t){let i=A(n);i?.onFailure&&console.error(`${q.failure} ${S(i.onFailure,t)}`),e&&console.error(` ${e}`)}function Q(n,e){if(!M())return;let t=A(n);t?.onEmpty&&console.log(S(t.onEmpty,e))}function Z(n,e){return{command:n,operation:e}}var l=Z("access-keys","list");async function Se(){B(l),await V()!=="oauth"&&(w(l,`Access keys can only be listed when logged in via OAuth.
|
|
8
|
-
Run "tigris login oauth" first.`),process.exit(1));let e=P();await e.isAuthenticated()||(w(l,'Not authenticated. Run "tigris login oauth" first.'),process.exit(1));let i=await e.getAccessToken(),o=x(),r=T(),{data:s,error:a}=await Ae({config:{sessionToken:i,organizationId:o??void 0,iamEndpoint:r.iamEndpoint}});if(a&&(w(l,a.message),process.exit(1)),!s.accessKeys||s.accessKeys.length===0){Q(l);return}let c=s.accessKeys.map(g=>({name:g.name,id:g.id,status:g.status,created:g.createdAt})),u=z(c,"table","keys","key",[{key:"name",header:"Name"},{key:"id",header:"ID"},{key:"status",header:"Status"},{key:"created",header:"Created"}]);console.log(u),X(l,{count:c.length})}export{Se as default};
|
|
1
|
+
import{a as m,b as l,c as s,d as p,g as f}from"../../chunk-A3TXP5Y2.js";import"../../chunk-4LGKN5DA.js";import{f as u}from"../../chunk-HGIJOGCZ.js";import{a as g}from"../../chunk-ESJWTUFN.js";import{b as d}from"../../chunk-QZXBLNMQ.js";import{c as r}from"../../chunk-6U4U4JM6.js";import{g as c}from"../../chunk-JVB3Y42V.js";import"../../chunk-D63SZLT5.js";import{listAccessKeys as w}from"@tigrisdata/iam";var t=f("access-keys","list");async function x(){m(t),await g()!=="oauth"&&(s(t,`Access keys can only be listed when logged in via OAuth.
|
|
2
|
+
Run "tigris login oauth" first.`),process.exit(1));let o=d();await o.isAuthenticated()||(s(t,'Not authenticated. Run "tigris login oauth" first.'),process.exit(1));let h=await o.getAccessToken(),y=c(),k=r(),{data:i,error:n}=await w({config:{sessionToken:h,organizationId:y??void 0,iamEndpoint:k.iamEndpoint}});if(n&&(s(t,n.message),process.exit(1)),!i.accessKeys||i.accessKeys.length===0){p(t);return}let a=i.accessKeys.map(e=>({name:e.name,id:e.id,status:e.status,created:e.createdAt})),A=u(a,"table","keys","key",[{key:"name",header:"Name"},{key:"id",header:"ID"},{key:"status",header:"Status"},{key:"created",header:"Created"}]);console.log(A),l(t,{count:a.length})}export{x as default};
|