@stacksjs/ts-cloud 0.16.22 → 0.16.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aws/client.d.ts +9 -0
- package/dist/aws/elasticache.d.ts +11 -9
- package/dist/aws/index.js +1 -1
- package/dist/bin/chunk-0cwbg3pf.js +1 -0
- package/dist/bin/{chunk-636jsmnz.js → chunk-0md2h0an.js} +6 -6
- package/dist/bin/chunk-0ytk5g2t.js +1 -0
- package/dist/bin/chunk-19tmmwmt.js +1 -0
- package/dist/bin/chunk-1fde3e2c.js +1 -0
- package/dist/bin/{chunk-5bsknbr7.js → chunk-1j9vy88a.js} +1 -1
- package/dist/bin/{chunk-c04dygzg.js → chunk-257sygzm.js} +5 -5
- package/dist/bin/{chunk-7xr71hnt.js → chunk-2q27v6vz.js} +2 -2
- package/dist/bin/chunk-3b8a3knq.js +1 -0
- package/dist/bin/{chunk-k97ms0bs.js → chunk-3jjggqfj.js} +5 -5
- package/dist/bin/{chunk-m51vpvr6.js → chunk-4sq6cvz5.js} +3 -3
- package/dist/bin/chunk-4y20ry45.js +1 -0
- package/dist/bin/{chunk-hmnaen1z.js → chunk-5kc8s9gp.js} +1 -1
- package/dist/bin/{chunk-8wnkx3jf.js → chunk-5x59x4qw.js} +2 -2
- package/dist/bin/chunk-6aj3h8yk.js +1 -0
- package/dist/bin/{chunk-95v6ry1x.js → chunk-6eesa8d1.js} +5 -5
- package/dist/bin/{chunk-a0me5fed.js → chunk-6nm91cfw.js} +2 -2
- package/dist/bin/{chunk-3425j97b.js → chunk-7412q5cz.js} +2 -2
- package/dist/bin/chunk-78w3bn85.js +1 -0
- package/dist/bin/{chunk-ardzx4dw.js → chunk-8e7n357e.js} +128 -128
- package/dist/bin/{chunk-jp23ed1q.js → chunk-8knkt6sd.js} +1 -1
- package/dist/bin/{chunk-2gd8kqzq.js → chunk-9464wvf2.js} +5 -5
- package/dist/bin/{chunk-k6apknm8.js → chunk-988qv730.js} +5 -5
- package/dist/bin/chunk-9b6af1sj.js +1 -0
- package/dist/bin/{chunk-87f5d9qj.js → chunk-9e7pqhj1.js} +1 -1
- package/dist/bin/chunk-a07jfqvs.js +1 -0
- package/dist/bin/chunk-a3rq51az.js +2 -0
- package/dist/bin/chunk-apw5bbjg.js +1 -0
- package/dist/bin/{chunk-v980gs11.js → chunk-ax41jhq7.js} +2 -2
- package/dist/bin/{chunk-12q8xrct.js → chunk-c35qm7as.js} +5 -5
- package/dist/bin/{chunk-330kytpm.js → chunk-d1psxeqj.js} +2 -2
- package/dist/bin/{chunk-qqqx70g6.js → chunk-f0fpp4mk.js} +2 -2
- package/dist/bin/chunk-fpy7nv5g.js +1 -0
- package/dist/bin/chunk-fq4nxfec.js +1 -0
- package/dist/bin/chunk-ghe1nawv.js +1 -0
- package/dist/bin/{chunk-n8dsby4k.js → chunk-hez48c69.js} +1 -1
- package/dist/bin/{chunk-wqydambz.js → chunk-hjv1k8s9.js} +16 -16
- package/dist/bin/chunk-hwqvx1zb.js +1 -0
- package/dist/bin/{chunk-24njmb7d.js → chunk-jdfbahjb.js} +110 -110
- package/dist/bin/chunk-jwdcx0mm.js +1 -0
- package/dist/bin/chunk-k9mzq7z9.js +1 -0
- package/dist/bin/chunk-kf1p7s61.js +1 -0
- package/dist/bin/{chunk-n7hmjzgd.js → chunk-m2gwzksz.js} +1 -1
- package/dist/bin/chunk-mh172wt8.js +1 -0
- package/dist/bin/{chunk-and7khsv.js → chunk-prj5b597.js} +2 -2
- package/dist/bin/chunk-q3xwh0r8.js +6 -0
- package/dist/bin/chunk-q8crt80d.js +1 -0
- package/dist/bin/chunk-r3hkc2s3.js +1 -0
- package/dist/bin/{chunk-7kj8f72p.js → chunk-rpfvv7hw.js} +1 -1
- package/dist/bin/{chunk-mz2jbtcs.js → chunk-wfa8j3wg.js} +3 -3
- package/dist/bin/{chunk-rm59bcnw.js → chunk-wffaqgcc.js} +62 -62
- package/dist/bin/chunk-wg20x65t.js +34 -0
- package/dist/{chunk-dv1jkay7.js → bin/chunk-wsedynyb.js} +7 -7
- package/dist/bin/chunk-xb82bmgf.js +1 -0
- package/dist/bin/{chunk-8agf66wn.js → chunk-xh5jcv64.js} +3 -3
- package/dist/bin/{chunk-v5bjbyve.js → chunk-xss6yj73.js} +2 -2
- package/dist/bin/chunk-xxgybh3b.js +1 -0
- package/dist/bin/{chunk-vskhr9qy.js → chunk-y6rgvb7r.js} +2 -2
- package/dist/bin/chunk-z5ycwy38.js +2 -0
- package/dist/bin/chunk-zq02x716.js +1 -0
- package/dist/bin/cli.js +335 -335
- package/dist/bin/dashboard-server.js +1 -1
- package/dist/chunk-1ba6keyk.js +1 -0
- package/dist/{chunk-3zzm5f28.js → chunk-3x9g48ey.js} +26 -26
- package/dist/chunk-4rkjhvgw.js +114 -0
- package/dist/{chunk-9s24pbbc.js → chunk-65yh2h1e.js} +1 -1
- package/dist/{chunk-x60w04y3.js → chunk-6e5j40n9.js} +2 -2
- package/dist/{chunk-5dz6bzdj.js → chunk-97trx8p9.js} +2 -2
- package/dist/{chunk-mgg0psgc.js → chunk-9ca1yafd.js} +2 -2
- package/dist/{chunk-jt49qs0f.js → chunk-bzbryxfm.js} +2 -2
- package/dist/{chunk-pffebjr8.js → chunk-d8w90gsb.js} +36 -36
- package/dist/{chunk-w4s3rswa.js → chunk-dm6kyz6e.js} +2 -2
- package/dist/chunk-e3axmek0.js +1 -0
- package/dist/chunk-e4z4tfh6.js +1 -0
- package/dist/{chunk-2dextjqf.js → chunk-e7m70ex1.js} +2 -2
- package/dist/{chunk-ezgpamw6.js → chunk-gvybjt7y.js} +1 -1
- package/dist/{bin/chunk-09d5qe73.js → chunk-h85wqdvr.js} +7 -7
- package/dist/{chunk-3jkc3s8c.js → chunk-hzbyj0xd.js} +19 -19
- package/dist/{chunk-9p89msvs.js → chunk-jrrw3ezm.js} +5 -5
- package/dist/{chunk-ms4dnha2.js → chunk-mv7hne2c.js} +1 -1
- package/dist/chunk-qa6jjv3m.js +1 -0
- package/dist/{chunk-pcns0kz4.js → chunk-qfqh21rq.js} +5 -5
- package/dist/{chunk-2ap78e1s.js → chunk-qrchr75r.js} +4 -4
- package/dist/{chunk-khatwx29.js → chunk-rgq7m90a.js} +99 -99
- package/dist/chunk-rnjgde95.js +1 -0
- package/dist/{chunk-pwywwdq2.js → chunk-rr1qjxyj.js} +1 -1
- package/dist/chunk-t4ynyk8k.js +34 -0
- package/dist/{chunk-kpyhx96m.js → chunk-v7y50hhf.js} +110 -110
- package/dist/chunk-vtm83crj.js +709 -0
- package/dist/chunk-wrpnnrdf.js +6 -0
- package/dist/{chunk-np8vgbv0.js → chunk-x9bpm5s1.js} +3 -3
- package/dist/{chunk-cfrv8110.js → chunk-zv85cpt2.js} +4 -4
- package/dist/deploy/index.js +1 -1
- package/dist/dns/index.js +1 -1
- package/dist/drivers/index.js +1 -1
- package/dist/index.js +78 -78
- package/dist/operations/index.js +1 -1
- package/dist/protection/index.js +1 -1
- package/dist/spend/index.js +1 -1
- package/dist/ui/404.html +1 -1
- package/dist/ui/accept-invitation.html +1 -1
- package/dist/ui/access-denied.html +1 -1
- package/dist/ui/account/automation.html +6 -6
- package/dist/ui/account/security.html +2 -2
- package/dist/ui/applications/compose.html +6 -6
- package/dist/ui/applications/new.html +2 -2
- package/dist/ui/data/backups.html +6 -6
- package/dist/ui/data/services.html +6 -6
- package/dist/ui/data/volumes.html +6 -6
- package/dist/ui/index.html +6 -6
- package/dist/ui/infrastructure/topology.html +6 -6
- package/dist/ui/integrations.html +1 -1
- package/dist/ui/operations/alerts.html +6 -6
- package/dist/ui/operations/configuration.html +6 -6
- package/dist/ui/operations/jobs.html +6 -6
- package/dist/ui/operations/maintenance.html +5 -5
- package/dist/ui/operations/observability.html +6 -6
- package/dist/ui/operations/previews.html +6 -6
- package/dist/ui/operations/queue.html +6 -6
- package/dist/ui/operations/regions.html +6 -6
- package/dist/ui/operations/releases.html +6 -6
- package/dist/ui/operations/spend.html +6 -6
- package/dist/ui/operations/workloads.html +6 -6
- package/dist/ui/security.html +1 -1
- package/dist/ui/server/actions.html +6 -6
- package/dist/ui/server/activity.html +1 -1
- package/dist/ui/server/capacity.html +5 -5
- package/dist/ui/server/database.html +5 -5
- package/dist/ui/server/deployments.html +5 -5
- package/dist/ui/server/diagnostics.html +2 -2
- package/dist/ui/server/firewall.html +6 -6
- package/dist/ui/server/fleet.html +6 -6
- package/dist/ui/server/logs.html +6 -6
- package/dist/ui/server/metrics.html +5 -5
- package/dist/ui/server/security.html +2 -2
- package/dist/ui/server/services.html +2 -2
- package/dist/ui/server/sites.html +6 -6
- package/dist/ui/server/ssh-keys.html +6 -6
- package/dist/ui/server/team.html +6 -6
- package/dist/ui/server/terminal.html +2 -2
- package/dist/ui/serverless/alarms.html +6 -6
- package/dist/ui/serverless/assets.html +2 -2
- package/dist/ui/serverless/cost.html +2 -2
- package/dist/ui/serverless/data.html +6 -6
- package/dist/ui/serverless/deployments.html +2 -2
- package/dist/ui/serverless/firewall.html +2 -2
- package/dist/ui/serverless/functions.html +6 -6
- package/dist/ui/serverless/logs.html +6 -6
- package/dist/ui/serverless/metrics.html +1 -1
- package/dist/ui/serverless/queues.html +5 -5
- package/dist/ui/serverless/secrets.html +6 -6
- package/dist/ui/serverless/traces.html +6 -6
- package/dist/ui/serverless.html +5 -5
- package/package.json +3 -3
- package/dist/bin/chunk-0cefbrxg.js +0 -1
- package/dist/bin/chunk-1srmd473.js +0 -1
- package/dist/bin/chunk-27ka240w.js +0 -1
- package/dist/bin/chunk-3bq69jqk.js +0 -1
- package/dist/bin/chunk-4pysr1ky.js +0 -1
- package/dist/bin/chunk-56zfvf7e.js +0 -1
- package/dist/bin/chunk-59nav625.js +0 -1
- package/dist/bin/chunk-8fjzcr2w.js +0 -1
- package/dist/bin/chunk-9fq0bezb.js +0 -1
- package/dist/bin/chunk-9wpy7r9f.js +0 -1
- package/dist/bin/chunk-eetz9jgy.js +0 -1
- package/dist/bin/chunk-eg6156wp.js +0 -1
- package/dist/bin/chunk-ezpz96kp.js +0 -1
- package/dist/bin/chunk-f2qpsrrj.js +0 -1
- package/dist/bin/chunk-f3sbq7pw.js +0 -2
- package/dist/bin/chunk-gmabk4qn.js +0 -1
- package/dist/bin/chunk-kr51h4gk.js +0 -1
- package/dist/bin/chunk-mbqwrs7a.js +0 -6
- package/dist/bin/chunk-nx8gpr90.js +0 -34
- package/dist/bin/chunk-q62ggp3g.js +0 -1
- package/dist/bin/chunk-q957s44c.js +0 -1
- package/dist/bin/chunk-rm6qnyce.js +0 -2
- package/dist/bin/chunk-rxehseyz.js +0 -1
- package/dist/bin/chunk-tfz7djw9.js +0 -1
- package/dist/bin/chunk-tr8901hb.js +0 -1
- package/dist/bin/chunk-vqb80dyg.js +0 -1
- package/dist/bin/chunk-wysyyysg.js +0 -1
- package/dist/bin/chunk-xfs7rscr.js +0 -1
- package/dist/chunk-2fa9cdyf.js +0 -1
- package/dist/chunk-6d5e10md.js +0 -1
- package/dist/chunk-9gypn8w9.js +0 -1
- package/dist/chunk-badb5mf3.js +0 -34
- package/dist/chunk-j6a577hr.js +0 -1
- package/dist/chunk-kw852q5m.js +0 -709
- package/dist/chunk-p0b08g9f.js +0 -114
- package/dist/chunk-whdbz3h8.js +0 -1
- package/dist/chunk-y6k0vwfn.js +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunk-
|
|
1
|
+
import"./chunk-jdfbahjb.js";import"./chunk-257sygzm.js";import"./chunk-hjv1k8s9.js";import{ir}from"./chunk-8e7n357e.js";import"./chunk-q3xwh0r8.js";import"./chunk-2q27v6vz.js";import"./chunk-f0fpp4mk.js";import"./chunk-6eesa8d1.js";import"./chunk-wffaqgcc.js";import"./chunk-9e7pqhj1.js";import"./chunk-4sq6cvz5.js";import"./chunk-ax41jhq7.js";import"./chunk-m2gwzksz.js";import"./chunk-prj5b597.js";import"./chunk-6nm91cfw.js";import"./chunk-wg20x65t.js";import"./chunk-rpfvv7hw.js";import"./chunk-1j9vy88a.js";import"./chunk-0md2h0an.js";import"./chunk-c35qm7as.js";import"./chunk-3jjggqfj.js";import"./chunk-xh5jcv64.js";import"./chunk-wfa8j3wg.js";import"./chunk-7412q5cz.js";import"./chunk-y6rgvb7r.js";import"./chunk-5kc8s9gp.js";import n from"node:process";function r(o){let e=n.argv.indexOf(o);return e===-1?void 0:n.argv[e+1]}function t(o){return n.argv.includes(o)}async function i(){let o=await ir({host:r("--host")??"127.0.0.1",port:Number(r("--port")??7676),environment:r("--env"),box:t("--box"),verbose:t("--verbose")});console.log("ts-cloud Local Dashboard"),console.log(`Serving ${o.url}`),await new Promise((e)=>{let s=()=>{o.server.stop(!0),e()};n.once("SIGINT",s),n.once("SIGTERM",s)})}i();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{K}from"./chunk-e7m70ex1.js";import"./chunk-wrpnnrdf.js";export{K as RDSClient};
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`)){let
|
|
1
|
+
import{Rr,n}from"./chunk-wrpnnrdf.js";import{He}from"./chunk-6e5j40n9.js";import*as d from"node:crypto";import{readFileSync as U}from"node:fs";import{readdir as z}from"node:fs/promises";import{join as M}from"node:path";function wr(e){if(e){let i=B(e);if(!i)throw Error(`AWS profile '${e}' not found in ~/.aws/credentials`);return i}let t=process.env.AWS_ACCESS_KEY_ID,s=process.env.AWS_SECRET_ACCESS_KEY;if(t&&s)return{accessKeyId:t,secretAccessKey:s,sessionToken:process.env.AWS_SESSION_TOKEN};return B(process.env.AWS_PROFILE||"default")??{accessKeyId:"",secretAccessKey:""}}function B(e){let{existsSync:t,readFileSync:s}=He("node:fs"),{homedir:i}=He("node:os"),{join:r}=He("node:path"),a=process.env.AWS_SHARED_CREDENTIALS_FILE||r(i(),".aws","credentials");if(!t(a))return null;let c=s(a,"utf-8"),g=null,l,u,p;for(let y of c.split(`
|
|
2
|
+
`)){let f=y.trim();if(!f||f.startsWith("#")||f.startsWith(";"))continue;let m=f.match(/^\[([^\]]+)\]$/);if(m){if(g===e&&l&&u)return{accessKeyId:l,secretAccessKey:u,sessionToken:p};g=m[1],l=void 0,u=void 0,p=void 0;continue}if(g===e){let[T,...P]=f.split("="),S=P.join("=").trim();switch(T.trim().toLowerCase()){case"aws_access_key_id":l=S;break;case"aws_secret_access_key":u=S;break;case"aws_session_token":p=S;break}}}if(g===e&&l&&u)return{accessKeyId:l,secretAccessKey:u,sessionToken:p};return null}function L(e){let{buffer:t,byteOffset:s,byteLength:i}=e;if(t instanceof ArrayBuffer)return t.slice(s,s+i);let r=new ArrayBuffer(i);return new Uint8Array(r).set(new Uint8Array(e)),r}function I(e,t){let s=e?.[t]??e;if(s===null||typeof s!=="object"||Array.isArray(s))return s;let i={...s};return delete i["@_xmlns"],i}class o{client;region;explicitProfile;endpoint;endpointProtocol="https";forcePathStyle;explicitCredentials;constructor(e="us-east-1",t,s){let i=typeof e==="string"?s:e,r=typeof e==="string"?e:e.region??"us-east-1",a=typeof e==="string"?t:e.profile,c=i?.endpoint?Rr({region:r,path:"/",endpoint:i.endpoint}):void 0;this.region=r,this.explicitProfile=a,this.endpoint=c?.host,this.endpointProtocol=c?.protocol??"https",this.forcePathStyle=i?.forcePathStyle,this.explicitCredentials=i?.credentials,this.client=new n(i?.credentials,{profile:a,endpoint:i?.endpoint,forcePathStyle:i?.forcePathStyle})}getCredentials(){if(this.explicitCredentials?.accessKeyId&&this.explicitCredentials.secretAccessKey)return this.explicitCredentials;let e=wr(this.explicitProfile);if(e.accessKeyId&&e.secretAccessKey)return e;throw Error("S3 credentials not found. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY (or pass explicit credentials/profile), or configure ~/.aws/credentials.")}s3BaseHost(){return this.endpoint||`s3.${this.region}.amazonaws.com`}s3VirtualHost(e){return this.forcePathStyle?this.s3BaseHost():`${e}.${this.s3BaseHost()}`}objectPath(e,t){return this.forcePathStyle?`/${e}/${t}`:`/${t}`}objectUrl(e,t){return`${this.endpointProtocol}://${this.s3VirtualHost(e)}${this.objectPath(e,t)}`}async listBuckets(){let e=await this.client.request({service:"s3",region:this.region,method:"GET",path:"/"}),t=[],i=(e?.ListAllMyBucketsResult??e)?.Buckets?.Bucket;if(i){let r=Array.isArray(i)?i:[i];for(let a of r)t.push({Name:a.Name,CreationDate:a.CreationDate})}return{Buckets:t}}async createBucket(e,t){let s={};if(t?.acl)s["x-amz-acl"]=t.acl;let i;if(this.region!=="us-east-1"&&!this.endpoint)i=`<?xml version="1.0" encoding="UTF-8"?>
|
|
3
3
|
<CreateBucketConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
4
4
|
<LocationConstraint>${this.region}</LocationConstraint>
|
|
5
|
-
</CreateBucketConfiguration>`,s["Content-Type"]="application/xml";await this.client.request({service:"s3",region:this.region,method:"PUT",path:`/${e}`,headers:s,body:i})}async deleteBucket(e){await this.client.request({service:"s3",region:this.region,method:"DELETE",path:`/${e}`})}async emptyAndDeleteBucket(e){let t=!0;while(t){let s=await this.listAllObjects({bucket:e});if(s.length===0){t=!1;break}let i=s.map((r)=>r.Key);for(let r=0;r<i.length;r+=1000){let a=i.slice(r,r+1000);await this.deleteObjects(e,a)}}await this.deleteBucket(e)}async listAllObjects(e){let t=[],s;do{let i={"list-type":"2","max-keys":"1000"};if(e.prefix)i.prefix=e.prefix;if(s)i["continuation-token"]=s;let r=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${e.bucket}`,queryParams:i}),a=r?.ListBucketResult??r,c=a?.Contents;if(c){let l=Array.isArray(c)?c:[c];for(let u of l)t.push({Key:u.Key,LastModified:u.LastModified||"",Size:Number.parseInt(u.Size||"0"),ETag:u.ETag})}let g=a?.IsTruncated;s=g==="true"||g===!0?a?.NextContinuationToken:void 0}while(s);return t}async list(e){let t=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${e.bucket}`}),s=[],r=(t?.ListBucketResult??t)?.Contents;if(r){let a=Array.isArray(r)?r:[r];for(let c of a){if(e.prefix&&!c.Key?.startsWith(e.prefix))continue;if(s.push({Key:c.Key||"",LastModified:c.LastModified||"",Size:Number.parseInt(c.Size||"0"),ETag:c.ETag}),e.maxKeys&&s.length>=e.maxKeys)break}}return s}async putObject(e){let t={};if(e.acl)t["x-amz-acl"]=e.acl;if(e.cacheControl)t["Cache-Control"]=e.cacheControl;if(e.contentType)t["Content-Type"]=e.contentType;if(e.metadata)for(let[r,a]of Object.entries(e.metadata))t[`x-amz-meta-${r}`]=a;let s=e.key.split("/").map((r)=>encodeURIComponent(r)).join("/"),i=e.body instanceof Uint8Array&&!Buffer.isBuffer(e.body)?Buffer.from(e.body):e.body;if(Buffer.isBuffer(i)||i instanceof Uint8Array){let r=Buffer.isBuffer(i)?i:Buffer.from(i),{accessKeyId:a,secretAccessKey:c,sessionToken:g}=this.getCredentials(),l=this.s3VirtualHost(e.bucket),u=this.objectPath(e.bucket,s),
|
|
5
|
+
</CreateBucketConfiguration>`,s["Content-Type"]="application/xml";await this.client.request({service:"s3",region:this.region,method:"PUT",path:`/${e}`,headers:s,body:i})}async deleteBucket(e){await this.client.request({service:"s3",region:this.region,method:"DELETE",path:`/${e}`})}async emptyAndDeleteBucket(e){let t=!0;while(t){let s=await this.listAllObjects({bucket:e});if(s.length===0){t=!1;break}let i=s.map((r)=>r.Key);for(let r=0;r<i.length;r+=1000){let a=i.slice(r,r+1000);await this.deleteObjects(e,a)}}await this.deleteBucket(e)}async listAllObjects(e){let t=[],s;do{let i={"list-type":"2","max-keys":"1000"};if(e.prefix)i.prefix=e.prefix;if(s)i["continuation-token"]=s;let r=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${e.bucket}`,queryParams:i}),a=r?.ListBucketResult??r,c=a?.Contents;if(c){let l=Array.isArray(c)?c:[c];for(let u of l)t.push({Key:u.Key,LastModified:u.LastModified||"",Size:Number.parseInt(u.Size||"0"),ETag:u.ETag})}let g=a?.IsTruncated;s=g==="true"||g===!0?a?.NextContinuationToken:void 0}while(s);return t}async list(e){let t=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${e.bucket}`}),s=[],r=(t?.ListBucketResult??t)?.Contents;if(r){let a=Array.isArray(r)?r:[r];for(let c of a){if(e.prefix&&!c.Key?.startsWith(e.prefix))continue;if(s.push({Key:c.Key||"",LastModified:c.LastModified||"",Size:Number.parseInt(c.Size||"0"),ETag:c.ETag}),e.maxKeys&&s.length>=e.maxKeys)break}}return s}async putObject(e){let t={};if(e.acl)t["x-amz-acl"]=e.acl;if(e.cacheControl)t["Cache-Control"]=e.cacheControl;if(e.contentType)t["Content-Type"]=e.contentType;if(e.metadata)for(let[r,a]of Object.entries(e.metadata))t[`x-amz-meta-${r}`]=a;let s=e.key.split("/").map((r)=>encodeURIComponent(r)).join("/"),i=e.body instanceof Uint8Array&&!Buffer.isBuffer(e.body)?Buffer.from(e.body):e.body;if(Buffer.isBuffer(i)||i instanceof Uint8Array){let r=Buffer.isBuffer(i)?i:Buffer.from(i),{accessKeyId:a,secretAccessKey:c,sessionToken:g}=this.getCredentials(),l=this.s3VirtualHost(e.bucket),u=this.objectPath(e.bucket,s),p=this.objectUrl(e.bucket,s),y=new Date,f=y.toISOString().replace(/[:-]|\.\d{3}/g,""),m=y.toISOString().slice(0,10).replace(/-/g,""),T=d.createHash("sha256").update(r).digest("hex"),P={host:l,"x-amz-date":f,"x-amz-content-sha256":T,...t};if(g)P["x-amz-security-token"]=g;let S=Object.keys(P).sort().map((b)=>`${b.toLowerCase()}:${P[b].trim()}
|
|
6
6
|
`).join(""),x=Object.keys(P).sort().map((b)=>b.toLowerCase()).join(";"),A=["PUT",u,"",S,x,T].join(`
|
|
7
|
-
`),v="AWS4-HMAC-SHA256",C=`${
|
|
8
|
-
`),R=d.createHmac("sha256",`AWS4${c}`).update(
|
|
9
|
-
`).join(""),P=Object.keys(
|
|
10
|
-
`),x="AWS4-HMAC-SHA256",A=`${
|
|
11
|
-
`),C=d.createHmac("sha256",`AWS4${i}`).update(
|
|
7
|
+
`),v="AWS4-HMAC-SHA256",C=`${m}/${this.region}/s3/aws4_request`,H=[v,f,C,d.createHash("sha256").update(A).digest("hex")].join(`
|
|
8
|
+
`),R=d.createHmac("sha256",`AWS4${c}`).update(m).digest(),K=d.createHmac("sha256",R).update(this.region).digest(),j=d.createHmac("sha256",K).update("s3").digest(),q=d.createHmac("sha256",j).update("aws4_request").digest(),E=d.createHmac("sha256",q).update(H).digest("hex"),k=`${v} Credential=${a}/${C}, SignedHeaders=${x}, Signature=${E}`,w=await fetch(p,{method:"PUT",headers:{...P,Authorization:k},body:L(r)});if(!w.ok){let b=await w.text();throw Error(`S3 PUT failed: ${w.status} ${b}`)}return}await this.client.request({service:"s3",region:this.region,method:"PUT",path:`/${s}`,bucket:e.bucket,headers:t,body:e.body})}async getObject(e,t){let s=t.split("/").map((r)=>encodeURIComponent(r)).join("/");return await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${s}`,bucket:e,rawResponse:!0})}async getObjectBytes(e,t){let{accessKeyId:s,secretAccessKey:i,sessionToken:r}=this.getCredentials(),a=this.s3VirtualHost(e),c=t.split("/").map((b)=>encodeURIComponent(b)).join("/"),g=this.objectPath(e,c),l=this.objectUrl(e,c),u=new Date,p=u.toISOString().replace(/[:-]|\.\d{3}/g,""),y=u.toISOString().slice(0,10).replace(/-/g,""),f=d.createHash("sha256").update("").digest("hex"),m={host:a,"x-amz-date":p,"x-amz-content-sha256":f};if(r)m["x-amz-security-token"]=r;let T=Object.keys(m).sort().map((b)=>`${b.toLowerCase()}:${m[b].trim()}
|
|
9
|
+
`).join(""),P=Object.keys(m).sort().map((b)=>b.toLowerCase()).join(";"),S=["GET",g,"",T,P,f].join(`
|
|
10
|
+
`),x="AWS4-HMAC-SHA256",A=`${y}/${this.region}/s3/aws4_request`,v=[x,p,A,d.createHash("sha256").update(S).digest("hex")].join(`
|
|
11
|
+
`),C=d.createHmac("sha256",`AWS4${i}`).update(y).digest(),H=d.createHmac("sha256",C).update(this.region).digest(),R=d.createHmac("sha256",H).update("s3").digest(),K=d.createHmac("sha256",R).update("aws4_request").digest(),j=d.createHmac("sha256",K).update(v).digest("hex"),q=`${x} Credential=${s}/${A}, SignedHeaders=${P}, Signature=${j}`,E=await fetch(l,{method:"GET",headers:{...m,Authorization:q}});if(!E.ok){let b=await E.text();throw Error(`S3 GET failed: ${E.status} ${b}`)}let k=await E.arrayBuffer(),w=E.headers.get("content-length");return{body:new Uint8Array(k),contentType:E.headers.get("content-type")??void 0,contentLength:w?Number.parseInt(w,10):void 0}}async copyObject(e){let t=(i)=>i.split("/").map((r)=>encodeURIComponent(r)).join("/"),s={"x-amz-copy-source":`/${e.sourceBucket}/${t(e.sourceKey)}`};if(e.metadataDirective)s["x-amz-metadata-directive"]=e.metadataDirective;if(e.contentType)s["Content-Type"]=e.contentType;if(e.metadata)for(let[i,r]of Object.entries(e.metadata))s[`x-amz-meta-${i}`]=r;await this.client.request({service:"s3",region:this.region,method:"PUT",path:`/${e.destinationBucket}/${t(e.destinationKey)}`,headers:s})}async deleteObject(e,t){let s=t.split("/").map((i)=>encodeURIComponent(i)).join("/");await this.client.request({service:"s3",region:this.region,method:"DELETE",path:`/${s}`,bucket:e})}async deleteObjects(e,t){let s=`<?xml version="1.0" encoding="UTF-8"?>
|
|
12
12
|
<Delete>
|
|
13
13
|
${t.map((r)=>`<Object><Key>${r}</Key></Object>`).join(`
|
|
14
14
|
`)}
|
|
15
|
-
</Delete>`,i=d.createHash("md5").update(s).digest("base64");await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${e}`,queryParams:{delete:""},body:s,headers:{"Content-Type":"application/xml","Content-MD5":i}})}async bucketExists(e){try{return await this.client.request({service:"s3",region:this.region,method:"HEAD",path:`/${e}`}),!0}catch{return!1}}async copy(e){let t=U(e.source);await this.putObject({bucket:e.bucket,key:e.key,body:t,acl:e.acl,cacheControl:e.cacheControl,contentType:e.contentType,metadata:e.metadata})}async sync(e){let t=await this.listFilesRecursive(e.source);for(let s of t){if(e.exclude&&e.exclude.some((a)=>s.includes(a)))continue;if(e.include&&!e.include.some((a)=>s.includes(a)))continue;let i=s.substring(e.source.length+1),r=e.prefix?`${e.prefix}/${i}`:i;if(!e.dryRun){let a=U(s);await this.putObject({bucket:e.bucket,key:r,body:a,acl:e.acl,cacheControl:e.cacheControl,contentType:e.contentType,metadata:e.metadata})}}}async delete(e,t){await this.deleteObject(e,t)}async deletePrefix(e,t){let i=(await this.list({bucket:e,prefix:t})).map((r)=>r.Key);if(i.length>0)await this.deleteObjects(e,i)}async getBucketSize(e,t){return(await this.list({bucket:e,prefix:t})).reduce((i,r)=>i+r.Size,0)}async listFilesRecursive(e){let t=[],s=await z(e,{withFileTypes:!0});for(let i of s){let r=M(e,i.name);if(i.isDirectory()){let a=await this.listFilesRecursive(r);t.push(...a)}else t.push(r)}return t}async putBucketPolicy(e,t){let{accessKeyId:s,secretAccessKey:i,sessionToken:r}=this.getCredentials(),a=this.s3BaseHost(),c=typeof t==="string"?t:JSON.stringify(t),g=new Date,l=g.toISOString().replace(/[:-]|\.\d{3}/g,""),u=g.toISOString().slice(0,10).replace(/-/g,""),
|
|
16
|
-
`).join(""),P=Object.keys(
|
|
15
|
+
</Delete>`,i=d.createHash("md5").update(s).digest("base64");await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${e}`,queryParams:{delete:""},body:s,headers:{"Content-Type":"application/xml","Content-MD5":i}})}async bucketExists(e){try{return await this.client.request({service:"s3",region:this.region,method:"HEAD",path:`/${e}`}),!0}catch{return!1}}async copy(e){let t=U(e.source);await this.putObject({bucket:e.bucket,key:e.key,body:t,acl:e.acl,cacheControl:e.cacheControl,contentType:e.contentType,metadata:e.metadata})}async sync(e){let t=await this.listFilesRecursive(e.source);for(let s of t){if(e.exclude&&e.exclude.some((a)=>s.includes(a)))continue;if(e.include&&!e.include.some((a)=>s.includes(a)))continue;let i=s.substring(e.source.length+1),r=e.prefix?`${e.prefix}/${i}`:i;if(!e.dryRun){let a=U(s);await this.putObject({bucket:e.bucket,key:r,body:a,acl:e.acl,cacheControl:e.cacheControl,contentType:e.contentType,metadata:e.metadata})}}}async delete(e,t){await this.deleteObject(e,t)}async deletePrefix(e,t){let i=(await this.list({bucket:e,prefix:t})).map((r)=>r.Key);if(i.length>0)await this.deleteObjects(e,i)}async getBucketSize(e,t){return(await this.list({bucket:e,prefix:t})).reduce((i,r)=>i+r.Size,0)}async listFilesRecursive(e){let t=[],s=await z(e,{withFileTypes:!0});for(let i of s){let r=M(e,i.name);if(i.isDirectory()){let a=await this.listFilesRecursive(r);t.push(...a)}else t.push(r)}return t}async putBucketPolicy(e,t){let{accessKeyId:s,secretAccessKey:i,sessionToken:r}=this.getCredentials(),a=this.s3BaseHost(),c=typeof t==="string"?t:JSON.stringify(t),g=new Date,l=g.toISOString().replace(/[:-]|\.\d{3}/g,""),u=g.toISOString().slice(0,10).replace(/-/g,""),p=d.createHash("sha256").update(c).digest("hex"),y="/"+e,f="policy=",m={host:a,"x-amz-date":l,"x-amz-content-sha256":p,"content-type":"application/json"};if(r)m["x-amz-security-token"]=r;let T=Object.keys(m).sort().map((w)=>`${w.toLowerCase()}:${m[w].trim()}
|
|
16
|
+
`).join(""),P=Object.keys(m).sort().map((w)=>w.toLowerCase()).join(";"),S=["PUT",y,"policy=",T,P,p].join(`
|
|
17
17
|
`),x="AWS4-HMAC-SHA256",A=`${u}/${this.region}/s3/aws4_request`,v=[x,l,A,d.createHash("sha256").update(S).digest("hex")].join(`
|
|
18
|
-
`),C=d.createHmac("sha256","AWS4"+i).update(u).digest(),H=d.createHmac("sha256",C).update(this.region).digest(),R=d.createHmac("sha256",H).update("s3").digest(),K=d.createHmac("sha256",R).update("aws4_request").digest(),j=d.createHmac("sha256",K).update(v).digest("hex"),q=`${x} Credential=${s}/${A}, SignedHeaders=${P}, Signature=${j}`,E=`${this.endpointProtocol}://${a}${
|
|
19
|
-
`).join(""),
|
|
18
|
+
`),C=d.createHmac("sha256","AWS4"+i).update(u).digest(),H=d.createHmac("sha256",C).update(this.region).digest(),R=d.createHmac("sha256",H).update("s3").digest(),K=d.createHmac("sha256",R).update("aws4_request").digest(),j=d.createHmac("sha256",K).update(v).digest("hex"),q=`${x} Credential=${s}/${A}, SignedHeaders=${P}, Signature=${j}`,E=`${this.endpointProtocol}://${a}${y}?policy=`,k=await fetch(E,{method:"PUT",headers:{...m,Authorization:q},body:c});if(!k.ok){let w=await k.text();throw Error(`Failed to put bucket policy: ${k.status} ${w}`)}}async getBucketPolicy(e){let{accessKeyId:t,secretAccessKey:s,sessionToken:i}=this.getCredentials(),r=this.s3BaseHost(),a=new Date,c=a.toISOString().replace(/[:-]|\.\d{3}/g,""),g=a.toISOString().slice(0,10).replace(/-/g,""),l=d.createHash("sha256").update("").digest("hex"),u="/"+e,p="policy=",y={host:r,"x-amz-date":c,"x-amz-content-sha256":l};if(i)y["x-amz-security-token"]=i;let f=Object.keys(y).sort().map((k)=>`${k.toLowerCase()}:${y[k].trim()}
|
|
19
|
+
`).join(""),m=Object.keys(y).sort().map((k)=>k.toLowerCase()).join(";"),T=["GET",u,"policy=",f,m,l].join(`
|
|
20
20
|
`),P="AWS4-HMAC-SHA256",S=`${g}/${this.region}/s3/aws4_request`,x=[P,c,S,d.createHash("sha256").update(T).digest("hex")].join(`
|
|
21
|
-
`),A=d.createHmac("sha256","AWS4"+s).update(g).digest(),v=d.createHmac("sha256",A).update(this.region).digest(),C=d.createHmac("sha256",v).update("s3").digest(),H=d.createHmac("sha256",C).update("aws4_request").digest(),R=d.createHmac("sha256",H).update(x).digest("hex"),K=`${P} Credential=${t}/${S}, SignedHeaders=${
|
|
21
|
+
`),A=d.createHmac("sha256","AWS4"+s).update(g).digest(),v=d.createHmac("sha256",A).update(this.region).digest(),C=d.createHmac("sha256",v).update("s3").digest(),H=d.createHmac("sha256",C).update("aws4_request").digest(),R=d.createHmac("sha256",H).update(x).digest("hex"),K=`${P} Credential=${t}/${S}, SignedHeaders=${m}, Signature=${R}`,j=`${this.endpointProtocol}://${r}${u}?policy=`,q=await fetch(j,{method:"GET",headers:{...y,Authorization:K}});if(q.status===404)return null;if(!q.ok){let k=await q.text();throw Error(`Failed to get bucket policy: ${q.status} ${k}`)}let E=await q.text();return JSON.parse(E)}async deleteBucketPolicy(e){await this.client.request({service:"s3",region:this.region,method:"DELETE",path:`/${e}`,queryParams:{policy:""}})}async headBucket(e){try{return{exists:!0,region:(await this.client.request({service:"s3",region:this.region,method:"HEAD",path:`/${e}`,returnHeaders:!0}))?.headers?.["x-amz-bucket-region"]}}catch(t){if(t.statusCode===404)return{exists:!1};throw t}}async headObject(e,t){try{let s=await this.client.request({service:"s3",region:this.region,method:"HEAD",path:`/${e}/${t}`,returnHeaders:!0});return{ContentLength:s?.headers?.["content-length"]?parseInt(s.headers["content-length"]):void 0,ContentType:s?.headers?.["content-type"],ETag:s?.headers?.etag,LastModified:s?.headers?.["last-modified"]}}catch(s){if(s.statusCode===404)return null;throw s}}async getObjectBuffer(e,t){let s=await this.getObject(e,t);return Buffer.from(s)}async getObjectJson(e,t){let s=await this.getObject(e,t);return JSON.parse(s)}async putObjectJson(e,t,s,i){await this.putObject({bucket:e,key:t,body:JSON.stringify(s),contentType:"application/json",...i})}async getBucketVersioning(e){let t=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${e}`,queryParams:{versioning:""}});return{Status:(t?.VersioningConfiguration??t)?.Status}}async putBucketVersioning(e,t){let s=`<?xml version="1.0" encoding="UTF-8"?>
|
|
22
22
|
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
|
23
23
|
<Status>${t}</Status>
|
|
24
24
|
</VersioningConfiguration>`;await this.client.request({service:"s3",region:this.region,method:"PUT",path:`/${e}`,queryParams:{versioning:""},headers:{"Content-Type":"application/xml"},body:s})}async getBucketLifecycleConfiguration(e){try{let t=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${e}`,queryParams:{lifecycle:""}});return I(t,"LifecycleConfiguration")}catch(t){if(t.statusCode===404)return null;throw t}}async putBucketLifecycleConfiguration(e,t){let i=`<?xml version="1.0" encoding="UTF-8"?>
|
|
@@ -57,17 +57,17 @@ import{Tr,n}from"./chunk-y6k0vwfn.js";import{Ue}from"./chunk-x60w04y3.js";import
|
|
|
57
57
|
<IgnorePublicAcls>${t.IgnorePublicAcls??!0}</IgnorePublicAcls>
|
|
58
58
|
<BlockPublicPolicy>${t.BlockPublicPolicy??!0}</BlockPublicPolicy>
|
|
59
59
|
<RestrictPublicBuckets>${t.RestrictPublicBuckets??!0}</RestrictPublicBuckets>
|
|
60
|
-
</PublicAccessBlockConfiguration>`;await this.client.request({service:"s3",region:this.region,method:"PUT",path:`/${e}`,queryParams:{publicAccessBlock:""},headers:{"Content-Type":"application/xml"},body:s})}async deletePublicAccessBlock(e){await this.client.request({service:"s3",region:this.region,method:"DELETE",path:`/${e}`,queryParams:{publicAccessBlock:""}})}generatePresignedGetUrl(e,t,s=3600){let{accessKeyId:i,secretAccessKey:r}=this.getCredentials(),a=this.s3VirtualHost(e),c=new Date,g=c.toISOString().replace(/[:-]|\.\d{3}/g,""),l=c.toISOString().slice(0,10).replace(/-/g,""),u=`${l}/${this.region}/s3/aws4_request`,
|
|
60
|
+
</PublicAccessBlockConfiguration>`;await this.client.request({service:"s3",region:this.region,method:"PUT",path:`/${e}`,queryParams:{publicAccessBlock:""},headers:{"Content-Type":"application/xml"},body:s})}async deletePublicAccessBlock(e){await this.client.request({service:"s3",region:this.region,method:"DELETE",path:`/${e}`,queryParams:{publicAccessBlock:""}})}generatePresignedGetUrl(e,t,s=3600){let{accessKeyId:i,secretAccessKey:r}=this.getCredentials(),a=this.s3VirtualHost(e),c=new Date,g=c.toISOString().replace(/[:-]|\.\d{3}/g,""),l=c.toISOString().slice(0,10).replace(/-/g,""),u=`${l}/${this.region}/s3/aws4_request`,p=`${i}/${u}`,y=t.split("/").map((C)=>encodeURIComponent(C)).join("/"),f=new URLSearchParams({"X-Amz-Algorithm":"AWS4-HMAC-SHA256","X-Amz-Credential":p,"X-Amz-Date":g,"X-Amz-Expires":s.toString(),"X-Amz-SignedHeaders":"host"}),m=["GET",this.objectPath(e,y),f.toString(),`host:${a}
|
|
61
61
|
`,"host","UNSIGNED-PAYLOAD"].join(`
|
|
62
|
-
`),T=["AWS4-HMAC-SHA256",g,u,d.createHash("sha256").update(
|
|
63
|
-
`),P=d.createHmac("sha256",`AWS4${r}`).update(l).digest(),S=d.createHmac("sha256",P).update(this.region).digest(),x=d.createHmac("sha256",S).update("s3").digest(),A=d.createHmac("sha256",x).update("aws4_request").digest(),v=d.createHmac("sha256",A).update(T).digest("hex");return
|
|
62
|
+
`),T=["AWS4-HMAC-SHA256",g,u,d.createHash("sha256").update(m).digest("hex")].join(`
|
|
63
|
+
`),P=d.createHmac("sha256",`AWS4${r}`).update(l).digest(),S=d.createHmac("sha256",P).update(this.region).digest(),x=d.createHmac("sha256",S).update("s3").digest(),A=d.createHmac("sha256",x).update("aws4_request").digest(),v=d.createHmac("sha256",A).update(T).digest("hex");return f.append("X-Amz-Signature",v),`${this.endpointProtocol}://${a}${this.objectPath(e,y)}?${f.toString()}`}generatePresignedPutUrl(e,t,s,i=3600){let{accessKeyId:r,secretAccessKey:a}=this.getCredentials(),c=this.s3VirtualHost(e),g=new Date,l=g.toISOString().replace(/[:-]|\.\d{3}/g,""),u=g.toISOString().slice(0,10).replace(/-/g,""),p=`${u}/${this.region}/s3/aws4_request`,y=`${r}/${p}`,f=t.split("/").map((H)=>encodeURIComponent(H)).join("/"),m=new URLSearchParams({"X-Amz-Algorithm":"AWS4-HMAC-SHA256","X-Amz-Credential":y,"X-Amz-Date":l,"X-Amz-Expires":i.toString(),"X-Amz-SignedHeaders":"content-type;host"}),T=["PUT",this.objectPath(e,f),m.toString(),`content-type:${s}
|
|
64
64
|
host:${c}
|
|
65
65
|
`,"content-type;host","UNSIGNED-PAYLOAD"].join(`
|
|
66
|
-
`),P=["AWS4-HMAC-SHA256",l,
|
|
67
|
-
`),S=d.createHmac("sha256",`AWS4${a}`).update(u).digest(),x=d.createHmac("sha256",S).update(this.region).digest(),A=d.createHmac("sha256",x).update("s3").digest(),v=d.createHmac("sha256",A).update("aws4_request").digest(),C=d.createHmac("sha256",v).update(P).digest("hex");return
|
|
68
|
-
`).join(""),A=Object.keys(S).sort().map((O)=>O.toLowerCase()).join(";"),v=["PUT",
|
|
69
|
-
`),C="AWS4-HMAC-SHA256",H=`${T}/${this.region}/s3/aws4_request`,R=[C,
|
|
70
|
-
`),K=d.createHmac("sha256",`AWS4${c}`).update(T).digest(),j=d.createHmac("sha256",K).update(this.region).digest(),q=d.createHmac("sha256",j).update("s3").digest(),E=d.createHmac("sha256",q).update("aws4_request").digest(),k=d.createHmac("sha256",E).update(R).digest("hex"),w=`${C} Credential=${a}/${H}, SignedHeaders=${A}, Signature=${k}`,b=await fetch(
|
|
66
|
+
`),P=["AWS4-HMAC-SHA256",l,p,d.createHash("sha256").update(T).digest("hex")].join(`
|
|
67
|
+
`),S=d.createHmac("sha256",`AWS4${a}`).update(u).digest(),x=d.createHmac("sha256",S).update(this.region).digest(),A=d.createHmac("sha256",x).update("s3").digest(),v=d.createHmac("sha256",A).update("aws4_request").digest(),C=d.createHmac("sha256",v).update(P).digest("hex");return m.append("X-Amz-Signature",C),`${this.endpointProtocol}://${c}${this.objectPath(e,f)}?${m.toString()}`}async createMultipartUpload(e,t,s){let i={};if(s?.contentType)i["Content-Type"]=s.contentType;if(s?.metadata)for(let[g,l]of Object.entries(s.metadata))i[`x-amz-meta-${g}`]=l;let r=t.split("/").map((g)=>encodeURIComponent(g)).join("/"),a=await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${r}`,bucket:e,queryParams:{uploads:""},headers:i});return{UploadId:(a?.InitiateMultipartUploadResult??a)?.UploadId}}async uploadPart(e,t,s,i,r){let{accessKeyId:a,secretAccessKey:c,sessionToken:g}=this.getCredentials(),l=this.s3VirtualHost(e),u=t.split("/").map((O)=>encodeURIComponent(O)).join("/"),p=this.objectPath(e,u),y=`${this.objectUrl(e,u)}?partNumber=${i}&uploadId=${encodeURIComponent(s)}`,f=new Date,m=f.toISOString().replace(/[:-]|\.\d{3}/g,""),T=f.toISOString().slice(0,10).replace(/-/g,""),P=d.createHash("sha256").update(r).digest("hex"),S={host:l,"x-amz-date":m,"x-amz-content-sha256":P};if(g)S["x-amz-security-token"]=g;let x=Object.keys(S).sort().map((O)=>`${O.toLowerCase()}:${S[O].trim()}
|
|
68
|
+
`).join(""),A=Object.keys(S).sort().map((O)=>O.toLowerCase()).join(";"),v=["PUT",p,`partNumber=${i}&uploadId=${encodeURIComponent(s)}`,x,A,P].join(`
|
|
69
|
+
`),C="AWS4-HMAC-SHA256",H=`${T}/${this.region}/s3/aws4_request`,R=[C,m,H,d.createHash("sha256").update(v).digest("hex")].join(`
|
|
70
|
+
`),K=d.createHmac("sha256",`AWS4${c}`).update(T).digest(),j=d.createHmac("sha256",K).update(this.region).digest(),q=d.createHmac("sha256",j).update("s3").digest(),E=d.createHmac("sha256",q).update("aws4_request").digest(),k=d.createHmac("sha256",E).update(R).digest("hex"),w=`${C} Credential=${a}/${H}, SignedHeaders=${A}, Signature=${k}`,b=await fetch(y,{method:"PUT",headers:{...S,Authorization:w},body:L(r)});if(!b.ok){let O=await b.text();throw Error(`Upload part failed: ${b.status} ${O}`)}return{ETag:b.headers.get("etag")||""}}async completeMultipartUpload(e,t,s,i){let r=t.split("/").map((g)=>encodeURIComponent(g)).join("/"),c=`<?xml version="1.0" encoding="UTF-8"?>
|
|
71
71
|
<CompleteMultipartUpload>${i.sort((g,l)=>g.PartNumber-l.PartNumber).map((g)=>`<Part><PartNumber>${g.PartNumber}</PartNumber><ETag>${g.ETag}</ETag></Part>`).join("")}</CompleteMultipartUpload>`;await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${r}`,bucket:e,queryParams:{uploadId:s},headers:{"Content-Type":"application/xml"},body:c})}async abortMultipartUpload(e,t,s){let i=t.split("/").map((r)=>encodeURIComponent(r)).join("/");await this.client.request({service:"s3",region:this.region,method:"DELETE",path:`/${i}`,bucket:e,queryParams:{uploadId:s}})}async listMultipartUploads(e){let t=await this.client.request({service:"s3",region:this.region,method:"GET",path:"/",bucket:e,queryParams:{uploads:""}}),s=(t?.ListMultipartUploadsResult??t)?.Upload;if(!s)return[];return(Array.isArray(s)?s:[s]).map((r)=>({Key:r.Key,UploadId:r.UploadId,Initiated:r.Initiated}))}async restoreObject(e,t,s,i="Standard"){let r=`<?xml version="1.0" encoding="UTF-8"?>
|
|
72
72
|
<RestoreRequest>
|
|
73
73
|
<Days>${s}</Days>
|
|
@@ -80,13 +80,13 @@ host:${c}
|
|
|
80
80
|
<ExpressionType>SQL</ExpressionType>
|
|
81
81
|
<InputSerialization>${a}</InputSerialization>
|
|
82
82
|
<OutputSerialization>${c}</OutputSerialization>
|
|
83
|
-
</SelectObjectContentRequest>`;return await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${e}/${t}`,queryParams:{select:"","select-type":"2"},headers:{"Content-Type":"application/xml"},body:g,rawResponse:!0})}async getSignedUrl(e){let{bucket:t,key:s,expiresIn:i=3600,operation:r="getObject"}=e,{accessKeyId:a,secretAccessKey:c,sessionToken:g}=this.getCredentials(),l=new Date,u=l.toISOString().replace(/[:-]|\.\d{3}/g,""),
|
|
84
|
-
`,j=[
|
|
83
|
+
</SelectObjectContentRequest>`;return await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${e}/${t}`,queryParams:{select:"","select-type":"2"},headers:{"Content-Type":"application/xml"},body:g,rawResponse:!0})}async getSignedUrl(e){let{bucket:t,key:s,expiresIn:i=3600,operation:r="getObject"}=e,{accessKeyId:a,secretAccessKey:c,sessionToken:g}=this.getCredentials(),l=new Date,u=l.toISOString().replace(/[:-]|\.\d{3}/g,""),p=l.toISOString().slice(0,10).replace(/-/g,""),y=this.s3VirtualHost(t),f=r==="putObject"?"PUT":"GET",m="AWS4-HMAC-SHA256",T=`${p}/${this.region}/s3/aws4_request`,S={"X-Amz-Algorithm":"AWS4-HMAC-SHA256","X-Amz-Credential":`${a}/${T}`,"X-Amz-Date":u,"X-Amz-Expires":i.toString(),"X-Amz-SignedHeaders":"host"};if(g)S["X-Amz-Security-Token"]=g;let A=Object.keys(S).sort().map((D)=>`${encodeURIComponent(D)}=${encodeURIComponent(S[D])}`).join("&"),v=s.split("/").map((D)=>encodeURIComponent(D)).join("/"),C=this.objectPath(t,v),H=`host:${y}
|
|
84
|
+
`,j=[f,C,A,H,"host","UNSIGNED-PAYLOAD"].join(`
|
|
85
85
|
`),q=["AWS4-HMAC-SHA256",u,T,d.createHash("sha256").update(j).digest("hex")].join(`
|
|
86
|
-
`),E=d.createHmac("sha256",`AWS4${c}`).update(
|
|
86
|
+
`),E=d.createHmac("sha256",`AWS4${c}`).update(p).digest(),k=d.createHmac("sha256",E).update(this.region).digest(),w=d.createHmac("sha256",k).update("s3").digest(),b=d.createHmac("sha256",w).update("aws4_request").digest(),O=d.createHmac("sha256",b).update(q).digest("hex");return`${this.endpointProtocol}://${y}${C}?${A}&X-Amz-Signature=${O}`}async listObjects(e){let{bucket:t,prefix:s,maxKeys:i=1000,continuationToken:r}=e,a={"list-type":"2","max-keys":i.toString()};if(s)a.prefix=s;if(r)a["continuation-token"]=r;let c=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${t}`,queryParams:a}),g=[],l=c?.ListBucketResult??c;if(l?.Contents){let u=Array.isArray(l.Contents)?l.Contents:[l.Contents];for(let p of u)g.push({Key:p.Key||"",LastModified:p.LastModified||"",Size:Number.parseInt(p.Size||"0"),ETag:p.ETag})}return{objects:g,nextContinuationToken:l?.NextContinuationToken}}async emptyBucket(e){let t=0,s=await this.listAllObjects({bucket:e});if(s.length>0)for(let i=0;i<s.length;i+=1000){let a=s.slice(i,i+1000).map((c)=>c.Key);await this.deleteObjects(e,a),t+=a.length}try{let i,r;do{let a=await this.listObjectVersions({bucket:e,keyMarker:i,versionIdMarker:r,maxKeys:1000}),c=[];if(a.versions)for(let g of a.versions)c.push({Key:g.Key,VersionId:g.VersionId});if(a.deleteMarkers)for(let g of a.deleteMarkers)c.push({Key:g.Key,VersionId:g.VersionId});if(c.length>0)await this.deleteObjectVersions(e,c),t+=c.length;i=a.nextKeyMarker,r=a.nextVersionIdMarker}while(i)}catch{}return{deletedCount:t}}async listObjectVersions(e){let{bucket:t,prefix:s,keyMarker:i,versionIdMarker:r,maxKeys:a=1000}=e,c={versions:"","max-keys":a.toString()};if(s)c.prefix=s;if(i)c["key-marker"]=i;if(r)c["version-id-marker"]=r;let g=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${t}`,queryParams:c}),l=[],u=[];if(g.Version){let p=Array.isArray(g.Version)?g.Version:[g.Version];for(let y of p)l.push({Key:y.Key,VersionId:y.VersionId,IsLatest:y.IsLatest==="true"})}if(g.DeleteMarker){let p=Array.isArray(g.DeleteMarker)?g.DeleteMarker:[g.DeleteMarker];for(let y of p)u.push({Key:y.Key,VersionId:y.VersionId,IsLatest:y.IsLatest==="true"})}return{versions:l,deleteMarkers:u,nextKeyMarker:g.NextKeyMarker,nextVersionIdMarker:g.NextVersionIdMarker}}async deleteObjectVersions(e,t){let s=`<?xml version="1.0" encoding="UTF-8"?>
|
|
87
87
|
<Delete>
|
|
88
88
|
<Quiet>true</Quiet>
|
|
89
89
|
${t.map((r)=>`<Object><Key>${r.Key}</Key>${r.VersionId?`<VersionId>${r.VersionId}</VersionId>`:""}</Object>`).join(`
|
|
90
90
|
`)}
|
|
91
|
-
</Delete>`,i=d.createHash("md5").update(s).digest("base64");await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${e}`,queryParams:{delete:""},body:s,headers:{"Content-Type":"application/xml","Content-MD5":i}})}}function
|
|
92
|
-
export{
|
|
91
|
+
</Delete>`,i=d.createHash("md5").update(s).digest("base64");await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${e}`,queryParams:{delete:""},body:s,headers:{"Content-Type":"application/xml","Content-MD5":i}})}}function h(e,t){return(e?.[`${t}Response`]??e)?.[`${t}Result`]}function _(e){if(e===void 0||e===null||e==="")return[];return Array.isArray(e)?e:[e]}function Bc(e){return e===!0||e==="true"}
|
|
92
|
+
export{wr,o,h,_,Bc};
|