@stacksjs/ts-cloud 0.16.39 → 0.16.41

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 (207) hide show
  1. package/dist/aws/ec2-launch.test.d.ts +1 -0
  2. package/dist/aws/ec2.d.ts +47 -0
  3. package/dist/aws/index.js +1 -1
  4. package/dist/bin/chunk-040x6j9v.js +1 -0
  5. package/dist/bin/chunk-2b9e10db.js +1 -0
  6. package/dist/bin/chunk-2tvtr5fy.js +1 -0
  7. package/dist/bin/{chunk-r0yapyqc.js → chunk-35x7z78g.js} +1 -1
  8. package/dist/bin/chunk-45a8yv3j.js +6 -0
  9. package/dist/bin/{chunk-4bp4k1x2.js → chunk-4azcshw6.js} +2 -2
  10. package/dist/bin/{chunk-55cckkb2.js → chunk-4yym8xm4.js} +5 -5
  11. package/dist/bin/chunk-5dqnj5n9.js +1 -0
  12. package/dist/bin/chunk-5khcwxhn.js +1 -0
  13. package/dist/bin/{chunk-zmp0mksb.js → chunk-5nmt4s5w.js} +2 -2
  14. package/dist/bin/{chunk-8zn63v9h.js → chunk-5wx26yjy.js} +3 -3
  15. package/dist/bin/chunk-6kt12934.js +1 -0
  16. package/dist/bin/{chunk-0ynfqf9t.js → chunk-7593hjcq.js} +1 -1
  17. package/dist/bin/chunk-7nsjehvx.js +1 -0
  18. package/dist/bin/{chunk-wga7gj0h.js → chunk-7p2va3nj.js} +1 -1
  19. package/dist/bin/chunk-89hvgp5e.js +1 -0
  20. package/dist/bin/{chunk-hjq05rxh.js → chunk-8e4ck7cg.js} +5 -5
  21. package/dist/bin/{chunk-sqmays54.js → chunk-9eqpnanr.js} +1 -1
  22. package/dist/bin/{chunk-d8x60kvn.js → chunk-a06d7cyt.js} +2 -2
  23. package/dist/bin/chunk-aptdpa3m.js +1 -0
  24. package/dist/bin/chunk-bb08ms5q.js +1 -0
  25. package/dist/bin/chunk-c23r6gjb.js +1 -0
  26. package/dist/bin/chunk-cxcgqqdb.js +1 -0
  27. package/dist/bin/{chunk-q8hp4dfy.js → chunk-ddwp5np9.js} +94 -94
  28. package/dist/bin/{chunk-dmwfnbg0.js → chunk-dkf2kcsc.js} +6 -6
  29. package/dist/bin/{chunk-85k5gvnc.js → chunk-e8jwnsee.js} +3 -3
  30. package/dist/bin/{chunk-aykdp1wv.js → chunk-eaet154r.js} +2 -2
  31. package/dist/bin/chunk-ecd4swb7.js +2 -0
  32. package/dist/bin/{chunk-gc8p1tdr.js → chunk-f64jvh96.js} +2 -2
  33. package/dist/bin/{chunk-0c1fv0xt.js → chunk-f7jpzyhr.js} +5 -5
  34. package/dist/bin/{chunk-4h60xsat.js → chunk-f8689v5g.js} +3 -3
  35. package/dist/bin/chunk-fhq31xzt.js +1 -0
  36. package/dist/bin/{chunk-c7z8et78.js → chunk-fkzp9sg5.js} +1 -1
  37. package/dist/bin/chunk-gj26v5hg.js +1 -0
  38. package/dist/bin/{chunk-5wqjqh6c.js → chunk-gn03w47w.js} +23 -23
  39. package/dist/bin/{chunk-48nz63ab.js → chunk-grwth4nw.js} +3 -3
  40. package/dist/bin/chunk-jrztbsnb.js +1 -0
  41. package/dist/bin/chunk-jv9qp13h.js +1 -0
  42. package/dist/bin/{chunk-cqhtnsby.js → chunk-k0p394bn.js} +5 -5
  43. package/dist/bin/{chunk-mbr9j2fw.js → chunk-k343q24p.js} +6 -6
  44. package/dist/bin/chunk-k9ate69x.js +1 -0
  45. package/dist/bin/chunk-kbwm0sqv.js +2 -0
  46. package/dist/bin/chunk-ky4xdskt.js +1 -0
  47. package/dist/bin/chunk-kzgt05w5.js +1 -0
  48. package/dist/bin/{chunk-x0ywfbk5.js → chunk-kzpzkdpd.js} +1 -1
  49. package/dist/bin/chunk-m8p7mw67.js +1 -0
  50. package/dist/bin/chunk-mh3rgn0e.js +1 -0
  51. package/dist/bin/{chunk-07qwk0sj.js → chunk-n7yefy09.js} +5 -5
  52. package/dist/bin/{chunk-pyr0dc6j.js → chunk-ndf3t76p.js} +63 -63
  53. package/dist/bin/{chunk-7rpj0qhb.js → chunk-nj9x0tb8.js} +2 -2
  54. package/dist/bin/{chunk-tt3m3fda.js → chunk-nmqjmx30.js} +22 -22
  55. package/dist/bin/{chunk-e0kapeev.js → chunk-p8xy9qm7.js} +14 -14
  56. package/dist/bin/chunk-p9baztvr.js +1 -0
  57. package/dist/bin/chunk-pf9dbm3b.js +4 -0
  58. package/dist/bin/{chunk-qxg95ndf.js → chunk-q40k9jvk.js} +2 -2
  59. package/dist/bin/chunk-qgqgdkg0.js +1 -0
  60. package/dist/bin/chunk-s64d5nw2.js +1 -0
  61. package/dist/bin/chunk-s77kny9g.js +1 -0
  62. package/dist/bin/{chunk-ygsdntxq.js → chunk-x6w8jvs1.js} +5 -5
  63. package/dist/bin/{chunk-ehnevjt4.js → chunk-xe9p2q8f.js} +99 -99
  64. package/dist/bin/{chunk-6r5mehaj.js → chunk-xq7ngz6q.js} +4 -4
  65. package/dist/bin/{chunk-w6yx9bhb.js → chunk-zvbc92pc.js} +1 -1
  66. package/dist/bin/cli.js +173 -173
  67. package/dist/bin/dashboard-server.js +1 -1
  68. package/dist/{chunk-yrcv3hrj.js → chunk-0evxayn1.js} +7 -7
  69. package/dist/chunk-1yhrkahz.js +1 -0
  70. package/dist/chunk-27y037yh.js +1 -0
  71. package/dist/chunk-2ns1w1fe.js +1 -0
  72. package/dist/chunk-2vrv31sk.js +37 -0
  73. package/dist/{chunk-n1r9313b.js → chunk-3s8dtcz8.js} +2 -2
  74. package/dist/chunk-3w7q4sjs.js +2 -0
  75. package/dist/{chunk-tbn385ak.js → chunk-5n1y5ehd.js} +94 -94
  76. package/dist/chunk-74yycwrd.js +1 -0
  77. package/dist/{chunk-t52wetq8.js → chunk-7eaech9q.js} +1 -1
  78. package/dist/{chunk-2n4ktft4.js → chunk-97gre81w.js} +1 -1
  79. package/dist/{chunk-zvyrpmvd.js → chunk-9e4afej1.js} +1 -1
  80. package/dist/{chunk-3cyszqzh.js → chunk-9mv07nz0.js} +2 -2
  81. package/dist/{chunk-kpjhfgbh.js → chunk-bfbahave.js} +4 -4
  82. package/dist/{chunk-xr7ew64s.js → chunk-bwtxb2hf.js} +3 -3
  83. package/dist/{chunk-dg834141.js → chunk-cgcthvq9.js} +5 -5
  84. package/dist/{chunk-ffjgw5m6.js → chunk-ckqjqw4w.js} +108 -108
  85. package/dist/chunk-e9z4gzmg.js +1 -0
  86. package/dist/chunk-fwcf0n8f.js +4 -0
  87. package/dist/{chunk-q08s698e.js → chunk-jaswfk6g.js} +71 -71
  88. package/dist/{chunk-ffba3270.js → chunk-jbtnyhrh.js} +2 -2
  89. package/dist/{chunk-gcqq9m4b.js → chunk-kexwq2h0.js} +4 -4
  90. package/dist/{chunk-p4rknh9f.js → chunk-mxprxjd4.js} +1 -1
  91. package/dist/{chunk-c45ay9fx.js → chunk-my61jkg1.js} +5 -5
  92. package/dist/{chunk-kkeb1dk1.js → chunk-qbbap3bt.js} +1 -1
  93. package/dist/{chunk-jsnhb1p4.js → chunk-qg03hfb6.js} +19 -19
  94. package/dist/{chunk-bx3jmgd0.js → chunk-r3m1fjd4.js} +2 -2
  95. package/dist/{chunk-nzmangkw.js → chunk-v6hysd5c.js} +5 -5
  96. package/dist/{chunk-kyn6a4zf.js → chunk-varjr6np.js} +1 -1
  97. package/dist/chunk-vd2jqt9w.js +1 -0
  98. package/dist/{chunk-n8g8t8hf.js → chunk-w78e5n94.js} +3 -3
  99. package/dist/{chunk-0rvnerbw.js → chunk-ype3pqh5.js} +5 -5
  100. package/dist/{chunk-qhtgfjhd.js → chunk-yt6m703r.js} +23 -23
  101. package/dist/deploy/index.js +1 -1
  102. package/dist/dns/index.js +1 -1
  103. package/dist/drivers/index.js +1 -1
  104. package/dist/index.d.ts +1 -0
  105. package/dist/index.js +42 -42
  106. package/dist/operations/index.js +1 -1
  107. package/dist/protection/index.js +1 -1
  108. package/dist/r2/index.d.ts +8 -0
  109. package/dist/r2/provider.d.ts +303 -0
  110. package/dist/r2/provider.test.d.ts +1 -0
  111. package/dist/r2/reconcile.d.ts +98 -0
  112. package/dist/r2/reconcile.test.d.ts +1 -0
  113. package/dist/r2/test-fetch.d.ts +32 -0
  114. package/dist/spend/index.js +1 -1
  115. package/dist/ui/404.html +1 -1
  116. package/dist/ui/accept-invitation.html +1 -1
  117. package/dist/ui/access-denied.html +1 -1
  118. package/dist/ui/account/automation.html +6 -6
  119. package/dist/ui/account/security.html +2 -2
  120. package/dist/ui/applications/compose.html +6 -6
  121. package/dist/ui/applications/new.html +2 -2
  122. package/dist/ui/data/backups.html +6 -6
  123. package/dist/ui/data/services.html +6 -6
  124. package/dist/ui/data/volumes.html +6 -6
  125. package/dist/ui/index.html +6 -6
  126. package/dist/ui/infrastructure/topology.html +5 -5
  127. package/dist/ui/integrations.html +2 -2
  128. package/dist/ui/operations/alerts.html +6 -6
  129. package/dist/ui/operations/configuration.html +6 -6
  130. package/dist/ui/operations/jobs.html +6 -6
  131. package/dist/ui/operations/maintenance.html +5 -5
  132. package/dist/ui/operations/observability.html +6 -6
  133. package/dist/ui/operations/previews.html +6 -6
  134. package/dist/ui/operations/queue.html +6 -6
  135. package/dist/ui/operations/regions.html +5 -5
  136. package/dist/ui/operations/releases.html +6 -6
  137. package/dist/ui/operations/spend.html +6 -6
  138. package/dist/ui/operations/workloads.html +6 -6
  139. package/dist/ui/security.html +2 -2
  140. package/dist/ui/server/actions.html +6 -6
  141. package/dist/ui/server/activity.html +2 -2
  142. package/dist/ui/server/capacity.html +5 -5
  143. package/dist/ui/server/database.html +6 -6
  144. package/dist/ui/server/deployments.html +6 -6
  145. package/dist/ui/server/diagnostics.html +2 -2
  146. package/dist/ui/server/firewall.html +6 -6
  147. package/dist/ui/server/fleet.html +6 -6
  148. package/dist/ui/server/logs.html +6 -6
  149. package/dist/ui/server/metrics.html +6 -6
  150. package/dist/ui/server/security.html +2 -2
  151. package/dist/ui/server/services.html +2 -2
  152. package/dist/ui/server/sites.html +6 -6
  153. package/dist/ui/server/ssh-keys.html +6 -6
  154. package/dist/ui/server/team.html +6 -6
  155. package/dist/ui/server/terminal.html +2 -2
  156. package/dist/ui/serverless/alarms.html +6 -6
  157. package/dist/ui/serverless/assets.html +2 -2
  158. package/dist/ui/serverless/cost.html +2 -2
  159. package/dist/ui/serverless/data.html +6 -6
  160. package/dist/ui/serverless/deployments.html +2 -2
  161. package/dist/ui/serverless/firewall.html +1 -1
  162. package/dist/ui/serverless/functions.html +6 -6
  163. package/dist/ui/serverless/logs.html +6 -6
  164. package/dist/ui/serverless/metrics.html +1 -1
  165. package/dist/ui/serverless/queues.html +6 -6
  166. package/dist/ui/serverless/secrets.html +6 -6
  167. package/dist/ui/serverless/traces.html +5 -5
  168. package/dist/ui/serverless.html +6 -6
  169. package/package.json +3 -3
  170. package/dist/bin/chunk-0c5vn8rp.js +0 -1
  171. package/dist/bin/chunk-1wf1s8db.js +0 -1
  172. package/dist/bin/chunk-4dtrry0t.js +0 -1
  173. package/dist/bin/chunk-6kcxf3b2.js +0 -1
  174. package/dist/bin/chunk-6ksbfg6t.js +0 -1
  175. package/dist/bin/chunk-7rkg1yph.js +0 -1
  176. package/dist/bin/chunk-989j6ezd.js +0 -1
  177. package/dist/bin/chunk-bgdvhp6m.js +0 -1
  178. package/dist/bin/chunk-cvc9bxd4.js +0 -2
  179. package/dist/bin/chunk-czzrfhn7.js +0 -1
  180. package/dist/bin/chunk-d5arnf2f.js +0 -1
  181. package/dist/bin/chunk-dnmb3sr0.js +0 -4
  182. package/dist/bin/chunk-e06m9m6z.js +0 -1
  183. package/dist/bin/chunk-e51ajfyr.js +0 -1
  184. package/dist/bin/chunk-e6mfcw0v.js +0 -6
  185. package/dist/bin/chunk-fh5bjm3d.js +0 -1
  186. package/dist/bin/chunk-fw6hbyeg.js +0 -1
  187. package/dist/bin/chunk-h7gfd2yq.js +0 -1
  188. package/dist/bin/chunk-jxnw879g.js +0 -1
  189. package/dist/bin/chunk-k3yq569a.js +0 -1
  190. package/dist/bin/chunk-nhrwct94.js +0 -1
  191. package/dist/bin/chunk-pa4fymr0.js +0 -1
  192. package/dist/bin/chunk-s9xven24.js +0 -1
  193. package/dist/bin/chunk-w8jfw39t.js +0 -2
  194. package/dist/bin/chunk-wgv9nv0z.js +0 -1
  195. package/dist/bin/chunk-y5980ycr.js +0 -1
  196. package/dist/bin/chunk-y5ez6ba7.js +0 -1
  197. package/dist/bin/chunk-ya71t2ed.js +0 -1
  198. package/dist/bin/chunk-zb1nh252.js +0 -1
  199. package/dist/chunk-1ty76ybd.js +0 -1
  200. package/dist/chunk-2mypcz4a.js +0 -1
  201. package/dist/chunk-5vk7nss8.js +0 -2
  202. package/dist/chunk-fe5sbczg.js +0 -1
  203. package/dist/chunk-gtc1gvfj.js +0 -1
  204. package/dist/chunk-j1aq97br.js +0 -4
  205. package/dist/chunk-j5t1amn0.js +0 -1
  206. package/dist/chunk-s20830hg.js +0 -1
  207. package/dist/chunk-v83qx041.js +0 -37
