@stacksjs/ts-cloud 0.16.66 → 0.16.68

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 (190) hide show
  1. package/dist/aws/index.js +1 -1
  2. package/dist/bin/{chunk-8bgfn8ek.js → chunk-17ewx21n.js} +11 -11
  3. package/dist/bin/chunk-19dhvnjh.js +1 -0
  4. package/dist/bin/{chunk-ya1413jw.js → chunk-1cb0r1j3.js} +2 -2
  5. package/dist/bin/chunk-1tk64amh.js +1 -0
  6. package/dist/bin/{chunk-tcn6qcc4.js → chunk-2247xk4n.js} +1 -1
  7. package/dist/bin/chunk-37xeqae4.js +1 -0
  8. package/dist/bin/{chunk-zesb85ra.js → chunk-43a60zkj.js} +1 -1
  9. package/dist/bin/chunk-4vz5erjz.js +1 -0
  10. package/dist/bin/{chunk-2avtspqd.js → chunk-55j0x82p.js} +5 -5
  11. package/dist/bin/{chunk-zs0q8sh5.js → chunk-5fde4d44.js} +1 -1
  12. package/dist/bin/{chunk-tw6z2mvh.js → chunk-5gf0je0v.js} +14 -14
  13. package/dist/bin/{chunk-0ejp168p.js → chunk-5t1ky9re.js} +1 -1
  14. package/dist/bin/chunk-6cyr6gcg.js +1 -0
  15. package/dist/bin/chunk-6rwewb7j.js +1 -0
  16. package/dist/bin/{chunk-d38cyam8.js → chunk-6tqzgm9z.js} +5 -5
  17. package/dist/bin/chunk-7d83f6sn.js +1 -0
  18. package/dist/bin/chunk-7v68hpgc.js +2 -0
  19. package/dist/bin/{chunk-nn8k84cd.js → chunk-7y56qyrj.js} +1 -1
  20. package/dist/bin/{chunk-e51cd46z.js → chunk-8escxm7h.js} +1 -1
  21. package/dist/bin/{chunk-6r04kx46.js → chunk-abk97qeq.js} +2 -2
  22. package/dist/bin/{chunk-qpvydcfm.js → chunk-b0r8a5h5.js} +5 -5
  23. package/dist/bin/chunk-bkvxzenb.js +1 -0
  24. package/dist/bin/{chunk-v6jm8dsa.js → chunk-d28q9ath.js} +1 -1
  25. package/dist/bin/chunk-dmm1p4bs.js +1 -0
  26. package/dist/bin/chunk-dycx66c7.js +1 -0
  27. package/dist/bin/{chunk-aekwpste.js → chunk-e4c7ba0g.js} +1 -1
  28. package/dist/bin/chunk-fjx816tt.js +1 -0
  29. package/dist/bin/{chunk-nbqja2ja.js → chunk-fx9zesgx.js} +113 -113
  30. package/dist/bin/{chunk-9pj5r0x0.js → chunk-gga18c4g.js} +1 -1
  31. package/dist/bin/chunk-gmy8p7nr.js +1 -0
  32. package/dist/bin/chunk-h5ccvped.js +1 -0
  33. package/dist/bin/chunk-h9h9dn0r.js +1 -0
  34. package/dist/bin/chunk-ht6s2cwm.js +1 -0
  35. package/dist/bin/{chunk-vbq4ten8.js → chunk-jrxb5sg4.js} +3 -3
  36. package/dist/bin/{chunk-cf2eyje1.js → chunk-krt80e8w.js} +7 -7
  37. package/dist/bin/{chunk-sbjzewvk.js → chunk-m60wwxz1.js} +6 -6
  38. package/dist/bin/{chunk-w4axqmyc.js → chunk-m92m9tx3.js} +84 -84
  39. package/dist/bin/{chunk-d0q93ecd.js → chunk-mjbd4pbz.js} +5 -5
  40. package/dist/bin/chunk-ncr1dwdt.js +1 -0
  41. package/dist/bin/{chunk-tpttr74v.js → chunk-nxsx69p4.js} +4 -4
  42. package/dist/bin/chunk-nzhpva7z.js +1 -0
  43. package/dist/bin/chunk-p40tvp17.js +1 -0
  44. package/dist/bin/{chunk-n667tnf3.js → chunk-pgbtdsj2.js} +3 -3
  45. package/dist/bin/{chunk-5ad4b744.js → chunk-pr96tp0s.js} +2 -2
  46. package/dist/bin/chunk-qe8zh9kn.js +1 -0
  47. package/dist/bin/{chunk-v5x06h8w.js → chunk-qjxd8f5m.js} +5 -5
  48. package/dist/bin/{chunk-favx96qj.js → chunk-qka0e661.js} +5 -5
  49. package/dist/bin/{chunk-pe18g092.js → chunk-rgnmxfvp.js} +3 -3
  50. package/dist/bin/chunk-sn1zde06.js +1 -0
  51. package/dist/bin/{chunk-71b4t3d8.js → chunk-sv7n9ape.js} +2 -2
  52. package/dist/bin/chunk-t6zpvaqr.js +1 -0
  53. package/dist/bin/{chunk-90ds3vw7.js → chunk-tdv5rwjv.js} +1 -1
  54. package/dist/bin/chunk-v4ncs6q2.js +1 -0
  55. package/dist/bin/{chunk-v3j9wgmn.js → chunk-v5js5pz6.js} +186 -186
  56. package/dist/bin/chunk-vrn0akcn.js +1 -0
  57. package/dist/bin/{chunk-mver6psb.js → chunk-w2eezm9z.js} +2 -2
  58. package/dist/bin/{chunk-6da5c33e.js → chunk-wjn2bpdb.js} +2 -2
  59. package/dist/bin/chunk-x00efaxm.js +1 -0
  60. package/dist/bin/{chunk-38qy0dj2.js → chunk-x40sd2m9.js} +3 -3
  61. package/dist/bin/chunk-zred4827.js +1 -0
  62. package/dist/bin/{chunk-tg3vzzc4.js → chunk-zs1cpqhv.js} +2 -2
  63. package/dist/bin/{chunk-kmxkwznm.js → chunk-zz9nj5kn.js} +5 -5
  64. package/dist/bin/cli.js +101 -101
  65. package/dist/bin/dashboard-server.js +1 -1
  66. package/dist/{chunk-y9589qef.js → chunk-040rbk7k.js} +35 -35
  67. package/dist/{chunk-f739f6d2.js → chunk-192rthtb.js} +70 -70
  68. package/dist/{chunk-9w5ncn9s.js → chunk-1wc2zfct.js} +3 -3
  69. package/dist/{chunk-axcxfz8p.js → chunk-1yj07hbw.js} +2 -2
  70. package/dist/{chunk-0kemzwpg.js → chunk-41fwhvp7.js} +1 -1
  71. package/dist/chunk-426k7fgf.js +1 -0
  72. package/dist/chunk-4b0ynr9y.js +1 -0
  73. package/dist/{chunk-a92gvctb.js → chunk-a07kew2q.js} +6 -6
  74. package/dist/chunk-emkp3dsp.js +1 -0
  75. package/dist/{chunk-pymc2aad.js → chunk-h360gwrf.js} +2 -2
  76. package/dist/{chunk-7mpbjr6c.js → chunk-h5yx54ks.js} +3 -3
  77. package/dist/{chunk-q4408fwg.js → chunk-hvttzk9q.js} +2 -2
  78. package/dist/{chunk-q8vvwmka.js → chunk-je8tky8z.js} +1 -1
  79. package/dist/{chunk-03eny26f.js → chunk-kbr9nc8y.js} +2 -2
  80. package/dist/{chunk-3ca6cb1s.js → chunk-p21vbrgk.js} +1 -1
  81. package/dist/chunk-pcagajw1.js +1 -0
  82. package/dist/{chunk-83fy36fn.js → chunk-qb25wesa.js} +2 -2
  83. package/dist/{chunk-hk1frmnn.js → chunk-qrpy0h2n.js} +1 -1
  84. package/dist/{chunk-xd67tr7p.js → chunk-s4wz0csj.js} +1 -1
  85. package/dist/{chunk-157bgr0x.js → chunk-spr6akra.js} +90 -90
  86. package/dist/chunk-sybwn2y6.js +1 -0
  87. package/dist/{chunk-r49ynkag.js → chunk-t8fbwcdk.js} +1 -1
  88. package/dist/{chunk-qgtydqpj.js → chunk-tb8azghz.js} +23 -23
  89. package/dist/{chunk-pah2r8a0.js → chunk-tq7nsdnd.js} +4 -4
  90. package/dist/{chunk-0860mm00.js → chunk-v0s8vpa3.js} +1 -1
  91. package/dist/{chunk-tngsyawj.js → chunk-xyem7g21.js} +1 -1
  92. package/dist/{chunk-zgfzc46r.js → chunk-yh9tmx00.js} +3 -3
  93. package/dist/{chunk-1t3rjvf9.js → chunk-z585dfjz.js} +12 -12
  94. package/dist/deploy/index.js +1 -1
  95. package/dist/dns/index.js +1 -1
  96. package/dist/drivers/index.js +1 -1
  97. package/dist/drivers/shared/releases.d.ts +12 -0
  98. package/dist/index.js +8 -8
  99. package/dist/mail/index.js +2 -2
  100. package/dist/object-storage/index.d.ts +6 -4
  101. package/dist/object-storage/migrate.d.ts +3 -1
  102. package/dist/operations/index.js +1 -1
  103. package/dist/protection/index.js +1 -1
  104. package/dist/spend/index.js +1 -1
  105. package/dist/ui/404.html +1 -1
  106. package/dist/ui/accept-invitation.html +1 -1
  107. package/dist/ui/access-denied.html +1 -1
  108. package/dist/ui/account/automation.html +5 -5
  109. package/dist/ui/account/security.html +2 -2
  110. package/dist/ui/applications/compose.html +6 -6
  111. package/dist/ui/applications/new.html +2 -2
  112. package/dist/ui/data/backups.html +6 -6
  113. package/dist/ui/data/services.html +6 -6
  114. package/dist/ui/data/volumes.html +6 -6
  115. package/dist/ui/index.html +6 -6
  116. package/dist/ui/infrastructure/topology.html +6 -6
  117. package/dist/ui/integrations.html +1 -1
  118. package/dist/ui/operations/alerts.html +6 -6
  119. package/dist/ui/operations/configuration.html +6 -6
  120. package/dist/ui/operations/jobs.html +6 -6
  121. package/dist/ui/operations/maintenance.html +6 -6
  122. package/dist/ui/operations/observability.html +6 -6
  123. package/dist/ui/operations/previews.html +6 -6
  124. package/dist/ui/operations/queue.html +6 -6
  125. package/dist/ui/operations/regions.html +6 -6
  126. package/dist/ui/operations/releases.html +6 -6
  127. package/dist/ui/operations/spend.html +6 -6
  128. package/dist/ui/operations/workloads.html +6 -6
  129. package/dist/ui/security.html +1 -1
  130. package/dist/ui/server/actions.html +6 -6
  131. package/dist/ui/server/activity.html +1 -1
  132. package/dist/ui/server/capacity.html +5 -5
  133. package/dist/ui/server/database.html +6 -6
  134. package/dist/ui/server/deployments.html +5 -5
  135. package/dist/ui/server/diagnostics.html +2 -2
  136. package/dist/ui/server/firewall.html +6 -6
  137. package/dist/ui/server/fleet.html +6 -6
  138. package/dist/ui/server/logs.html +6 -6
  139. package/dist/ui/server/metrics.html +5 -5
  140. package/dist/ui/server/security.html +2 -2
  141. package/dist/ui/server/services.html +1 -1
  142. package/dist/ui/server/sites.html +5 -5
  143. package/dist/ui/server/ssh-keys.html +5 -5
  144. package/dist/ui/server/team.html +5 -5
  145. package/dist/ui/server/terminal.html +1 -1
  146. package/dist/ui/serverless/alarms.html +5 -5
  147. package/dist/ui/serverless/assets.html +1 -1
  148. package/dist/ui/serverless/cost.html +2 -2
  149. package/dist/ui/serverless/data.html +6 -6
  150. package/dist/ui/serverless/deployments.html +2 -2
  151. package/dist/ui/serverless/firewall.html +1 -1
  152. package/dist/ui/serverless/functions.html +6 -6
  153. package/dist/ui/serverless/logs.html +6 -6
  154. package/dist/ui/serverless/metrics.html +2 -2
  155. package/dist/ui/serverless/queues.html +6 -6
  156. package/dist/ui/serverless/secrets.html +6 -6
  157. package/dist/ui/serverless/traces.html +6 -6
  158. package/dist/ui/serverless.html +5 -5
  159. package/package.json +3 -3
  160. package/dist/bin/chunk-0v5tsfx5.js +0 -1
  161. package/dist/bin/chunk-3954zb9r.js +0 -1
  162. package/dist/bin/chunk-3x52axr2.js +0 -1
  163. package/dist/bin/chunk-67mww6gq.js +0 -1
  164. package/dist/bin/chunk-7khzyn7k.js +0 -1
  165. package/dist/bin/chunk-97494wnx.js +0 -1
  166. package/dist/bin/chunk-agmznzms.js +0 -1
  167. package/dist/bin/chunk-ambf5hpg.js +0 -1
  168. package/dist/bin/chunk-b39h9as6.js +0 -1
  169. package/dist/bin/chunk-dfgzav9j.js +0 -1
  170. package/dist/bin/chunk-g0w0jec3.js +0 -1
  171. package/dist/bin/chunk-g514nb80.js +0 -1
  172. package/dist/bin/chunk-hknz7fsr.js +0 -1
  173. package/dist/bin/chunk-j9yq3b4d.js +0 -2
  174. package/dist/bin/chunk-k8qrjnyg.js +0 -1
  175. package/dist/bin/chunk-kqstefmv.js +0 -1
  176. package/dist/bin/chunk-mk2h37pm.js +0 -1
  177. package/dist/bin/chunk-nrtjmzzn.js +0 -1
  178. package/dist/bin/chunk-q3rch5hc.js +0 -1
  179. package/dist/bin/chunk-qqb6h33k.js +0 -1
  180. package/dist/bin/chunk-r1p3k2tn.js +0 -1
  181. package/dist/bin/chunk-t8xq3v3j.js +0 -1
  182. package/dist/bin/chunk-xb48vxmk.js +0 -1
  183. package/dist/bin/chunk-yehb738r.js +0 -1
  184. package/dist/bin/chunk-ythfx8pv.js +0 -1
  185. package/dist/bin/chunk-zynfzzjk.js +0 -1
  186. package/dist/chunk-0c48hvb8.js +0 -1
  187. package/dist/chunk-8crqfe8x.js +0 -1
  188. package/dist/chunk-949tycxj.js +0 -1
  189. package/dist/chunk-s3pe89wj.js +0 -1
  190. package/dist/chunk-wxjd9gyb.js +0 -1
