@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.
Files changed (194) hide show
  1. package/dist/aws/client.d.ts +9 -0
  2. package/dist/aws/elasticache.d.ts +11 -9
  3. package/dist/aws/index.js +1 -1
  4. package/dist/bin/chunk-0cwbg3pf.js +1 -0
  5. package/dist/bin/{chunk-636jsmnz.js → chunk-0md2h0an.js} +6 -6
  6. package/dist/bin/chunk-0ytk5g2t.js +1 -0
  7. package/dist/bin/chunk-19tmmwmt.js +1 -0
  8. package/dist/bin/chunk-1fde3e2c.js +1 -0
  9. package/dist/bin/{chunk-5bsknbr7.js → chunk-1j9vy88a.js} +1 -1
  10. package/dist/bin/{chunk-c04dygzg.js → chunk-257sygzm.js} +5 -5
  11. package/dist/bin/{chunk-7xr71hnt.js → chunk-2q27v6vz.js} +2 -2
  12. package/dist/bin/chunk-3b8a3knq.js +1 -0
  13. package/dist/bin/{chunk-k97ms0bs.js → chunk-3jjggqfj.js} +5 -5
  14. package/dist/bin/{chunk-m51vpvr6.js → chunk-4sq6cvz5.js} +3 -3
  15. package/dist/bin/chunk-4y20ry45.js +1 -0
  16. package/dist/bin/{chunk-hmnaen1z.js → chunk-5kc8s9gp.js} +1 -1
  17. package/dist/bin/{chunk-8wnkx3jf.js → chunk-5x59x4qw.js} +2 -2
  18. package/dist/bin/chunk-6aj3h8yk.js +1 -0
  19. package/dist/bin/{chunk-95v6ry1x.js → chunk-6eesa8d1.js} +5 -5
  20. package/dist/bin/{chunk-a0me5fed.js → chunk-6nm91cfw.js} +2 -2
  21. package/dist/bin/{chunk-3425j97b.js → chunk-7412q5cz.js} +2 -2
  22. package/dist/bin/chunk-78w3bn85.js +1 -0
  23. package/dist/bin/{chunk-ardzx4dw.js → chunk-8e7n357e.js} +128 -128
  24. package/dist/bin/{chunk-jp23ed1q.js → chunk-8knkt6sd.js} +1 -1
  25. package/dist/bin/{chunk-2gd8kqzq.js → chunk-9464wvf2.js} +5 -5
  26. package/dist/bin/{chunk-k6apknm8.js → chunk-988qv730.js} +5 -5
  27. package/dist/bin/chunk-9b6af1sj.js +1 -0
  28. package/dist/bin/{chunk-87f5d9qj.js → chunk-9e7pqhj1.js} +1 -1
  29. package/dist/bin/chunk-a07jfqvs.js +1 -0
  30. package/dist/bin/chunk-a3rq51az.js +2 -0
  31. package/dist/bin/chunk-apw5bbjg.js +1 -0
  32. package/dist/bin/{chunk-v980gs11.js → chunk-ax41jhq7.js} +2 -2
  33. package/dist/bin/{chunk-12q8xrct.js → chunk-c35qm7as.js} +5 -5
  34. package/dist/bin/{chunk-330kytpm.js → chunk-d1psxeqj.js} +2 -2
  35. package/dist/bin/{chunk-qqqx70g6.js → chunk-f0fpp4mk.js} +2 -2
  36. package/dist/bin/chunk-fpy7nv5g.js +1 -0
  37. package/dist/bin/chunk-fq4nxfec.js +1 -0
  38. package/dist/bin/chunk-ghe1nawv.js +1 -0
  39. package/dist/bin/{chunk-n8dsby4k.js → chunk-hez48c69.js} +1 -1
  40. package/dist/bin/{chunk-wqydambz.js → chunk-hjv1k8s9.js} +16 -16
  41. package/dist/bin/chunk-hwqvx1zb.js +1 -0
  42. package/dist/bin/{chunk-24njmb7d.js → chunk-jdfbahjb.js} +110 -110
  43. package/dist/bin/chunk-jwdcx0mm.js +1 -0
  44. package/dist/bin/chunk-k9mzq7z9.js +1 -0
  45. package/dist/bin/chunk-kf1p7s61.js +1 -0
  46. package/dist/bin/{chunk-n7hmjzgd.js → chunk-m2gwzksz.js} +1 -1
  47. package/dist/bin/chunk-mh172wt8.js +1 -0
  48. package/dist/bin/{chunk-and7khsv.js → chunk-prj5b597.js} +2 -2
  49. package/dist/bin/chunk-q3xwh0r8.js +6 -0
  50. package/dist/bin/chunk-q8crt80d.js +1 -0
  51. package/dist/bin/chunk-r3hkc2s3.js +1 -0
  52. package/dist/bin/{chunk-7kj8f72p.js → chunk-rpfvv7hw.js} +1 -1
  53. package/dist/bin/{chunk-mz2jbtcs.js → chunk-wfa8j3wg.js} +3 -3
  54. package/dist/bin/{chunk-rm59bcnw.js → chunk-wffaqgcc.js} +62 -62
  55. package/dist/bin/chunk-wg20x65t.js +34 -0
  56. package/dist/{chunk-dv1jkay7.js → bin/chunk-wsedynyb.js} +7 -7
  57. package/dist/bin/chunk-xb82bmgf.js +1 -0
  58. package/dist/bin/{chunk-8agf66wn.js → chunk-xh5jcv64.js} +3 -3
  59. package/dist/bin/{chunk-v5bjbyve.js → chunk-xss6yj73.js} +2 -2
  60. package/dist/bin/chunk-xxgybh3b.js +1 -0
  61. package/dist/bin/{chunk-vskhr9qy.js → chunk-y6rgvb7r.js} +2 -2
  62. package/dist/bin/chunk-z5ycwy38.js +2 -0
  63. package/dist/bin/chunk-zq02x716.js +1 -0
  64. package/dist/bin/cli.js +335 -335
  65. package/dist/bin/dashboard-server.js +1 -1
  66. package/dist/chunk-1ba6keyk.js +1 -0
  67. package/dist/{chunk-3zzm5f28.js → chunk-3x9g48ey.js} +26 -26
  68. package/dist/chunk-4rkjhvgw.js +114 -0
  69. package/dist/{chunk-9s24pbbc.js → chunk-65yh2h1e.js} +1 -1
  70. package/dist/{chunk-x60w04y3.js → chunk-6e5j40n9.js} +2 -2
  71. package/dist/{chunk-5dz6bzdj.js → chunk-97trx8p9.js} +2 -2
  72. package/dist/{chunk-mgg0psgc.js → chunk-9ca1yafd.js} +2 -2
  73. package/dist/{chunk-jt49qs0f.js → chunk-bzbryxfm.js} +2 -2
  74. package/dist/{chunk-pffebjr8.js → chunk-d8w90gsb.js} +36 -36
  75. package/dist/{chunk-w4s3rswa.js → chunk-dm6kyz6e.js} +2 -2
  76. package/dist/chunk-e3axmek0.js +1 -0
  77. package/dist/chunk-e4z4tfh6.js +1 -0
  78. package/dist/{chunk-2dextjqf.js → chunk-e7m70ex1.js} +2 -2
  79. package/dist/{chunk-ezgpamw6.js → chunk-gvybjt7y.js} +1 -1
  80. package/dist/{bin/chunk-09d5qe73.js → chunk-h85wqdvr.js} +7 -7
  81. package/dist/{chunk-3jkc3s8c.js → chunk-hzbyj0xd.js} +19 -19
  82. package/dist/{chunk-9p89msvs.js → chunk-jrrw3ezm.js} +5 -5
  83. package/dist/{chunk-ms4dnha2.js → chunk-mv7hne2c.js} +1 -1
  84. package/dist/chunk-qa6jjv3m.js +1 -0
  85. package/dist/{chunk-pcns0kz4.js → chunk-qfqh21rq.js} +5 -5
  86. package/dist/{chunk-2ap78e1s.js → chunk-qrchr75r.js} +4 -4
  87. package/dist/{chunk-khatwx29.js → chunk-rgq7m90a.js} +99 -99
  88. package/dist/chunk-rnjgde95.js +1 -0
  89. package/dist/{chunk-pwywwdq2.js → chunk-rr1qjxyj.js} +1 -1
  90. package/dist/chunk-t4ynyk8k.js +34 -0
  91. package/dist/{chunk-kpyhx96m.js → chunk-v7y50hhf.js} +110 -110
  92. package/dist/chunk-vtm83crj.js +709 -0
  93. package/dist/chunk-wrpnnrdf.js +6 -0
  94. package/dist/{chunk-np8vgbv0.js → chunk-x9bpm5s1.js} +3 -3
  95. package/dist/{chunk-cfrv8110.js → chunk-zv85cpt2.js} +4 -4
  96. package/dist/deploy/index.js +1 -1
  97. package/dist/dns/index.js +1 -1
  98. package/dist/drivers/index.js +1 -1
  99. package/dist/index.js +78 -78
  100. package/dist/operations/index.js +1 -1
  101. package/dist/protection/index.js +1 -1
  102. package/dist/spend/index.js +1 -1
  103. package/dist/ui/404.html +1 -1
  104. package/dist/ui/accept-invitation.html +1 -1
  105. package/dist/ui/access-denied.html +1 -1
  106. package/dist/ui/account/automation.html +6 -6
  107. package/dist/ui/account/security.html +2 -2
  108. package/dist/ui/applications/compose.html +6 -6
  109. package/dist/ui/applications/new.html +2 -2
  110. package/dist/ui/data/backups.html +6 -6
  111. package/dist/ui/data/services.html +6 -6
  112. package/dist/ui/data/volumes.html +6 -6
  113. package/dist/ui/index.html +6 -6
  114. package/dist/ui/infrastructure/topology.html +6 -6
  115. package/dist/ui/integrations.html +1 -1
  116. package/dist/ui/operations/alerts.html +6 -6
  117. package/dist/ui/operations/configuration.html +6 -6
  118. package/dist/ui/operations/jobs.html +6 -6
  119. package/dist/ui/operations/maintenance.html +5 -5
  120. package/dist/ui/operations/observability.html +6 -6
  121. package/dist/ui/operations/previews.html +6 -6
  122. package/dist/ui/operations/queue.html +6 -6
  123. package/dist/ui/operations/regions.html +6 -6
  124. package/dist/ui/operations/releases.html +6 -6
  125. package/dist/ui/operations/spend.html +6 -6
  126. package/dist/ui/operations/workloads.html +6 -6
  127. package/dist/ui/security.html +1 -1
  128. package/dist/ui/server/actions.html +6 -6
  129. package/dist/ui/server/activity.html +1 -1
  130. package/dist/ui/server/capacity.html +5 -5
  131. package/dist/ui/server/database.html +5 -5
  132. package/dist/ui/server/deployments.html +5 -5
  133. package/dist/ui/server/diagnostics.html +2 -2
  134. package/dist/ui/server/firewall.html +6 -6
  135. package/dist/ui/server/fleet.html +6 -6
  136. package/dist/ui/server/logs.html +6 -6
  137. package/dist/ui/server/metrics.html +5 -5
  138. package/dist/ui/server/security.html +2 -2
  139. package/dist/ui/server/services.html +2 -2
  140. package/dist/ui/server/sites.html +6 -6
  141. package/dist/ui/server/ssh-keys.html +6 -6
  142. package/dist/ui/server/team.html +6 -6
  143. package/dist/ui/server/terminal.html +2 -2
  144. package/dist/ui/serverless/alarms.html +6 -6
  145. package/dist/ui/serverless/assets.html +2 -2
  146. package/dist/ui/serverless/cost.html +2 -2
  147. package/dist/ui/serverless/data.html +6 -6
  148. package/dist/ui/serverless/deployments.html +2 -2
  149. package/dist/ui/serverless/firewall.html +2 -2
  150. package/dist/ui/serverless/functions.html +6 -6
  151. package/dist/ui/serverless/logs.html +6 -6
  152. package/dist/ui/serverless/metrics.html +1 -1
  153. package/dist/ui/serverless/queues.html +5 -5
  154. package/dist/ui/serverless/secrets.html +6 -6
  155. package/dist/ui/serverless/traces.html +6 -6
  156. package/dist/ui/serverless.html +5 -5
  157. package/package.json +3 -3
  158. package/dist/bin/chunk-0cefbrxg.js +0 -1
  159. package/dist/bin/chunk-1srmd473.js +0 -1
  160. package/dist/bin/chunk-27ka240w.js +0 -1
  161. package/dist/bin/chunk-3bq69jqk.js +0 -1
  162. package/dist/bin/chunk-4pysr1ky.js +0 -1
  163. package/dist/bin/chunk-56zfvf7e.js +0 -1
  164. package/dist/bin/chunk-59nav625.js +0 -1
  165. package/dist/bin/chunk-8fjzcr2w.js +0 -1
  166. package/dist/bin/chunk-9fq0bezb.js +0 -1
  167. package/dist/bin/chunk-9wpy7r9f.js +0 -1
  168. package/dist/bin/chunk-eetz9jgy.js +0 -1
  169. package/dist/bin/chunk-eg6156wp.js +0 -1
  170. package/dist/bin/chunk-ezpz96kp.js +0 -1
  171. package/dist/bin/chunk-f2qpsrrj.js +0 -1
  172. package/dist/bin/chunk-f3sbq7pw.js +0 -2
  173. package/dist/bin/chunk-gmabk4qn.js +0 -1
  174. package/dist/bin/chunk-kr51h4gk.js +0 -1
  175. package/dist/bin/chunk-mbqwrs7a.js +0 -6
  176. package/dist/bin/chunk-nx8gpr90.js +0 -34
  177. package/dist/bin/chunk-q62ggp3g.js +0 -1
  178. package/dist/bin/chunk-q957s44c.js +0 -1
  179. package/dist/bin/chunk-rm6qnyce.js +0 -2
  180. package/dist/bin/chunk-rxehseyz.js +0 -1
  181. package/dist/bin/chunk-tfz7djw9.js +0 -1
  182. package/dist/bin/chunk-tr8901hb.js +0 -1
  183. package/dist/bin/chunk-vqb80dyg.js +0 -1
  184. package/dist/bin/chunk-wysyyysg.js +0 -1
  185. package/dist/bin/chunk-xfs7rscr.js +0 -1
  186. package/dist/chunk-2fa9cdyf.js +0 -1
  187. package/dist/chunk-6d5e10md.js +0 -1
  188. package/dist/chunk-9gypn8w9.js +0 -1
  189. package/dist/chunk-badb5mf3.js +0 -34
  190. package/dist/chunk-j6a577hr.js +0 -1
  191. package/dist/chunk-kw852q5m.js +0 -709
  192. package/dist/chunk-p0b08g9f.js +0 -114
  193. package/dist/chunk-whdbz3h8.js +0 -1
  194. package/dist/chunk-y6k0vwfn.js +0 -6