@@ -1,2 +1,2 @@
1
- function ls(n){let t=new RegExp("[\\u007F-\\uFFFF]","g");return JSON.stringify(n).replace(t,(o)=>`\\u${o.charCodeAt(0).toString(16).padStart(4,"0")}`)}
2
- export{ls};
1
+ function ms(n){let t=new RegExp("[\\u007F-\\uFFFF]","g");return JSON.stringify(n).replace(t,(o)=>`\\u${o.charCodeAt(0).toString(16).padStart(4,"0")}`)}
2
+ export{ms};
@@ -1,24 +1,24 @@
1
- import{Ai,u}from"./chunk-dmwfnbg0.js";import{Lr}from"./chunk-qxg95ndf.js";import*as c from"node:crypto";import{readFileSync as B}from"node:fs";import{readdir as L}from"node:fs/promises";import{join as z}from"node:path";function Ct(e){if(e){let i=D(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 D(process.env.AWS_PROFILE||"default")??{accessKeyId:"",secretAccessKey:""}}function D(e){let{existsSync:t,readFileSync:s}=Lr("node:fs"),{homedir:i}=Lr("node:os"),{join:n}=Lr("node:path"),r=process.env.AWS_SHARED_CREDENTIALS_FILE||n(i(),".aws","credentials");if(!t(r))return null;let o=s(r,"utf-8"),a=null,l,d,p;for(let h of o.split(`
2
- `)){let y=h.trim();if(!y||y.startsWith("#")||y.startsWith(";"))continue;let m=y.match(/^\[([^\]]+)\]$/);if(m){if(a===e&&l&&d)return{accessKeyId:l,secretAccessKey:d,sessionToken:p};a=m[1],l=void 0,d=void 0,p=void 0;continue}if(a===e){let[b,...S]=y.split("="),f=S.join("=").trim();switch(b.trim().toLowerCase()){case"aws_access_key_id":l=f;break;case"aws_secret_access_key":d=f;break;case"aws_session_token":p=f;break}}}if(a===e&&l&&d)return{accessKeyId:l,secretAccessKey:d,sessionToken:p};return null}function U(e){let{buffer:t,byteOffset:s,byteLength:i}=e;if(t instanceof ArrayBuffer)return t.slice(s,s+i);let n=new ArrayBuffer(i);return new Uint8Array(n).set(new Uint8Array(e)),n}function j(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 g{client;region;explicitProfile;endpoint;endpointProtocol="https";forcePathStyle;explicitCredentials;constructor(e="us-east-1",t,s){let i=typeof e==="string"?s:e,n=typeof e==="string"?e:e.region??"us-east-1",r=typeof e==="string"?t:e.profile,o=i?.endpoint?Ai({region:n,path:"/",endpoint:i.endpoint}):void 0;this.region=n,this.explicitProfile=r,this.endpoint=o?.host,this.endpointProtocol=o?.protocol??"https",this.forcePathStyle=i?.forcePathStyle,this.explicitCredentials=i?.credentials,this.client=new u(i?.credentials,{profile:r,endpoint:i?.endpoint,forcePathStyle:i?.forcePathStyle})}getCredentials(){if(this.explicitCredentials?.accessKeyId&&this.explicitCredentials.secretAccessKey)return this.explicitCredentials;let e=Ct(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 n=Array.isArray(i)?i:[i];for(let r of n)t.push({Name:r.Name,CreationDate:r.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{Di,p}from"./chunk-dkf2kcsc.js";import{Br}from"./chunk-q40k9jvk.js";import*as c from"node:crypto";import{readFileSync as B}from"node:fs";import{readdir as L}from"node:fs/promises";import{join as z}from"node:path";function Ct(e){if(e){let i=D(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 D(process.env.AWS_PROFILE||"default")??{accessKeyId:"",secretAccessKey:""}}function D(e){let{existsSync:t,readFileSync:s}=Br("node:fs"),{homedir:i}=Br("node:os"),{join:n}=Br("node:path"),r=process.env.AWS_SHARED_CREDENTIALS_FILE||n(i(),".aws","credentials");if(!t(r))return null;let o=s(r,"utf-8"),a=null,l,d,y;for(let u of o.split(`
2
+ `)){let h=u.trim();if(!h||h.startsWith("#")||h.startsWith(";"))continue;let m=h.match(/^\[([^\]]+)\]$/);if(m){if(a===e&&l&&d)return{accessKeyId:l,secretAccessKey:d,sessionToken:y};a=m[1],l=void 0,d=void 0,y=void 0;continue}if(a===e){let[b,...S]=h.split("="),f=S.join("=").trim();switch(b.trim().toLowerCase()){case"aws_access_key_id":l=f;break;case"aws_secret_access_key":d=f;break;case"aws_session_token":y=f;break}}}if(a===e&&l&&d)return{accessKeyId:l,secretAccessKey:d,sessionToken:y};return null}function U(e){let{buffer:t,byteOffset:s,byteLength:i}=e;if(t instanceof ArrayBuffer)return t.slice(s,s+i);let n=new ArrayBuffer(i);return new Uint8Array(n).set(new Uint8Array(e)),n}function j(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 g{client;region;explicitProfile;endpoint;endpointProtocol="https";forcePathStyle;explicitCredentials;constructor(e="us-east-1",t,s){let i=typeof e==="string"?s:e,n=typeof e==="string"?e:e.region??"us-east-1",r=typeof e==="string"?t:e.profile,o=i?.endpoint?Di({region:n,path:"/",endpoint:i.endpoint}):void 0;this.region=n,this.explicitProfile=r,this.endpoint=o?.host,this.endpointProtocol=o?.protocol??"https",this.forcePathStyle=i?.forcePathStyle,this.explicitCredentials=i?.credentials,this.client=new p(i?.credentials,{profile:r,endpoint:i?.endpoint,forcePathStyle:i?.forcePathStyle})}getCredentials(){if(this.explicitCredentials?.accessKeyId&&this.explicitCredentials.secretAccessKey)return this.explicitCredentials;let e=Ct(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 n=Array.isArray(i)?i:[i];for(let r of n)t.push({Name:r.Name,CreationDate:r.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((n)=>n.Key);for(let n=0;n<i.length;n+=1000){let r=i.slice(n,n+1000);await this.deleteObjects(e,r)}}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 n=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${e.bucket}`,queryParams:i}),r=n?.ListBucketResult??n,o=r?.Contents;if(o){let l=Array.isArray(o)?o:[o];for(let d of l)t.push({Key:d.Key,LastModified:d.LastModified||"",Size:Number.parseInt(d.Size||"0"),ETag:d.ETag})}let a=r?.IsTruncated;s=a==="true"||a===!0?r?.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=[],n=(t?.ListBucketResult??t)?.Contents;if(n){let r=Array.isArray(n)?n:[n];for(let o of r){if(e.prefix&&!o.Key?.startsWith(e.prefix))continue;if(s.push({Key:o.Key||"",LastModified:o.LastModified||"",Size:Number.parseInt(o.Size||"0"),ETag:o.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[n,r]of Object.entries(e.metadata))t[`x-amz-meta-${n}`]=r;let s=e.key.split("/").map((n)=>encodeURIComponent(n)).join("/"),i=e.body instanceof Uint8Array&&!Buffer.isBuffer(e.body)?Buffer.from(e.body):e.body;if(Buffer.isBuffer(i)||i instanceof Uint8Array){let n=Buffer.isBuffer(i)?i:Buffer.from(i),{accessKeyId:r,secretAccessKey:o,sessionToken:a}=this.getCredentials(),l=this.s3VirtualHost(e.bucket),d=this.objectPath(e.bucket,s),p=this.objectUrl(e.bucket,s),h=new Date,y=h.toISOString().replace(/[:-]|\.\d{3}/g,""),m=h.toISOString().slice(0,10).replace(/-/g,""),b=c.createHash("sha256").update(n).digest("hex"),S={host:l,"x-amz-date":y,"x-amz-content-sha256":b,...t};if(a)S["x-amz-security-token"]=a;let f=Object.keys(S).sort().map((P)=>`${P.toLowerCase()}:${S[P].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((n)=>n.Key);for(let n=0;n<i.length;n+=1000){let r=i.slice(n,n+1000);await this.deleteObjects(e,r)}}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 n=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${e.bucket}`,queryParams:i}),r=n?.ListBucketResult??n,o=r?.Contents;if(o){let l=Array.isArray(o)?o:[o];for(let d of l)t.push({Key:d.Key,LastModified:d.LastModified||"",Size:Number.parseInt(d.Size||"0"),ETag:d.ETag})}let a=r?.IsTruncated;s=a==="true"||a===!0?r?.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=[],n=(t?.ListBucketResult??t)?.Contents;if(n){let r=Array.isArray(n)?n:[n];for(let o of r){if(e.prefix&&!o.Key?.startsWith(e.prefix))continue;if(s.push({Key:o.Key||"",LastModified:o.LastModified||"",Size:Number.parseInt(o.Size||"0"),ETag:o.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[n,r]of Object.entries(e.metadata))t[`x-amz-meta-${n}`]=r;let s=e.key.split("/").map((n)=>encodeURIComponent(n)).join("/"),i=e.body instanceof Uint8Array&&!Buffer.isBuffer(e.body)?Buffer.from(e.body):e.body;if(Buffer.isBuffer(i)||i instanceof Uint8Array){let n=Buffer.isBuffer(i)?i:Buffer.from(i),{accessKeyId:r,secretAccessKey:o,sessionToken:a}=this.getCredentials(),l=this.s3VirtualHost(e.bucket),d=this.objectPath(e.bucket,s),y=this.objectUrl(e.bucket,s),u=new Date,h=u.toISOString().replace(/[:-]|\.\d{3}/g,""),m=u.toISOString().slice(0,10).replace(/-/g,""),b=c.createHash("sha256").update(n).digest("hex"),S={host:l,"x-amz-date":h,"x-amz-content-sha256":b,...t};if(a)S["x-amz-security-token"]=a;let f=Object.keys(S).sort().map((P)=>`${P.toLowerCase()}:${S[P].trim()}
6
6
  `).join(""),x=Object.keys(S).sort().map((P)=>P.toLowerCase()).join(";"),C=["PUT",d,"",f,x,b].join(`
7
- `),w="AWS4-HMAC-SHA256",T=`${m}/${this.region}/s3/aws4_request`,q=[w,y,T,c.createHash("sha256").update(C).digest("hex")].join(`
8
- `),I=c.createHmac("sha256",`AWS4${o}`).update(m).digest(),K=c.createHmac("sha256",I).update(this.region).digest(),H=c.createHmac("sha256",K).update("s3").digest(),E=c.createHmac("sha256",H).update("aws4_request").digest(),v=c.createHmac("sha256",E).update(q).digest("hex"),A=`${w} Credential=${r}/${T}, SignedHeaders=${x}, Signature=${v}`,k=await fetch(p,{method:"PUT",headers:{...S,Authorization:A},body:U(n)});if(!k.ok){let P=await k.text();throw Error(`S3 PUT failed: ${k.status} ${P}`)}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((n)=>encodeURIComponent(n)).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:n}=this.getCredentials(),r=this.s3VirtualHost(e),o=t.split("/").map((P)=>encodeURIComponent(P)).join("/"),a=this.objectPath(e,o),l=this.objectUrl(e,o),d=new Date,p=d.toISOString().replace(/[:-]|\.\d{3}/g,""),h=d.toISOString().slice(0,10).replace(/-/g,""),y=c.createHash("sha256").update("").digest("hex"),m={host:r,"x-amz-date":p,"x-amz-content-sha256":y};if(n)m["x-amz-security-token"]=n;let b=Object.keys(m).sort().map((P)=>`${P.toLowerCase()}:${m[P].trim()}
9
- `).join(""),S=Object.keys(m).sort().map((P)=>P.toLowerCase()).join(";"),f=["GET",a,"",b,S,y].join(`
10
- `),x="AWS4-HMAC-SHA256",C=`${h}/${this.region}/s3/aws4_request`,w=[x,p,C,c.createHash("sha256").update(f).digest("hex")].join(`
11
- `),T=c.createHmac("sha256",`AWS4${i}`).update(h).digest(),q=c.createHmac("sha256",T).update(this.region).digest(),I=c.createHmac("sha256",q).update("s3").digest(),K=c.createHmac("sha256",I).update("aws4_request").digest(),H=c.createHmac("sha256",K).update(w).digest("hex"),E=`${x} Credential=${s}/${C}, SignedHeaders=${S}, Signature=${H}`,v=await fetch(l,{method:"GET",headers:{...m,Authorization:E}});if(!v.ok){let P=await v.text();throw Error(`S3 GET failed: ${v.status} ${P}`)}let A=await v.arrayBuffer(),k=v.headers.get("content-length");return{body:new Uint8Array(A),contentType:v.headers.get("content-type")??void 0,contentLength:k?Number.parseInt(k,10):void 0}}async copyObject(e){let t=(i)=>i.split("/").map((n)=>encodeURIComponent(n)).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,n]of Object.entries(e.metadata))s[`x-amz-meta-${i}`]=n;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
+ `),w="AWS4-HMAC-SHA256",T=`${m}/${this.region}/s3/aws4_request`,q=[w,h,T,c.createHash("sha256").update(C).digest("hex")].join(`
8
+ `),I=c.createHmac("sha256",`AWS4${o}`).update(m).digest(),K=c.createHmac("sha256",I).update(this.region).digest(),H=c.createHmac("sha256",K).update("s3").digest(),E=c.createHmac("sha256",H).update("aws4_request").digest(),v=c.createHmac("sha256",E).update(q).digest("hex"),A=`${w} Credential=${r}/${T}, SignedHeaders=${x}, Signature=${v}`,k=await fetch(y,{method:"PUT",headers:{...S,Authorization:A},body:U(n)});if(!k.ok){let P=await k.text();throw Error(`S3 PUT failed: ${k.status} ${P}`)}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((n)=>encodeURIComponent(n)).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:n}=this.getCredentials(),r=this.s3VirtualHost(e),o=t.split("/").map((P)=>encodeURIComponent(P)).join("/"),a=this.objectPath(e,o),l=this.objectUrl(e,o),d=new Date,y=d.toISOString().replace(/[:-]|\.\d{3}/g,""),u=d.toISOString().slice(0,10).replace(/-/g,""),h=c.createHash("sha256").update("").digest("hex"),m={host:r,"x-amz-date":y,"x-amz-content-sha256":h};if(n)m["x-amz-security-token"]=n;let b=Object.keys(m).sort().map((P)=>`${P.toLowerCase()}:${m[P].trim()}
9
+ `).join(""),S=Object.keys(m).sort().map((P)=>P.toLowerCase()).join(";"),f=["GET",a,"",b,S,h].join(`
10
+ `),x="AWS4-HMAC-SHA256",C=`${u}/${this.region}/s3/aws4_request`,w=[x,y,C,c.createHash("sha256").update(f).digest("hex")].join(`
11
+ `),T=c.createHmac("sha256",`AWS4${i}`).update(u).digest(),q=c.createHmac("sha256",T).update(this.region).digest(),I=c.createHmac("sha256",q).update("s3").digest(),K=c.createHmac("sha256",I).update("aws4_request").digest(),H=c.createHmac("sha256",K).update(w).digest("hex"),E=`${x} Credential=${s}/${C}, SignedHeaders=${S}, Signature=${H}`,v=await fetch(l,{method:"GET",headers:{...m,Authorization:E}});if(!v.ok){let P=await v.text();throw Error(`S3 GET failed: ${v.status} ${P}`)}let A=await v.arrayBuffer(),k=v.headers.get("content-length");return{body:new Uint8Array(A),contentType:v.headers.get("content-type")??void 0,contentLength:k?Number.parseInt(k,10):void 0}}async copyObject(e){let t=(i)=>i.split("/").map((n)=>encodeURIComponent(n)).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,n]of Object.entries(e.metadata))s[`x-amz-meta-${i}`]=n;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((n)=>`<Object><Key>${n}</Key></Object>`).join(`
14
14
  `)}
15
- </Delete>`,i=c.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=B(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((r)=>s.includes(r)))continue;if(e.include&&!e.include.some((r)=>s.includes(r)))continue;let i=s.substring(e.source.length+1),n=e.prefix?`${e.prefix}/${i}`:i;if(!e.dryRun){let r=B(s);await this.putObject({bucket:e.bucket,key:n,body:r,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((n)=>n.Key);if(i.length>0)await this.deleteObjects(e,i)}async getBucketSize(e,t){return(await this.list({bucket:e,prefix:t})).reduce((i,n)=>i+n.Size,0)}async listFilesRecursive(e){let t=[],s=await L(e,{withFileTypes:!0});for(let i of s){let n=z(e,i.name);if(i.isDirectory()){let r=await this.listFilesRecursive(n);t.push(...r)}else t.push(n)}return t}async putBucketPolicy(e,t){let{accessKeyId:s,secretAccessKey:i,sessionToken:n}=this.getCredentials(),r=this.s3BaseHost(),o=typeof t==="string"?t:JSON.stringify(t),a=new Date,l=a.toISOString().replace(/[:-]|\.\d{3}/g,""),d=a.toISOString().slice(0,10).replace(/-/g,""),p=c.createHash("sha256").update(o).digest("hex"),h="/"+e,y="policy=",m={host:r,"x-amz-date":l,"x-amz-content-sha256":p,"content-type":"application/json"};if(n)m["x-amz-security-token"]=n;let b=Object.keys(m).sort().map((k)=>`${k.toLowerCase()}:${m[k].trim()}
16
- `).join(""),S=Object.keys(m).sort().map((k)=>k.toLowerCase()).join(";"),f=["PUT",h,"policy=",b,S,p].join(`
15
+ </Delete>`,i=c.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=B(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((r)=>s.includes(r)))continue;if(e.include&&!e.include.some((r)=>s.includes(r)))continue;let i=s.substring(e.source.length+1),n=e.prefix?`${e.prefix}/${i}`:i;if(!e.dryRun){let r=B(s);await this.putObject({bucket:e.bucket,key:n,body:r,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((n)=>n.Key);if(i.length>0)await this.deleteObjects(e,i)}async getBucketSize(e,t){return(await this.list({bucket:e,prefix:t})).reduce((i,n)=>i+n.Size,0)}async listFilesRecursive(e){let t=[],s=await L(e,{withFileTypes:!0});for(let i of s){let n=z(e,i.name);if(i.isDirectory()){let r=await this.listFilesRecursive(n);t.push(...r)}else t.push(n)}return t}async putBucketPolicy(e,t){let{accessKeyId:s,secretAccessKey:i,sessionToken:n}=this.getCredentials(),r=this.s3BaseHost(),o=typeof t==="string"?t:JSON.stringify(t),a=new Date,l=a.toISOString().replace(/[:-]|\.\d{3}/g,""),d=a.toISOString().slice(0,10).replace(/-/g,""),y=c.createHash("sha256").update(o).digest("hex"),u="/"+e,h="policy=",m={host:r,"x-amz-date":l,"x-amz-content-sha256":y,"content-type":"application/json"};if(n)m["x-amz-security-token"]=n;let b=Object.keys(m).sort().map((k)=>`${k.toLowerCase()}:${m[k].trim()}
16
+ `).join(""),S=Object.keys(m).sort().map((k)=>k.toLowerCase()).join(";"),f=["PUT",u,"policy=",b,S,y].join(`
17
17
  `),x="AWS4-HMAC-SHA256",C=`${d}/${this.region}/s3/aws4_request`,w=[x,l,C,c.createHash("sha256").update(f).digest("hex")].join(`
18
- `),T=c.createHmac("sha256","AWS4"+i).update(d).digest(),q=c.createHmac("sha256",T).update(this.region).digest(),I=c.createHmac("sha256",q).update("s3").digest(),K=c.createHmac("sha256",I).update("aws4_request").digest(),H=c.createHmac("sha256",K).update(w).digest("hex"),E=`${x} Credential=${s}/${C}, SignedHeaders=${S}, Signature=${H}`,v=`${this.endpointProtocol}://${r}${h}?policy=`,A=await fetch(v,{method:"PUT",headers:{...m,Authorization:E},body:o});if(!A.ok){let k=await A.text();throw Error(`Failed to put bucket policy: ${A.status} ${k}`)}}async getBucketPolicy(e){let{accessKeyId:t,secretAccessKey:s,sessionToken:i}=this.getCredentials(),n=this.s3BaseHost(),r=new Date,o=r.toISOString().replace(/[:-]|\.\d{3}/g,""),a=r.toISOString().slice(0,10).replace(/-/g,""),l=c.createHash("sha256").update("").digest("hex"),d="/"+e,p="policy=",h={host:n,"x-amz-date":o,"x-amz-content-sha256":l};if(i)h["x-amz-security-token"]=i;let y=Object.keys(h).sort().map((A)=>`${A.toLowerCase()}:${h[A].trim()}
19
- `).join(""),m=Object.keys(h).sort().map((A)=>A.toLowerCase()).join(";"),b=["GET",d,"policy=",y,m,l].join(`
18
+ `),T=c.createHmac("sha256","AWS4"+i).update(d).digest(),q=c.createHmac("sha256",T).update(this.region).digest(),I=c.createHmac("sha256",q).update("s3").digest(),K=c.createHmac("sha256",I).update("aws4_request").digest(),H=c.createHmac("sha256",K).update(w).digest("hex"),E=`${x} Credential=${s}/${C}, SignedHeaders=${S}, Signature=${H}`,v=`${this.endpointProtocol}://${r}${u}?policy=`,A=await fetch(v,{method:"PUT",headers:{...m,Authorization:E},body:o});if(!A.ok){let k=await A.text();throw Error(`Failed to put bucket policy: ${A.status} ${k}`)}}async getBucketPolicy(e){let{accessKeyId:t,secretAccessKey:s,sessionToken:i}=this.getCredentials(),n=this.s3BaseHost(),r=new Date,o=r.toISOString().replace(/[:-]|\.\d{3}/g,""),a=r.toISOString().slice(0,10).replace(/-/g,""),l=c.createHash("sha256").update("").digest("hex"),d="/"+e,y="policy=",u={host:n,"x-amz-date":o,"x-amz-content-sha256":l};if(i)u["x-amz-security-token"]=i;let h=Object.keys(u).sort().map((A)=>`${A.toLowerCase()}:${u[A].trim()}
19
+ `).join(""),m=Object.keys(u).sort().map((A)=>A.toLowerCase()).join(";"),b=["GET",d,"policy=",h,m,l].join(`
20
20
  `),S="AWS4-HMAC-SHA256",f=`${a}/${this.region}/s3/aws4_request`,x=[S,o,f,c.createHash("sha256").update(b).digest("hex")].join(`
21
- `),C=c.createHmac("sha256","AWS4"+s).update(a).digest(),w=c.createHmac("sha256",C).update(this.region).digest(),T=c.createHmac("sha256",w).update("s3").digest(),q=c.createHmac("sha256",T).update("aws4_request").digest(),I=c.createHmac("sha256",q).update(x).digest("hex"),K=`${S} Credential=${t}/${f}, SignedHeaders=${m}, Signature=${I}`,H=`${this.endpointProtocol}://${n}${d}?policy=`,E=await fetch(H,{method:"GET",headers:{...h,Authorization:K}});if(E.status===404)return null;if(!E.ok){let A=await E.text();throw Error(`Failed to get bucket policy: ${E.status} ${A}`)}let v=await E.text();return JSON.parse(v)}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
+ `),C=c.createHmac("sha256","AWS4"+s).update(a).digest(),w=c.createHmac("sha256",C).update(this.region).digest(),T=c.createHmac("sha256",w).update("s3").digest(),q=c.createHmac("sha256",T).update("aws4_request").digest(),I=c.createHmac("sha256",q).update(x).digest("hex"),K=`${S} Credential=${t}/${f}, SignedHeaders=${m}, Signature=${I}`,H=`${this.endpointProtocol}://${n}${d}?policy=`,E=await fetch(H,{method:"GET",headers:{...u,Authorization:K}});if(E.status===404)return null;if(!E.ok){let A=await E.text();throw Error(`Failed to get bucket policy: ${E.status} ${A}`)}let v=await E.text();return JSON.parse(v)}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 j(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{Ai,u}from"./chunk-dmwfnbg0.js";import{Lr}from"./chunk-qxg95ndf.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:n}=this.getCredentials(),r=this.s3VirtualHost(e),o=new Date,a=o.toISOString().replace(/[:-]|\.\d{3}/g,""),l=o.toISOString().slice(0,10).replace(/-/g,""),d=`${l}/${this.region}/s3/aws4_request`,p=`${i}/${d}`,h=t.split("/").map((T)=>encodeURIComponent(T)).join("/"),y=new URLSearchParams({"X-Amz-Algorithm":"AWS4-HMAC-SHA256","X-Amz-Credential":p,"X-Amz-Date":a,"X-Amz-Expires":s.toString(),"X-Amz-SignedHeaders":"host"}),m=["GET",this.objectPath(e,h),y.toString(),`host:${r}
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:n}=this.getCredentials(),r=this.s3VirtualHost(e),o=new Date,a=o.toISOString().replace(/[:-]|\.\d{3}/g,""),l=o.toISOString().slice(0,10).replace(/-/g,""),d=`${l}/${this.region}/s3/aws4_request`,y=`${i}/${d}`,u=t.split("/").map((T)=>encodeURIComponent(T)).join("/"),h=new URLSearchParams({"X-Amz-Algorithm":"AWS4-HMAC-SHA256","X-Amz-Credential":y,"X-Amz-Date":a,"X-Amz-Expires":s.toString(),"X-Amz-SignedHeaders":"host"}),m=["GET",this.objectPath(e,u),h.toString(),`host:${r}
61
61
  `,"host","UNSIGNED-PAYLOAD"].join(`
62
62
  `),b=["AWS4-HMAC-SHA256",a,d,c.createHash("sha256").update(m).digest("hex")].join(`
63
- `),S=c.createHmac("sha256",`AWS4${n}`).update(l).digest(),f=c.createHmac("sha256",S).update(this.region).digest(),x=c.createHmac("sha256",f).update("s3").digest(),C=c.createHmac("sha256",x).update("aws4_request").digest(),w=c.createHmac("sha256",C).update(b).digest("hex");return y.append("X-Amz-Signature",w),`${this.endpointProtocol}://${r}${this.objectPath(e,h)}?${y.toString()}`}generatePresignedPutUrl(e,t,s,i=3600){let{accessKeyId:n,secretAccessKey:r}=this.getCredentials(),o=this.s3VirtualHost(e),a=new Date,l=a.toISOString().replace(/[:-]|\.\d{3}/g,""),d=a.toISOString().slice(0,10).replace(/-/g,""),p=`${d}/${this.region}/s3/aws4_request`,h=`${n}/${p}`,y=t.split("/").map((q)=>encodeURIComponent(q)).join("/"),m=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"}),b=["PUT",this.objectPath(e,y),m.toString(),`content-type:${s}
63
+ `),S=c.createHmac("sha256",`AWS4${n}`).update(l).digest(),f=c.createHmac("sha256",S).update(this.region).digest(),x=c.createHmac("sha256",f).update("s3").digest(),C=c.createHmac("sha256",x).update("aws4_request").digest(),w=c.createHmac("sha256",C).update(b).digest("hex");return h.append("X-Amz-Signature",w),`${this.endpointProtocol}://${r}${this.objectPath(e,u)}?${h.toString()}`}generatePresignedPutUrl(e,t,s,i=3600){let{accessKeyId:n,secretAccessKey:r}=this.getCredentials(),o=this.s3VirtualHost(e),a=new Date,l=a.toISOString().replace(/[:-]|\.\d{3}/g,""),d=a.toISOString().slice(0,10).replace(/-/g,""),y=`${d}/${this.region}/s3/aws4_request`,u=`${n}/${y}`,h=t.split("/").map((q)=>encodeURIComponent(q)).join("/"),m=new URLSearchParams({"X-Amz-Algorithm":"AWS4-HMAC-SHA256","X-Amz-Credential":u,"X-Amz-Date":l,"X-Amz-Expires":i.toString(),"X-Amz-SignedHeaders":"content-type;host"}),b=["PUT",this.objectPath(e,h),m.toString(),`content-type:${s}
64
64
  host:${o}
65
65
  `,"content-type;host","UNSIGNED-PAYLOAD"].join(`
66
- `),S=["AWS4-HMAC-SHA256",l,p,c.createHash("sha256").update(b).digest("hex")].join(`
67
- `),f=c.createHmac("sha256",`AWS4${r}`).update(d).digest(),x=c.createHmac("sha256",f).update(this.region).digest(),C=c.createHmac("sha256",x).update("s3").digest(),w=c.createHmac("sha256",C).update("aws4_request").digest(),T=c.createHmac("sha256",w).update(S).digest("hex");return m.append("X-Amz-Signature",T),`${this.endpointProtocol}://${o}${this.objectPath(e,y)}?${m.toString()}`}async createMultipartUpload(e,t,s){let i={};if(s?.contentType)i["Content-Type"]=s.contentType;if(s?.metadata)for(let[a,l]of Object.entries(s.metadata))i[`x-amz-meta-${a}`]=l;let n=t.split("/").map((a)=>encodeURIComponent(a)).join("/"),r=await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${n}`,bucket:e,queryParams:{uploads:""},headers:i});return{UploadId:(r?.InitiateMultipartUploadResult??r)?.UploadId}}async uploadPart(e,t,s,i,n){let{accessKeyId:r,secretAccessKey:o,sessionToken:a}=this.getCredentials(),l=this.s3VirtualHost(e),d=t.split("/").map((O)=>encodeURIComponent(O)).join("/"),p=this.objectPath(e,d),h=`${this.objectUrl(e,d)}?partNumber=${i}&uploadId=${encodeURIComponent(s)}`,y=new Date,m=y.toISOString().replace(/[:-]|\.\d{3}/g,""),b=y.toISOString().slice(0,10).replace(/-/g,""),S=c.createHash("sha256").update(n).digest("hex"),f={host:l,"x-amz-date":m,"x-amz-content-sha256":S};if(a)f["x-amz-security-token"]=a;let x=Object.keys(f).sort().map((O)=>`${O.toLowerCase()}:${f[O].trim()}
68
- `).join(""),C=Object.keys(f).sort().map((O)=>O.toLowerCase()).join(";"),w=["PUT",p,`partNumber=${i}&uploadId=${encodeURIComponent(s)}`,x,C,S].join(`
66
+ `),S=["AWS4-HMAC-SHA256",l,y,c.createHash("sha256").update(b).digest("hex")].join(`
67
+ `),f=c.createHmac("sha256",`AWS4${r}`).update(d).digest(),x=c.createHmac("sha256",f).update(this.region).digest(),C=c.createHmac("sha256",x).update("s3").digest(),w=c.createHmac("sha256",C).update("aws4_request").digest(),T=c.createHmac("sha256",w).update(S).digest("hex");return m.append("X-Amz-Signature",T),`${this.endpointProtocol}://${o}${this.objectPath(e,h)}?${m.toString()}`}async createMultipartUpload(e,t,s){let i={};if(s?.contentType)i["Content-Type"]=s.contentType;if(s?.metadata)for(let[a,l]of Object.entries(s.metadata))i[`x-amz-meta-${a}`]=l;let n=t.split("/").map((a)=>encodeURIComponent(a)).join("/"),r=await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${n}`,bucket:e,queryParams:{uploads:""},headers:i});return{UploadId:(r?.InitiateMultipartUploadResult??r)?.UploadId}}async uploadPart(e,t,s,i,n){let{accessKeyId:r,secretAccessKey:o,sessionToken:a}=this.getCredentials(),l=this.s3VirtualHost(e),d=t.split("/").map((O)=>encodeURIComponent(O)).join("/"),y=this.objectPath(e,d),u=`${this.objectUrl(e,d)}?partNumber=${i}&uploadId=${encodeURIComponent(s)}`,h=new Date,m=h.toISOString().replace(/[:-]|\.\d{3}/g,""),b=h.toISOString().slice(0,10).replace(/-/g,""),S=c.createHash("sha256").update(n).digest("hex"),f={host:l,"x-amz-date":m,"x-amz-content-sha256":S};if(a)f["x-amz-security-token"]=a;let x=Object.keys(f).sort().map((O)=>`${O.toLowerCase()}:${f[O].trim()}
68
+ `).join(""),C=Object.keys(f).sort().map((O)=>O.toLowerCase()).join(";"),w=["PUT",y,`partNumber=${i}&uploadId=${encodeURIComponent(s)}`,x,C,S].join(`
69
69
  `),T="AWS4-HMAC-SHA256",q=`${b}/${this.region}/s3/aws4_request`,I=[T,m,q,c.createHash("sha256").update(w).digest("hex")].join(`
70
- `),K=c.createHmac("sha256",`AWS4${o}`).update(b).digest(),H=c.createHmac("sha256",K).update(this.region).digest(),E=c.createHmac("sha256",H).update("s3").digest(),v=c.createHmac("sha256",E).update("aws4_request").digest(),A=c.createHmac("sha256",v).update(I).digest("hex"),k=`${T} Credential=${r}/${q}, SignedHeaders=${C}, Signature=${A}`,P=await fetch(h,{method:"PUT",headers:{...f,Authorization:k},body:U(n)});if(!P.ok){let O=await P.text();throw Error(`Upload part failed: ${P.status} ${O}`)}return{ETag:P.headers.get("etag")||""}}async completeMultipartUpload(e,t,s,i){let n=t.split("/").map((a)=>encodeURIComponent(a)).join("/"),o=`<?xml version="1.0" encoding="UTF-8"?>
70
+ `),K=c.createHmac("sha256",`AWS4${o}`).update(b).digest(),H=c.createHmac("sha256",K).update(this.region).digest(),E=c.createHmac("sha256",H).update("s3").digest(),v=c.createHmac("sha256",E).update("aws4_request").digest(),A=c.createHmac("sha256",v).update(I).digest("hex"),k=`${T} Credential=${r}/${q}, SignedHeaders=${C}, Signature=${A}`,P=await fetch(u,{method:"PUT",headers:{...f,Authorization:k},body:U(n)});if(!P.ok){let O=await P.text();throw Error(`Upload part failed: ${P.status} ${O}`)}return{ETag:P.headers.get("etag")||""}}async completeMultipartUpload(e,t,s,i){let n=t.split("/").map((a)=>encodeURIComponent(a)).join("/"),o=`<?xml version="1.0" encoding="UTF-8"?>
71
71
  <CompleteMultipartUpload>${i.sort((a,l)=>a.PartNumber-l.PartNumber).map((a)=>`<Part><PartNumber>${a.PartNumber}</PartNumber><ETag>${a.ETag}</ETag></Part>`).join("")}</CompleteMultipartUpload>`;await this.client.request({service:"s3",region:this.region,method:"POST",path:`/${n}`,bucket:e,queryParams:{uploadId:s},headers:{"Content-Type":"application/xml"},body:o})}async abortMultipartUpload(e,t,s){let i=t.split("/").map((n)=>encodeURIComponent(n)).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((n)=>({Key:n.Key,UploadId:n.UploadId,Initiated:n.Initiated}))}async restoreObject(e,t,s,i="Standard"){let n=`<?xml version="1.0" encoding="UTF-8"?>
72
72
  <RestoreRequest>
73
73
  <Days>${s}</Days>
@@ -80,10 +80,10 @@ host:${o}
80
80
  <ExpressionType>SQL</ExpressionType>
81
81
  <InputSerialization>${r}</InputSerialization>
82
82
  <OutputSerialization>${o}</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:a,rawResponse:!0})}async getSignedUrl(e){let{bucket:t,key:s,expiresIn:i=3600,operation:n="getObject"}=e,{accessKeyId:r,secretAccessKey:o,sessionToken:a}=this.getCredentials(),l=new Date,d=l.toISOString().replace(/[:-]|\.\d{3}/g,""),p=l.toISOString().slice(0,10).replace(/-/g,""),h=this.s3VirtualHost(t),y=n==="putObject"?"PUT":"GET",m="AWS4-HMAC-SHA256",b=`${p}/${this.region}/s3/aws4_request`,f={"X-Amz-Algorithm":"AWS4-HMAC-SHA256","X-Amz-Credential":`${r}/${b}`,"X-Amz-Date":d,"X-Amz-Expires":i.toString(),"X-Amz-SignedHeaders":"host"};if(a)f["X-Amz-Security-Token"]=a;let C=Object.keys(f).sort().map((R)=>`${encodeURIComponent(R)}=${encodeURIComponent(f[R])}`).join("&"),w=s.split("/").map((R)=>encodeURIComponent(R)).join("/"),T=this.objectPath(t,w),q=`host:${h}
84
- `,H=[y,T,C,q,"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:a,rawResponse:!0})}async getSignedUrl(e){let{bucket:t,key:s,expiresIn:i=3600,operation:n="getObject"}=e,{accessKeyId:r,secretAccessKey:o,sessionToken:a}=this.getCredentials(),l=new Date,d=l.toISOString().replace(/[:-]|\.\d{3}/g,""),y=l.toISOString().slice(0,10).replace(/-/g,""),u=this.s3VirtualHost(t),h=n==="putObject"?"PUT":"GET",m="AWS4-HMAC-SHA256",b=`${y}/${this.region}/s3/aws4_request`,f={"X-Amz-Algorithm":"AWS4-HMAC-SHA256","X-Amz-Credential":`${r}/${b}`,"X-Amz-Date":d,"X-Amz-Expires":i.toString(),"X-Amz-SignedHeaders":"host"};if(a)f["X-Amz-Security-Token"]=a;let C=Object.keys(f).sort().map((R)=>`${encodeURIComponent(R)}=${encodeURIComponent(f[R])}`).join("&"),w=s.split("/").map((R)=>encodeURIComponent(R)).join("/"),T=this.objectPath(t,w),q=`host:${u}
84
+ `,H=[h,T,C,q,"host","UNSIGNED-PAYLOAD"].join(`
85
85
  `),E=["AWS4-HMAC-SHA256",d,b,c.createHash("sha256").update(H).digest("hex")].join(`
86
- `),v=c.createHmac("sha256",`AWS4${o}`).update(p).digest(),A=c.createHmac("sha256",v).update(this.region).digest(),k=c.createHmac("sha256",A).update("s3").digest(),P=c.createHmac("sha256",k).update("aws4_request").digest(),O=c.createHmac("sha256",P).update(E).digest("hex");return`${this.endpointProtocol}://${h}${T}?${C}&X-Amz-Signature=${O}`}async listObjects(e){let{bucket:t,prefix:s,delimiter:i,maxKeys:n=1000,continuationToken:r}=e,o={"list-type":"2","max-keys":n.toString()};if(s)o.prefix=s;if(i)o.delimiter=i;if(r)o["continuation-token"]=r;let a=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${t}`,queryParams:o}),l=[],d=a?.ListBucketResult??a;if(d?.Contents){let h=Array.isArray(d.Contents)?d.Contents:[d.Contents];for(let y of h)l.push({Key:String(y.Key??""),LastModified:y.LastModified||"",Size:Number.parseInt(y.Size||"0"),ETag:y.ETag})}let p=[];if(d?.CommonPrefixes){let h=Array.isArray(d.CommonPrefixes)?d.CommonPrefixes:[d.CommonPrefixes];for(let y of h)if(y?.Prefix!==void 0&&y.Prefix!=="")p.push(String(y.Prefix))}return{objects:l,commonPrefixes:p,nextContinuationToken:d?.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 r=s.slice(i,i+1000).map((o)=>o.Key);await this.deleteObjects(e,r),t+=r.length}try{let i,n;do{let r=await this.listObjectVersions({bucket:e,keyMarker:i,versionIdMarker:n,maxKeys:1000}),o=[];if(r.versions)for(let a of r.versions)o.push({Key:a.Key,VersionId:a.VersionId});if(r.deleteMarkers)for(let a of r.deleteMarkers)o.push({Key:a.Key,VersionId:a.VersionId});if(o.length>0)await this.deleteObjectVersions(e,o),t+=o.length;i=r.nextKeyMarker,n=r.nextVersionIdMarker}while(i)}catch{}return{deletedCount:t}}async listObjectVersions(e){let{bucket:t,prefix:s,keyMarker:i,versionIdMarker:n,maxKeys:r=1000}=e,o={versions:"","max-keys":r.toString()};if(s)o.prefix=s;if(i)o["key-marker"]=i;if(n)o["version-id-marker"]=n;let a=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${t}`,queryParams:o}),l=[],d=[];if(a.Version){let p=Array.isArray(a.Version)?a.Version:[a.Version];for(let h of p)l.push({Key:h.Key,VersionId:h.VersionId,IsLatest:h.IsLatest==="true"})}if(a.DeleteMarker){let p=Array.isArray(a.DeleteMarker)?a.DeleteMarker:[a.DeleteMarker];for(let h of p)d.push({Key:h.Key,VersionId:h.VersionId,IsLatest:h.IsLatest==="true"})}return{versions:l,deleteMarkers:d,nextKeyMarker:a.NextKeyMarker,nextVersionIdMarker:a.NextVersionIdMarker}}async deleteObjectVersions(e,t){let s=`<?xml version="1.0" encoding="UTF-8"?>
86
+ `),v=c.createHmac("sha256",`AWS4${o}`).update(y).digest(),A=c.createHmac("sha256",v).update(this.region).digest(),k=c.createHmac("sha256",A).update("s3").digest(),P=c.createHmac("sha256",k).update("aws4_request").digest(),O=c.createHmac("sha256",P).update(E).digest("hex");return`${this.endpointProtocol}://${u}${T}?${C}&X-Amz-Signature=${O}`}async listObjects(e){let{bucket:t,prefix:s,delimiter:i,maxKeys:n=1000,continuationToken:r}=e,o={"list-type":"2","max-keys":n.toString()};if(s)o.prefix=s;if(i)o.delimiter=i;if(r)o["continuation-token"]=r;let a=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${t}`,queryParams:o}),l=[],d=a?.ListBucketResult??a;if(d?.Contents){let u=Array.isArray(d.Contents)?d.Contents:[d.Contents];for(let h of u)l.push({Key:String(h.Key??""),LastModified:h.LastModified||"",Size:Number.parseInt(h.Size||"0"),ETag:h.ETag})}let y=[];if(d?.CommonPrefixes){let u=Array.isArray(d.CommonPrefixes)?d.CommonPrefixes:[d.CommonPrefixes];for(let h of u)if(h?.Prefix!==void 0&&h.Prefix!=="")y.push(String(h.Prefix))}return{objects:l,commonPrefixes:y,nextContinuationToken:d?.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 r=s.slice(i,i+1000).map((o)=>o.Key);await this.deleteObjects(e,r),t+=r.length}try{let i,n;do{let r=await this.listObjectVersions({bucket:e,keyMarker:i,versionIdMarker:n,maxKeys:1000}),o=[];if(r.versions)for(let a of r.versions)o.push({Key:a.Key,VersionId:a.VersionId});if(r.deleteMarkers)for(let a of r.deleteMarkers)o.push({Key:a.Key,VersionId:a.VersionId});if(o.length>0)await this.deleteObjectVersions(e,o),t+=o.length;i=r.nextKeyMarker,n=r.nextVersionIdMarker}while(i)}catch{}return{deletedCount:t}}async listObjectVersions(e){let{bucket:t,prefix:s,keyMarker:i,versionIdMarker:n,maxKeys:r=1000}=e,o={versions:"","max-keys":r.toString()};if(s)o.prefix=s;if(i)o["key-marker"]=i;if(n)o["version-id-marker"]=n;let a=await this.client.request({service:"s3",region:this.region,method:"GET",path:`/${t}`,queryParams:o}),l=[],d=[];if(a.Version){let y=Array.isArray(a.Version)?a.Version:[a.Version];for(let u of y)l.push({Key:u.Key,VersionId:u.VersionId,IsLatest:u.IsLatest==="true"})}if(a.DeleteMarker){let y=Array.isArray(a.DeleteMarker)?a.DeleteMarker:[a.DeleteMarker];for(let u of y)d.push({Key:u.Key,VersionId:u.VersionId,IsLatest:u.IsLatest==="true"})}return{versions:l,deleteMarkers:d,nextKeyMarker:a.NextKeyMarker,nextVersionIdMarker:a.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((n)=>`<Object><Key>${n.Key}</Key>${n.VersionId?`<VersionId>${n.VersionId}</VersionId>`:""}</Object>`).join(`