@@ -0,0 +1 @@
1
+ import{ne}from"./chunk-xyem7g21.js";import"./chunk-1wc2zfct.js";export{ne as RDSClient};
@@ -1,4 +1,4 @@
1
- import{n}from"./chunk-9w5ncn9s.js";import{y}from"./chunk-g0bh9atv.js";function P(e){let i=Array.isArray(e?.Items)?e.Items:y(e?.Items?.CNAME);return{Quantity:i.length,Items:i.map(String)}}function Dc(e){return y(e?.Origins?.Items?.Origin)}function Qe(e){for(let i of Dc(e)){let t=String(i.DomainName??"").match(/^(.+?)\.s3[.-]/)?.[1];if(t)return t}return}class I{client;constructor(e,i){this.client=i??new n(void 0,{profile:e})}collectionItems(e,i){let t=e?.Items??e?.[i];if(!t)return[];if(Array.isArray(t))return t;let r=t[i]??t.Item;if(r===void 0)return typeof t==="object"&&(t.Id||t.PathPattern)?[t]:[];return Array.isArray(r)?r:[r]}validateExistingOriginInput(e,i){if(!/^[A-Z0-9]{8,32}$/.test(e))throw Error("CloudFront distribution ID is invalid");if(!/^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/.test(i.id))throw Error("CloudFront origin ID is invalid");if(!/^(?=.{1,253}$)(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$/.test(i.domainName))throw Error("CloudFront origin must be a hostname without a scheme or path");let t=i.pathPattern.startsWith("/")?i.pathPattern:`/${i.pathPattern}`;if(t==="/"||t==="/*"||!/^\/[A-Za-z0-9_.*?~!$&'()+,;=:@%/-]{1,255}$/.test(t))throw Error("CloudFront path pattern must be a non-default absolute pattern");if(i.originPath&&(!i.originPath.startsWith("/")||i.originPath.includes("..")))throw Error("CloudFront origin path must be absolute and traversal-free");if(Object.entries(i.customHeaders??{}).some(([r,s])=>!/^[A-Za-z0-9-]{1,64}$/.test(r)||!s||s.length>1024))throw Error("CloudFront custom origin headers are invalid");return{...i,pathPattern:t}}async upsertExistingDistributionOrigin(e,i){let t=this.validateExistingOriginInput(e,i),r=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/config`,returnHeaders:!0}),s=r.headers?.etag||r.headers?.ETag||r.ETag||"",o=r.body?.DistributionConfig||r.DistributionConfig||r.body;if(!o||o.Enabled===void 0||!s)throw Error("Failed to read an ETag-protected CloudFront distribution config");let a=this.collectionItems(o.Origins,"Origin"),c=this.collectionItems(o.CacheBehaviors,"CacheBehavior"),u=a.find((f)=>String(f.Id)===t.id),d=c.find((f)=>String(f.PathPattern)===t.pathPattern);if(u&&String(u.DomainName)!==t.domainName&&!t.replaceExisting)throw Error(`Origin ${t.id} already targets ${u.DomainName}; pass replaceExisting only after reviewing the live config`);if(d&&String(d.TargetOriginId)!==t.id&&!t.replaceExisting)throw Error(`Path ${t.pathPattern} already targets ${d.TargetOriginId}; pass replaceExisting only after reviewing the live config`);let g={Id:t.id,DomainName:t.domainName,OriginPath:t.originPath??"",CustomHeaders:{Quantity:Object.keys(t.customHeaders??{}).length,...Object.keys(t.customHeaders??{}).length?{Items:{OriginCustomHeader:Object.entries(t.customHeaders).map(([f,A])=>({HeaderName:f,HeaderValue:A}))}}:{}},CustomOriginConfig:{HTTPPort:80,HTTPSPort:443,OriginProtocolPolicy:t.protocolPolicy??"https-only",OriginSslProtocols:{Quantity:1,Items:{SslProtocol:["TLSv1.2"]}},OriginReadTimeout:30,OriginKeepaliveTimeout:5},ConnectionAttempts:3,ConnectionTimeout:10,...t.originAccessControlId?{OriginAccessControlId:t.originAccessControlId}:{}},h=["GET","HEAD","OPTIONS","PUT","POST","PATCH","DELETE"],l={PathPattern:t.pathPattern,TargetOriginId:t.id,ViewerProtocolPolicy:"redirect-to-https",Compress:!0,CachePolicyId:"4135ea2d-6df8-44a3-9df3-4b5a84be39ad",OriginRequestPolicyId:"b689b0a8-53d0-40ab-baf2-68738e2966ac",AllowedMethods:{Quantity:h.length,Items:{Method:h},CachedMethods:{Quantity:2,Items:{Method:["GET","HEAD"]}}},SmoothStreaming:!1,FieldLevelEncryptionId:"",TrustedSigners:{Enabled:!1,Quantity:0},TrustedKeyGroups:{Enabled:!1,Quantity:0},LambdaFunctionAssociations:{Quantity:0},FunctionAssociations:{Quantity:0}},C=u?a.map((f)=>String(f.Id)===t.id?g:f):[...a,g],m=d?c.map((f)=>String(f.PathPattern)===t.pathPattern?l:f):[...c,l],E=JSON.stringify(a)!==JSON.stringify(C)||JSON.stringify(c)!==JSON.stringify(m);if(!E||t.dryRun)return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:E,applied:!1,etag:s};o.Origins={Quantity:C.length,Items:{Origin:C}},o.CacheBehaviors={Quantity:m.length,...m.length?{Items:{CacheBehavior:m}}:{}};let b=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${e}/config`,body:this.buildDistributionConfigXml(o),headers:{"Content-Type":"application/xml","If-Match":s},returnHeaders:!0});return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!0,applied:!0,etag:b.headers?.etag||b.headers?.ETag||""}}async removeExistingDistributionOrigin(e,i){let t=this.validateExistingOriginInput(e,i),r=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/config`,returnHeaders:!0}),s=r.headers?.etag||r.headers?.ETag||r.ETag||"",o=r.body?.DistributionConfig||r.DistributionConfig||r.body;if(!o||o.Enabled===void 0||!s)throw Error("Failed to read an ETag-protected CloudFront distribution config");let a=this.collectionItems(o.Origins,"Origin"),c=this.collectionItems(o.CacheBehaviors,"CacheBehavior"),u=a.find((m)=>String(m.Id)===t.id),d=c.find((m)=>String(m.PathPattern)===t.pathPattern);if(u&&String(u.DomainName)!==t.domainName)throw Error(`Origin ${t.id} no longer targets ${t.domainName}; refusing ambiguous removal`);if(d&&String(d.TargetOriginId)!==t.id)throw Error(`Path ${t.pathPattern} no longer targets ${t.id}; refusing ambiguous removal`);if(!d)return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!1,applied:!1,originRemoved:!1,etag:s};let g=c.filter((m)=>String(m.PathPattern)!==t.pathPattern),h=String(o.DefaultCacheBehavior?.TargetOriginId)===t.id||g.some((m)=>String(m.TargetOriginId)===t.id),l=h?a:a.filter((m)=>String(m.Id)!==t.id);if(t.dryRun)return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!0,applied:!1,originRemoved:!h&&!!u,etag:s};o.Origins={Quantity:l.length,Items:{Origin:l}},o.CacheBehaviors={Quantity:g.length,...g.length?{Items:{CacheBehavior:g}}:{}};let C=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${e}/config`,body:this.buildDistributionConfigXml(o),headers:{"Content-Type":"application/xml","If-Match":s},returnHeaders:!0});return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!0,applied:!0,originRemoved:!h&&!!u,etag:C.headers?.etag||C.headers?.ETag||""}}async createInvalidation(e){let i=e.callerReference||Date.now().toString(),t=`<?xml version="1.0" encoding="UTF-8"?>
1
+ import{n}from"./chunk-1wc2zfct.js";import{y}from"./chunk-g0bh9atv.js";function P(e){let i=Array.isArray(e?.Items)?e.Items:y(e?.Items?.CNAME);return{Quantity:i.length,Items:i.map(String)}}function Dc(e){return y(e?.Origins?.Items?.Origin)}function Qe(e){for(let i of Dc(e)){let t=String(i.DomainName??"").match(/^(.+?)\.s3[.-]/)?.[1];if(t)return t}return}class I{client;constructor(e,i){this.client=i??new n(void 0,{profile:e})}collectionItems(e,i){let t=e?.Items??e?.[i];if(!t)return[];if(Array.isArray(t))return t;let r=t[i]??t.Item;if(r===void 0)return typeof t==="object"&&(t.Id||t.PathPattern)?[t]:[];return Array.isArray(r)?r:[r]}validateExistingOriginInput(e,i){if(!/^[A-Z0-9]{8,32}$/.test(e))throw Error("CloudFront distribution ID is invalid");if(!/^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/.test(i.id))throw Error("CloudFront origin ID is invalid");if(!/^(?=.{1,253}$)(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$/.test(i.domainName))throw Error("CloudFront origin must be a hostname without a scheme or path");let t=i.pathPattern.startsWith("/")?i.pathPattern:`/${i.pathPattern}`;if(t==="/"||t==="/*"||!/^\/[A-Za-z0-9_.*?~!$&'()+,;=:@%/-]{1,255}$/.test(t))throw Error("CloudFront path pattern must be a non-default absolute pattern");if(i.originPath&&(!i.originPath.startsWith("/")||i.originPath.includes("..")))throw Error("CloudFront origin path must be absolute and traversal-free");if(Object.entries(i.customHeaders??{}).some(([r,s])=>!/^[A-Za-z0-9-]{1,64}$/.test(r)||!s||s.length>1024))throw Error("CloudFront custom origin headers are invalid");return{...i,pathPattern:t}}async upsertExistingDistributionOrigin(e,i){let t=this.validateExistingOriginInput(e,i),r=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/config`,returnHeaders:!0}),s=r.headers?.etag||r.headers?.ETag||r.ETag||"",o=r.body?.DistributionConfig||r.DistributionConfig||r.body;if(!o||o.Enabled===void 0||!s)throw Error("Failed to read an ETag-protected CloudFront distribution config");let a=this.collectionItems(o.Origins,"Origin"),c=this.collectionItems(o.CacheBehaviors,"CacheBehavior"),u=a.find((f)=>String(f.Id)===t.id),d=c.find((f)=>String(f.PathPattern)===t.pathPattern);if(u&&String(u.DomainName)!==t.domainName&&!t.replaceExisting)throw Error(`Origin ${t.id} already targets ${u.DomainName}; pass replaceExisting only after reviewing the live config`);if(d&&String(d.TargetOriginId)!==t.id&&!t.replaceExisting)throw Error(`Path ${t.pathPattern} already targets ${d.TargetOriginId}; pass replaceExisting only after reviewing the live config`);let g={Id:t.id,DomainName:t.domainName,OriginPath:t.originPath??"",CustomHeaders:{Quantity:Object.keys(t.customHeaders??{}).length,...Object.keys(t.customHeaders??{}).length?{Items:{OriginCustomHeader:Object.entries(t.customHeaders).map(([f,A])=>({HeaderName:f,HeaderValue:A}))}}:{}},CustomOriginConfig:{HTTPPort:80,HTTPSPort:443,OriginProtocolPolicy:t.protocolPolicy??"https-only",OriginSslProtocols:{Quantity:1,Items:{SslProtocol:["TLSv1.2"]}},OriginReadTimeout:30,OriginKeepaliveTimeout:5},ConnectionAttempts:3,ConnectionTimeout:10,...t.originAccessControlId?{OriginAccessControlId:t.originAccessControlId}:{}},h=["GET","HEAD","OPTIONS","PUT","POST","PATCH","DELETE"],l={PathPattern:t.pathPattern,TargetOriginId:t.id,ViewerProtocolPolicy:"redirect-to-https",Compress:!0,CachePolicyId:"4135ea2d-6df8-44a3-9df3-4b5a84be39ad",OriginRequestPolicyId:"b689b0a8-53d0-40ab-baf2-68738e2966ac",AllowedMethods:{Quantity:h.length,Items:{Method:h},CachedMethods:{Quantity:2,Items:{Method:["GET","HEAD"]}}},SmoothStreaming:!1,FieldLevelEncryptionId:"",TrustedSigners:{Enabled:!1,Quantity:0},TrustedKeyGroups:{Enabled:!1,Quantity:0},LambdaFunctionAssociations:{Quantity:0},FunctionAssociations:{Quantity:0}},C=u?a.map((f)=>String(f.Id)===t.id?g:f):[...a,g],m=d?c.map((f)=>String(f.PathPattern)===t.pathPattern?l:f):[...c,l],E=JSON.stringify(a)!==JSON.stringify(C)||JSON.stringify(c)!==JSON.stringify(m);if(!E||t.dryRun)return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:E,applied:!1,etag:s};o.Origins={Quantity:C.length,Items:{Origin:C}},o.CacheBehaviors={Quantity:m.length,...m.length?{Items:{CacheBehavior:m}}:{}};let b=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${e}/config`,body:this.buildDistributionConfigXml(o),headers:{"Content-Type":"application/xml","If-Match":s},returnHeaders:!0});return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!0,applied:!0,etag:b.headers?.etag||b.headers?.ETag||""}}async removeExistingDistributionOrigin(e,i){let t=this.validateExistingOriginInput(e,i),r=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/config`,returnHeaders:!0}),s=r.headers?.etag||r.headers?.ETag||r.ETag||"",o=r.body?.DistributionConfig||r.DistributionConfig||r.body;if(!o||o.Enabled===void 0||!s)throw Error("Failed to read an ETag-protected CloudFront distribution config");let a=this.collectionItems(o.Origins,"Origin"),c=this.collectionItems(o.CacheBehaviors,"CacheBehavior"),u=a.find((m)=>String(m.Id)===t.id),d=c.find((m)=>String(m.PathPattern)===t.pathPattern);if(u&&String(u.DomainName)!==t.domainName)throw Error(`Origin ${t.id} no longer targets ${t.domainName}; refusing ambiguous removal`);if(d&&String(d.TargetOriginId)!==t.id)throw Error(`Path ${t.pathPattern} no longer targets ${t.id}; refusing ambiguous removal`);if(!d)return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!1,applied:!1,originRemoved:!1,etag:s};let g=c.filter((m)=>String(m.PathPattern)!==t.pathPattern),h=String(o.DefaultCacheBehavior?.TargetOriginId)===t.id||g.some((m)=>String(m.TargetOriginId)===t.id),l=h?a:a.filter((m)=>String(m.Id)!==t.id);if(t.dryRun)return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!0,applied:!1,originRemoved:!h&&!!u,etag:s};o.Origins={Quantity:l.length,Items:{Origin:l}},o.CacheBehaviors={Quantity:g.length,...g.length?{Items:{CacheBehavior:g}}:{}};let C=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${e}/config`,body:this.buildDistributionConfigXml(o),headers:{"Content-Type":"application/xml","If-Match":s},returnHeaders:!0});return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!0,applied:!0,originRemoved:!h&&!!u,etag:C.headers?.etag||C.headers?.ETag||""}}async createInvalidation(e){let i=e.callerReference||Date.now().toString(),t=`<?xml version="1.0" encoding="UTF-8"?>
2
2
  <InvalidationBatch>
3
3
  <Paths>
4
4
  <Quantity>${e.paths.length}</Quantity>