@@ -1 +1 @@
1
- import"./chunk-24njmb7d.js";import"./chunk-c04dygzg.js";import"./chunk-wqydambz.js";import{nr}from"./chunk-ardzx4dw.js";import"./chunk-mbqwrs7a.js";import"./chunk-qqqx70g6.js";import"./chunk-7xr71hnt.js";import"./chunk-95v6ry1x.js";import"./chunk-rm59bcnw.js";import"./chunk-87f5d9qj.js";import"./chunk-m51vpvr6.js";import"./chunk-v980gs11.js";import"./chunk-n7hmjzgd.js";import"./chunk-and7khsv.js";import"./chunk-a0me5fed.js";import"./chunk-nx8gpr90.js";import"./chunk-7kj8f72p.js";import"./chunk-5bsknbr7.js";import"./chunk-636jsmnz.js";import"./chunk-12q8xrct.js";import"./chunk-k97ms0bs.js";import"./chunk-8agf66wn.js";import"./chunk-mz2jbtcs.js";import"./chunk-3425j97b.js";import"./chunk-vskhr9qy.js";import"./chunk-hmnaen1z.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 nr({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();
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{Tr,n}from"./chunk-y6k0vwfn.js";import{Ue}from"./chunk-x60w04y3.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 xt(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}=Ue("node:fs"),{homedir:i}=Ue("node:os"),{join:r}=Ue("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,y;for(let h of c.split(`
2
- `)){let m=h.trim();if(!m||m.startsWith("#")||m.startsWith(";"))continue;let p=m.match(/^\[([^\]]+)\]$/);if(p){if(g===e&&l&&u)return{accessKeyId:l,secretAccessKey:u,sessionToken:y};g=p[1],l=void 0,u=void 0,y=void 0;continue}if(g===e){let[T,...P]=m.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":y=S;break}}}if(g===e&&l&&u)return{accessKeyId:l,secretAccessKey:u,sessionToken:y};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?Tr({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=xt(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"?>
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),y=this.objectUrl(e.bucket,s),h=new Date,m=h.toISOString().replace(/[:-]|\.\d{3}/g,""),p=h.toISOString().slice(0,10).replace(/-/g,""),T=d.createHash("sha256").update(r).digest("hex"),P={host:l,"x-amz-date":m,"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()}
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=`${p}/${this.region}/s3/aws4_request`,H=[v,m,C,d.createHash("sha256").update(A).digest("hex")].join(`
8
- `),R=d.createHmac("sha256",`AWS4${c}`).update(p).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(y,{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,y=u.toISOString().replace(/[:-]|\.\d{3}/g,""),h=u.toISOString().slice(0,10).replace(/-/g,""),m=d.createHash("sha256").update("").digest("hex"),p={host:a,"x-amz-date":y,"x-amz-content-sha256":m};if(r)p["x-amz-security-token"]=r;let T=Object.keys(p).sort().map((b)=>`${b.toLowerCase()}:${p[b].trim()}
9
- `).join(""),P=Object.keys(p).sort().map((b)=>b.toLowerCase()).join(";"),S=["GET",g,"",T,P,m].join(`
10
- `),x="AWS4-HMAC-SHA256",A=`${h}/${this.region}/s3/aws4_request`,v=[x,y,A,d.createHash("sha256").update(S).digest("hex")].join(`
11
- `),C=d.createHmac("sha256",`AWS4${i}`).update(h).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:{...p,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"?>
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,""),y=d.createHash("sha256").update(c).digest("hex"),h="/"+e,m="policy=",p={host:a,"x-amz-date":l,"x-amz-content-sha256":y,"content-type":"application/json"};if(r)p["x-amz-security-token"]=r;let T=Object.keys(p).sort().map((w)=>`${w.toLowerCase()}:${p[w].trim()}
16
- `).join(""),P=Object.keys(p).sort().map((w)=>w.toLowerCase()).join(";"),S=["PUT",h,"policy=",T,P,y].join(`
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}${h}?policy=`,k=await fetch(E,{method:"PUT",headers:{...p,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,y="policy=",h={host:r,"x-amz-date":c,"x-amz-content-sha256":l};if(i)h["x-amz-security-token"]=i;let m=Object.keys(h).sort().map((k)=>`${k.toLowerCase()}:${h[k].trim()}
19
- `).join(""),p=Object.keys(h).sort().map((k)=>k.toLowerCase()).join(";"),T=["GET",u,"policy=",m,p,l].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=${p}, Signature=${R}`,j=`${this.endpointProtocol}://${r}${u}?policy=`,q=await fetch(j,{method:"GET",headers:{...h,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"?>
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`,y=`${i}/${u}`,h=t.split("/").map((C)=>encodeURIComponent(C)).join("/"),m=new URLSearchParams({"X-Amz-Algorithm":"AWS4-HMAC-SHA256","X-Amz-Credential":y,"X-Amz-Date":g,"X-Amz-Expires":s.toString(),"X-Amz-SignedHeaders":"host"}),p=["GET",this.objectPath(e,h),m.toString(),`host:${a}
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(p).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 m.append("X-Amz-Signature",v),`${this.endpointProtocol}://${a}${this.objectPath(e,h)}?${m.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,""),y=`${u}/${this.region}/s3/aws4_request`,h=`${r}/${y}`,m=t.split("/").map((H)=>encodeURIComponent(H)).join("/"),p=new URLSearchParams({"X-Amz-Algorithm":"AWS4-HMAC-SHA256","X-Amz-Credential":h,"X-Amz-Date":l,"X-Amz-Expires":i.toString(),"X-Amz-SignedHeaders":"content-type;host"}),T=["PUT",this.objectPath(e,m),p.toString(),`content-type:${s}
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,y,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 p.append("X-Amz-Signature",C),`${this.endpointProtocol}://${c}${this.objectPath(e,m)}?${p.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("/"),y=this.objectPath(e,u),h=`${this.objectUrl(e,u)}?partNumber=${i}&uploadId=${encodeURIComponent(s)}`,m=new Date,p=m.toISOString().replace(/[:-]|\.\d{3}/g,""),T=m.toISOString().slice(0,10).replace(/-/g,""),P=d.createHash("sha256").update(r).digest("hex"),S={host:l,"x-amz-date":p,"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",y,`partNumber=${i}&uploadId=${encodeURIComponent(s)}`,x,A,P].join(`
69
- `),C="AWS4-HMAC-SHA256",H=`${T}/${this.region}/s3/aws4_request`,R=[C,p,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(h,{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"?>
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,""),y=l.toISOString().slice(0,10).replace(/-/g,""),h=this.s3VirtualHost(t),m=r==="putObject"?"PUT":"GET",p="AWS4-HMAC-SHA256",T=`${y}/${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:${h}
84
- `,j=[m,C,A,H,"host","UNSIGNED-PAYLOAD"].join(`
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(y).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}://${h}${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 y of u)g.push({Key:y.Key||"",LastModified:y.LastModified||"",Size:Number.parseInt(y.Size||"0"),ETag:y.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 y=Array.isArray(g.Version)?g.Version:[g.Version];for(let h of y)l.push({Key:h.Key,VersionId:h.VersionId,IsLatest:h.IsLatest==="true"})}if(g.DeleteMarker){let y=Array.isArray(g.DeleteMarker)?g.DeleteMarker:[g.DeleteMarker];for(let h of y)u.push({Key:h.Key,VersionId:h.VersionId,IsLatest:h.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"?>
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 f(e,t){return(e?.[`${t}Response`]??e)?.[`${t}Result`]}function ct(e){if(e===void 0||e===null||e==="")return[];return Array.isArray(e)?e:[e]}function Pc(e){return e===!0||e==="true"}
92
- export{xt,o,f,ct,Pc};
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};