@stacksjs/ts-cloud 0.9.3 → 0.10.0

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 (255) hide show
  1. package/dist/aws/index.js +1 -269
  2. package/dist/bin/chunk-08c0pzkb.js +1 -0
  3. package/dist/bin/chunk-12210qvj.js +1 -0
  4. package/dist/bin/chunk-1v6bt68w.js +6 -0
  5. package/dist/bin/chunk-35ttwn26.js +70 -0
  6. package/dist/bin/chunk-3r3be05z.js +1 -0
  7. package/dist/bin/chunk-41yqpdv7.js +2 -0
  8. package/dist/bin/chunk-5rv31chh.js +1 -0
  9. package/dist/bin/chunk-6eat8ezk.js +2 -0
  10. package/dist/bin/chunk-6gktf2m2.js +1 -0
  11. package/dist/bin/chunk-6zjy949y.js +141 -0
  12. package/dist/bin/chunk-7wzdaqh6.js +2 -0
  13. package/dist/bin/chunk-80ar3aty.js +1 -0
  14. package/dist/bin/chunk-8rwhsp5b.js +2 -0
  15. package/dist/bin/chunk-936vp7dx.js +44 -0
  16. package/dist/bin/chunk-9px3rg4a.js +4 -0
  17. package/dist/bin/chunk-anm3ae6z.js +7364 -0
  18. package/dist/bin/{chunk-ynjvbphf.js → chunk-axvr7dwa.js} +6 -6
  19. package/dist/bin/chunk-b0hj9m5e.js +2 -0
  20. package/dist/bin/{chunk-mh0kdzqp.js → chunk-b2ymh8k0.js} +1 -1
  21. package/dist/bin/chunk-b35989e3.js +50 -0
  22. package/dist/bin/chunk-c2b6nk0q.js +37 -0
  23. package/dist/bin/chunk-ckxpgwxw.js +3 -0
  24. package/dist/bin/chunk-d6zzgvtn.js +92 -0
  25. package/dist/bin/chunk-da8zpf82.js +1 -0
  26. package/dist/bin/chunk-ddmjjstg.js +1 -0
  27. package/dist/bin/chunk-dhhz4zyj.js +1 -0
  28. package/dist/bin/chunk-dj9a67c3.js +9 -0
  29. package/dist/bin/chunk-ds1z880f.js +1 -0
  30. package/dist/bin/chunk-dvkj4k6h.js +111 -0
  31. package/dist/bin/chunk-eh40fpvj.js +1 -0
  32. package/dist/bin/chunk-ey9fagrr.js +6 -0
  33. package/dist/bin/chunk-ezftw2q4.js +1 -0
  34. package/dist/bin/chunk-g6a4n3rh.js +1 -0
  35. package/dist/bin/chunk-g90nqfgv.js +585 -0
  36. package/dist/bin/chunk-gs40j75w.js +1 -0
  37. package/dist/bin/chunk-jjjts1vt.js +1 -0
  38. package/dist/bin/{chunk-ry030a6b.js → chunk-jnsbzqzz.js} +30 -30
  39. package/dist/bin/chunk-jnx4jgw8.js +1 -0
  40. package/dist/bin/chunk-jt1tndm2.js +3 -0
  41. package/dist/bin/chunk-kybdb0ws.js +2 -0
  42. package/dist/bin/chunk-m3nqw76h.js +3 -0
  43. package/dist/bin/chunk-mn6j22zn.js +6 -0
  44. package/dist/bin/chunk-nb0yjkv5.js +2 -0
  45. package/dist/bin/chunk-pjpa4x52.js +2 -0
  46. package/dist/bin/chunk-pkgkfe6s.js +2 -0
  47. package/dist/bin/chunk-pnz5hk8n.js +60 -0
  48. package/dist/bin/chunk-q46zr2tv.js +1 -0
  49. package/dist/bin/chunk-qtdngvs8.js +1 -0
  50. package/dist/bin/chunk-sbejksrh.js +2 -0
  51. package/dist/bin/chunk-svyd4v6c.js +34 -0
  52. package/dist/bin/chunk-tna7ay8d.js +1 -0
  53. package/dist/bin/chunk-tp4c2mv1.js +1 -0
  54. package/dist/bin/chunk-w5d6tr2x.js +1 -0
  55. package/dist/bin/chunk-wewcjam5.js +1 -0
  56. package/dist/bin/chunk-xv4bscrm.js +1 -0
  57. package/dist/bin/chunk-y9eyc5pw.js +1 -0
  58. package/dist/bin/chunk-y9f8649w.js +512 -0
  59. package/dist/bin/cli.js +428 -418
  60. package/dist/bin/dashboard-server.js +1 -1
  61. package/dist/chunk-06jk7ba9.js +7355 -0
  62. package/dist/chunk-0e16qt6k.js +5 -0
  63. package/dist/chunk-13hxhzaz.js +34 -0
  64. package/dist/chunk-2p89vt3b.js +2 -0
  65. package/dist/chunk-77t2ctwn.js +2 -0
  66. package/dist/chunk-88z37ey4.js +114 -0
  67. package/dist/chunk-8c4715hz.js +2 -0
  68. package/dist/chunk-9a22225r.js +60 -0
  69. package/dist/chunk-as6by62d.js +1 -0
  70. package/dist/chunk-cd0zpxhf.js +44 -0
  71. package/dist/chunk-cp54a0qn.js +6 -0
  72. package/dist/chunk-d67xbk4v.js +141 -0
  73. package/dist/chunk-dckz9xve.js +2 -0
  74. package/dist/chunk-e1666vjv.js +2 -0
  75. package/dist/chunk-hhdx5k96.js +442 -0
  76. package/dist/chunk-kv2ztkp4.js +1617 -0
  77. package/dist/chunk-nrz6zypg.js +1 -0
  78. package/dist/chunk-q816js1y.js +1 -0
  79. package/dist/chunk-qh9ep11z.js +704 -0
  80. package/dist/chunk-rg720cqg.js +1 -0
  81. package/dist/chunk-snak8s7m.js +92 -0
  82. package/dist/chunk-vq737g82.js +1 -0
  83. package/dist/chunk-xd6w0c11.js +50 -0
  84. package/dist/chunk-xtwjt370.js +37 -0
  85. package/dist/chunk-y26yh5zp.js +1 -0
  86. package/dist/chunk-zmxffmmq.js +4 -0
  87. package/dist/deploy/attach-credentials.d.ts +4 -8
  88. package/dist/deploy/index.js +1 -168
  89. package/dist/dns/cloudflare.d.ts +27 -0
  90. package/dist/dns/godaddy.d.ts +18 -1
  91. package/dist/dns/index.d.ts +2 -0
  92. package/dist/dns/index.js +1 -41
  93. package/dist/dns/zone-migration.d.ts +92 -0
  94. package/dist/dns/zone-migration.test.d.ts +1 -0
  95. package/dist/drivers/hetzner/driver.d.ts +8 -1
  96. package/dist/drivers/index.js +1 -154
  97. package/dist/drivers/shared/compute-provision.d.ts +14 -2
  98. package/dist/drivers/shared/db-provision.d.ts +3 -2
  99. package/dist/drivers/shared/mail-provision.d.ts +116 -0
  100. package/dist/drivers/shared/mail-provision.test.d.ts +1 -0
  101. package/dist/drivers/shared/managed-services-probe.d.ts +47 -0
  102. package/dist/drivers/shared/managed-services-probe.test.d.ts +1 -0
  103. package/dist/drivers/shared/package-manager.d.ts +1 -0
  104. package/dist/drivers/shared/remote-failure.d.ts +21 -0
  105. package/dist/drivers/shared/remote-failure.test.d.ts +1 -0
  106. package/dist/drivers/shared/sqlite-shared-path.d.ts +50 -0
  107. package/dist/drivers/shared/sqlite-shared-path.test.d.ts +1 -0
  108. package/dist/index.d.ts +2 -0
  109. package/dist/index.js +100 -6129
  110. package/dist/operations/plan.d.ts +136 -0
  111. package/dist/operations/plan.test.d.ts +1 -0
  112. package/dist/operations/server-rename.d.ts +84 -0
  113. package/dist/operations/server-rename.test.d.ts +1 -0
  114. package/dist/operations/site-move.d.ts +263 -0
  115. package/dist/operations/site-move.test.d.ts +1 -0
  116. package/dist/protection/index.js +1 -89
  117. package/dist/push/index.js +1 -509
  118. package/dist/spend/index.js +1 -173
  119. package/dist/ui/404.html +1 -1
  120. package/dist/ui/accept-invitation.html +1 -1
  121. package/dist/ui/access-denied.html +1 -1
  122. package/dist/ui/account/automation.html +5 -5
  123. package/dist/ui/account/security.html +2 -2
  124. package/dist/ui/applications/compose.html +6 -6
  125. package/dist/ui/applications/new.html +2 -2
  126. package/dist/ui/data/backups.html +80 -80
  127. package/dist/ui/data/services.html +78 -78
  128. package/dist/ui/data/volumes.html +50 -50
  129. package/dist/ui/index.html +50 -50
  130. package/dist/ui/infrastructure/topology.html +118 -118
  131. package/dist/ui/integrations.html +1 -1
  132. package/dist/ui/operations/alerts.html +47 -47
  133. package/dist/ui/operations/configuration.html +5 -5
  134. package/dist/ui/operations/jobs.html +76 -76
  135. package/dist/ui/operations/maintenance.html +6 -6
  136. package/dist/ui/operations/observability.html +82 -82
  137. package/dist/ui/operations/previews.html +5 -5
  138. package/dist/ui/operations/queue.html +6 -6
  139. package/dist/ui/operations/regions.html +6 -6
  140. package/dist/ui/operations/releases.html +6 -6
  141. package/dist/ui/operations/spend.html +54 -54
  142. package/dist/ui/operations/workloads.html +104 -104
  143. package/dist/ui/security.html +2 -2
  144. package/dist/ui/server/actions.html +56 -56
  145. package/dist/ui/server/activity.html +1 -1
  146. package/dist/ui/server/capacity.html +6 -6
  147. package/dist/ui/server/database.html +106 -106
  148. package/dist/ui/server/deployments.html +50 -50
  149. package/dist/ui/server/diagnostics.html +2 -2
  150. package/dist/ui/server/firewall.html +76 -76
  151. package/dist/ui/server/fleet.html +34 -34
  152. package/dist/ui/server/logs.html +24 -24
  153. package/dist/ui/server/metrics.html +112 -112
  154. package/dist/ui/server/security.html +1 -1
  155. package/dist/ui/server/services.html +27 -27
  156. package/dist/ui/server/sites.html +120 -120
  157. package/dist/ui/server/ssh-keys.html +51 -51
  158. package/dist/ui/server/team.html +144 -144
  159. package/dist/ui/server/terminal.html +15 -15
  160. package/dist/ui/serverless/alarms.html +52 -52
  161. package/dist/ui/serverless/assets.html +27 -27
  162. package/dist/ui/serverless/cost.html +2 -2
  163. package/dist/ui/serverless/data.html +36 -36
  164. package/dist/ui/serverless/deployments.html +27 -27
  165. package/dist/ui/serverless/firewall.html +1 -1
  166. package/dist/ui/serverless/functions.html +40 -40
  167. package/dist/ui/serverless/logs.html +24 -24
  168. package/dist/ui/serverless/metrics.html +2 -2
  169. package/dist/ui/serverless/queues.html +47 -47
  170. package/dist/ui/serverless/secrets.html +52 -52
  171. package/dist/ui/serverless/traces.html +6 -6
  172. package/dist/ui/serverless.html +54 -54
  173. package/dist/ui-src/src/charts.ts +17499 -12662
  174. package/dist/ui-src/src/topology.ts +2 -2
  175. package/package.json +3 -3
  176. package/dist/bin/chunk-09nwf2gy.js +0 -34
  177. package/dist/bin/chunk-14cwr6eh.js +0 -70
  178. package/dist/bin/chunk-271gk1n2.js +0 -6
  179. package/dist/bin/chunk-38pq971s.js +0 -2
  180. package/dist/bin/chunk-3gykfyq4.js +0 -37
  181. package/dist/bin/chunk-3r4fb59r.js +0 -3
  182. package/dist/bin/chunk-41x17hw1.js +0 -1
  183. package/dist/bin/chunk-4vrqm9h0.js +0 -2
  184. package/dist/bin/chunk-57y1zxbf.js +0 -3
  185. package/dist/bin/chunk-598yf4bs.js +0 -1
  186. package/dist/bin/chunk-8v7ddyvf.js +0 -1
  187. package/dist/bin/chunk-92mea34a.js +0 -1
  188. package/dist/bin/chunk-9pvsff8g.js +0 -1
  189. package/dist/bin/chunk-9v39615t.js +0 -1
  190. package/dist/bin/chunk-avm7tnwe.js +0 -1
  191. package/dist/bin/chunk-ax9mr6wm.js +0 -44
  192. package/dist/bin/chunk-axhnkn5g.js +0 -2
  193. package/dist/bin/chunk-b5gd39s8.js +0 -512
  194. package/dist/bin/chunk-b9qbp8j1.js +0 -1
  195. package/dist/bin/chunk-bz828v8q.js +0 -3
  196. package/dist/bin/chunk-c1vcdgvr.js +0 -1
  197. package/dist/bin/chunk-ctd2vg9w.js +0 -2
  198. package/dist/bin/chunk-dbgffky8.js +0 -1
  199. package/dist/bin/chunk-dwr30vbv.js +0 -1
  200. package/dist/bin/chunk-e3xrwh9z.js +0 -1
  201. package/dist/bin/chunk-fhc6ntvd.js +0 -2
  202. package/dist/bin/chunk-fpm59y25.js +0 -6
  203. package/dist/bin/chunk-fvbxvq6b.js +0 -1
  204. package/dist/bin/chunk-fy8j3y8p.js +0 -92
  205. package/dist/bin/chunk-fz21b57w.js +0 -1
  206. package/dist/bin/chunk-gavvf0pg.js +0 -141
  207. package/dist/bin/chunk-ggn7ax8p.js +0 -4
  208. package/dist/bin/chunk-gpe2prkm.js +0 -1
  209. package/dist/bin/chunk-gqf6jsmy.js +0 -1
  210. package/dist/bin/chunk-h5pa5men.js +0 -2
  211. package/dist/bin/chunk-hm08xdxf.js +0 -2
  212. package/dist/bin/chunk-hzgz13nf.js +0 -1
  213. package/dist/bin/chunk-hzqw8xm5.js +0 -111
  214. package/dist/bin/chunk-j703btc5.js +0 -50
  215. package/dist/bin/chunk-jpjamjey.js +0 -6935
  216. package/dist/bin/chunk-m2zwtapr.js +0 -1
  217. package/dist/bin/chunk-m669wtgr.js +0 -1
  218. package/dist/bin/chunk-mr0atd2s.js +0 -2
  219. package/dist/bin/chunk-ngcyftm2.js +0 -1
  220. package/dist/bin/chunk-p66ptpmr.js +0 -2
  221. package/dist/bin/chunk-p8q9bq9g.js +0 -1
  222. package/dist/bin/chunk-r3kv0vm9.js +0 -6
  223. package/dist/bin/chunk-r9hjwcj9.js +0 -6
  224. package/dist/bin/chunk-rtczra13.js +0 -1
  225. package/dist/bin/chunk-rytk89az.js +0 -60
  226. package/dist/bin/chunk-sgyffpgm.js +0 -581
  227. package/dist/bin/chunk-vek8a0w6.js +0 -1
  228. package/dist/bin/chunk-waayf9ay.js +0 -2
  229. package/dist/bin/chunk-yv9sth30.js +0 -1
  230. package/dist/chunk-01d86gt1.js +0 -1324
  231. package/dist/chunk-050r7ycy.js +0 -46516
  232. package/dist/chunk-1c8dbv57.js +0 -7278
  233. package/dist/chunk-29rse4p1.js +0 -12203
  234. package/dist/chunk-32e7ya18.js +0 -642
  235. package/dist/chunk-4cjrg98a.js +0 -597
  236. package/dist/chunk-50jpda9q.js +0 -371
  237. package/dist/chunk-6a1t7fnq.js +0 -12121
  238. package/dist/chunk-728jvrr0.js +0 -1701
  239. package/dist/chunk-7m60qnc8.js +0 -1762
  240. package/dist/chunk-aa2dkn7b.js +0 -205
  241. package/dist/chunk-d48vtdj4.js +0 -433
  242. package/dist/chunk-f55nkpvb.js +0 -8
  243. package/dist/chunk-fgk8cqew.js +0 -152
  244. package/dist/chunk-he9a874b.js +0 -769
  245. package/dist/chunk-k2yyatfw.js +0 -10
  246. package/dist/chunk-k4px0bnv.js +0 -23
  247. package/dist/chunk-nsgqsmrh.js +0 -1779
  248. package/dist/chunk-q0st3se8.js +0 -42033
  249. package/dist/chunk-qr803fye.js +0 -2122
  250. package/dist/chunk-rds0sy87.js +0 -1771
  251. package/dist/chunk-ttz2ra5j.js +0 -12
  252. package/dist/chunk-v0bahtg2.js +0 -4
  253. package/dist/chunk-va2yd85b.js +0 -200
  254. package/dist/chunk-x9s0cqfx.js +0 -13
  255. package/dist/chunk-zqtpg06c.js +0 -1752
package/dist/aws/index.js CHANGED
@@ -1,269 +1 @@
1
- import {
2
- ApplicationAutoScalingClient,
3
- AwsBackupClient,
4
- BedrockAgentClient,
5
- BedrockAgentRuntimeClient,
6
- BedrockClient,
7
- BedrockRuntimeClient,
8
- CloudWatchLogsClient,
9
- ComprehendClient,
10
- ConnectClient,
11
- CostExplorerClient,
12
- DynamoDBClient,
13
- ECSClient,
14
- EFSClient,
15
- ELBv2Client,
16
- ElastiCacheClient,
17
- EventBridgeClient,
18
- ImapServer,
19
- KendraClient,
20
- LambdaClient,
21
- OpenSearchClient,
22
- PersonalizeClient,
23
- PersonalizeEventsClient,
24
- PersonalizeRuntimeClient,
25
- PollyClient,
26
- RekognitionClient,
27
- Route53DomainsClient,
28
- SNSClient,
29
- SQSClient,
30
- STSClient,
31
- SchedulerClient,
32
- SecretsManagerClient,
33
- SmsClient,
34
- SmtpServer,
35
- SupportClient,
36
- SupportTemplates,
37
- TextractClient,
38
- TranscribeClient,
39
- TranslateClient,
40
- VoiceClient,
41
- analyzeSentiment,
42
- completeWithClaude,
43
- containsPii,
44
- countFacesInS3Image,
45
- createDeliveryReceiptHandler,
46
- createObjectStorageClient,
47
- createRecordingHandler,
48
- createSSML,
49
- createScheduledSmsHandler,
50
- createSmsClient,
51
- createSmsInboxHandler,
52
- createSmsInfrastructure,
53
- createVoiceClient,
54
- createVoicemailHandler,
55
- detectLabelsFromS3,
56
- detectLanguage,
57
- extractEntities,
58
- extractFormsFromS3,
59
- extractTablesFromS3,
60
- extractTextFromS3,
61
- formatPhoneNumber,
62
- generateEmbeddings,
63
- getCountryCode,
64
- getRecommendations,
65
- getSimilarItems,
66
- getSmsInfrastructureStatus,
67
- isContentSafe,
68
- isSamePhoneNumber,
69
- isValidPhoneNumber,
70
- keyMatchesFilters,
71
- listClaudeModels,
72
- listLanguages,
73
- listVoices,
74
- migrateObjectStorage,
75
- normalizePhoneNumber,
76
- providerEndpoint,
77
- remapKey,
78
- requestModelAccess,
79
- resolveObjectStorage,
80
- retrieveForRag,
81
- search,
82
- setupSmsInfrastructure,
83
- startImapServer,
84
- startSmtpServer,
85
- textToSpeech,
86
- trackEvent,
87
- translate,
88
- translateToMultiple
89
- } from "../chunk-6a1t7fnq.js";
90
- import {
91
- EmailClient,
92
- IAMClient,
93
- SESClient,
94
- email
95
- } from "../chunk-nsgqsmrh.js";
96
- import {
97
- CloudFrontClient
98
- } from "../chunk-01d86gt1.js";
99
- import {
100
- ECRClient
101
- } from "../chunk-50jpda9q.js";
102
- import {
103
- RDSClient
104
- } from "../chunk-he9a874b.js";
105
- import {
106
- ACMClient,
107
- ACMDnsValidator,
108
- CloudflareProvider,
109
- DnsProviderFactory,
110
- GoDaddyProvider,
111
- PROXIABLE_RECORD_TYPES,
112
- PorkbunProvider,
113
- Route53Provider,
114
- UnifiedDnsValidator,
115
- createDnsProvider,
116
- createGoDaddyValidator,
117
- createPorkbunValidator,
118
- createRoute53Validator,
119
- detectDnsProvider,
120
- dnsProviders,
121
- policyTag,
122
- qualifyName,
123
- reconcileDeclaredRecords,
124
- resolveDeclaredRecords
125
- } from "../chunk-qr803fye.js";
126
- import {
127
- Route53Client
128
- } from "../chunk-32e7ya18.js";
129
- import {
130
- EC2Client,
131
- SSMClient
132
- } from "../chunk-7m60qnc8.js";
133
- import {
134
- CloudFormationClient
135
- } from "../chunk-4cjrg98a.js";
136
- import {
137
- S3Client
138
- } from "../chunk-rds0sy87.js";
139
- import {
140
- AWSClient,
141
- buildQueryParams,
142
- detectCredentialSource,
143
- resolveS3Endpoint
144
- } from "../chunk-zqtpg06c.js";
145
- import"../chunk-v0bahtg2.js";
146
- export {
147
- translateToMultiple,
148
- translate,
149
- trackEvent,
150
- textToSpeech,
151
- startSmtpServer,
152
- startImapServer,
153
- setupSmsInfrastructure,
154
- search,
155
- retrieveForRag,
156
- resolveS3Endpoint,
157
- resolveObjectStorage,
158
- resolveDeclaredRecords,
159
- requestModelAccess,
160
- remapKey,
161
- reconcileDeclaredRecords,
162
- qualifyName,
163
- providerEndpoint,
164
- policyTag,
165
- normalizePhoneNumber,
166
- migrateObjectStorage,
167
- listVoices,
168
- listLanguages,
169
- listClaudeModels,
170
- keyMatchesFilters,
171
- isValidPhoneNumber,
172
- isSamePhoneNumber,
173
- isContentSafe,
174
- getSmsInfrastructureStatus,
175
- getSimilarItems,
176
- getRecommendations,
177
- getCountryCode,
178
- generateEmbeddings,
179
- formatPhoneNumber,
180
- extractTextFromS3,
181
- extractTablesFromS3,
182
- extractFormsFromS3,
183
- extractEntities,
184
- email,
185
- dnsProviders,
186
- detectLanguage,
187
- detectLabelsFromS3,
188
- detectDnsProvider,
189
- detectCredentialSource,
190
- createVoicemailHandler,
191
- createVoiceClient,
192
- createSmsInfrastructure,
193
- createSmsInboxHandler,
194
- createSmsClient,
195
- createScheduledSmsHandler,
196
- createSSML,
197
- createRoute53Validator,
198
- createRecordingHandler,
199
- createPorkbunValidator,
200
- createObjectStorageClient,
201
- createGoDaddyValidator,
202
- createDnsProvider,
203
- createDeliveryReceiptHandler,
204
- countFacesInS3Image,
205
- containsPii,
206
- completeWithClaude,
207
- buildQueryParams,
208
- analyzeSentiment,
209
- VoiceClient,
210
- UnifiedDnsValidator,
211
- TranslateClient,
212
- TranscribeClient,
213
- TextractClient,
214
- SupportTemplates,
215
- SupportClient,
216
- SmtpServer,
217
- SmsClient,
218
- SecretsManagerClient,
219
- SchedulerClient,
220
- STSClient,
221
- SSMClient,
222
- SQSClient,
223
- SNSClient,
224
- SESClient,
225
- S3Client,
226
- Route53Provider,
227
- Route53DomainsClient,
228
- Route53Client,
229
- RekognitionClient,
230
- RDSClient,
231
- PorkbunProvider,
232
- PollyClient,
233
- PersonalizeRuntimeClient,
234
- PersonalizeEventsClient,
235
- PersonalizeClient,
236
- PROXIABLE_RECORD_TYPES,
237
- OpenSearchClient,
238
- LambdaClient,
239
- KendraClient,
240
- ImapServer,
241
- IAMClient,
242
- GoDaddyProvider,
243
- EventBridgeClient,
244
- EmailClient,
245
- ElastiCacheClient,
246
- ELBv2Client,
247
- EFSClient,
248
- ECSClient,
249
- ECRClient,
250
- EC2Client,
251
- DynamoDBClient,
252
- DnsProviderFactory,
253
- CostExplorerClient,
254
- ConnectClient,
255
- ComprehendClient,
256
- CloudflareProvider,
257
- CloudWatchLogsClient,
258
- CloudFrontClient,
259
- CloudFormationClient,
260
- BedrockRuntimeClient,
261
- BedrockClient,
262
- BedrockAgentRuntimeClient,
263
- BedrockAgentClient,
264
- AwsBackupClient,
265
- ApplicationAutoScalingClient,
266
- AWSClient,
267
- ACMDnsValidator,
268
- ACMClient
269
- };
1
+ import{$d as ea,$e as eb,Ae as Fa,Be as Ga,Ce as Ha,De as Ia,Ee as Ja,Fe as Ka,Ge as La,He as Ma,Ie as Na,Jd as k,Je as Oa,Kd as l,Ke as Pa,Ld as m,Le as Qa,Md as n,Me as Ra,Nd as o,Ne as Sa,Od as p,Oe as Ta,Pd as q,Pe as Ua,Qd as r,Qe as Va,Rd as t,Re as Wa,Sd as w,Se as Xa,Td as V,Te as Ya,Ud as X,Ue as Za,Vd as Y,Ve as _a,Wd as Z,We as $a,Xd as _,Xe as ab,Yd as aa,Ye as bb,Zd as ba,Ze as cb,_d as ca,_e as db,ae as fa,af as fb,be as ga,bf as gb,ce as ha,cf as hb,de as ia,df as ib,ee as ja,ef as jb,fe as ka,ff as kb,ge as la,gf as lb,he as ma,hf as mb,ie as na,if as nb,je as oa,jf as ob,ke as pa,kf as pb,le as qa,lf as qb,me as ra,mf as rb,ne as sa,nf as sb,oe as ta,pe as ua,qe as va,re as wa,se as xa,te as ya,ue as za,ve as Aa,we as Ba,xe as Ca,ye as Da,ze as Ea}from"../chunk-88z37ey4.js";import{of as e,pf as h,qf as i,rf as j}from"../chunk-13hxhzaz.js";import{sf as v}from"../chunk-d67xbk4v.js";import{tf as U}from"../chunk-dckz9xve.js";import{uf as da}from"../chunk-8c4715hz.js";import{Af as B,Bf as C,Cf as D,Df as E,Ef as F,Ff as G,Gf as H,Hf as I,If as J,Jf as K,Kf as L,Lf as M,Mf as N,Nf as O,Of as P,Pf as Q,Qf as R,Rf as S,Sf as T,vf as x,wf as y,xf as z,zf as A}from"../chunk-2p89vt3b.js";import{Tf as f}from"../chunk-xd6w0c11.js";import{Rh as u,Sh as W}from"../chunk-zmxffmmq.js";import{Th as s}from"../chunk-e1666vjv.js";import{Vh as g}from"../chunk-snak8s7m.js";import{Wh as a,Xh as b,Yh as c,Zh as d}from"../chunk-cp54a0qn.js";import"../chunk-77t2ctwn.js";export{S as ACMClient,T as ACMDnsValidator,b as AWSClient,Wa as ApplicationAutoScalingClient,l as AwsBackupClient,ka as BedrockAgentClient,ja as BedrockAgentRuntimeClient,ia as BedrockClient,ha as BedrockRuntimeClient,s as CloudFormationClient,v as CloudFrontClient,aa as CloudWatchLogsClient,A as CloudflareProvider,pa as ComprehendClient,ba as ConnectClient,t as CostExplorerClient,Q as DnsProviderFactory,ea as DynamoDBClient,u as EC2Client,U as ECRClient,V as ECSClient,sb as EFSClient,ca as ELBv2Client,Ua as ElastiCacheClient,i as EmailClient,Ta as EventBridgeClient,z as GoDaddyProvider,e as IAMClient,Xa as ImapServer,Qa as KendraClient,_ as LambdaClient,fa as OpenSearchClient,x as PROXIABLE_RECORD_TYPES,Ka as PersonalizeClient,Ma as PersonalizeEventsClient,La as PersonalizeRuntimeClient,Ca as PollyClient,y as PorkbunProvider,da as RDSClient,ua as RekognitionClient,f as Route53Client,w as Route53DomainsClient,F as Route53Provider,g as S3Client,h as SESClient,Y as SNSClient,Z as SQSClient,W as SSMClient,k as STSClient,Va as SchedulerClient,X as SecretsManagerClient,$a as SmsClient,Za as SmtpServer,nb as SupportClient,ob as SupportTemplates,ya as TextractClient,ga as TranscribeClient,Ga as TranslateClient,K as UnifiedDnsValidator,jb as VoiceClient,qa as analyzeSentiment,I as applyZoneMigration,c as buildQueryParams,na as completeWithClaude,ta as containsPii,wa as countFacesInS3Image,db as createDeliveryReceiptHandler,O as createDnsProvider,M as createGoDaddyValidator,r as createObjectStorageClient,L as createPorkbunValidator,lb as createRecordingHandler,N as createRoute53Validator,Fa as createSSML,bb as createScheduledSmsHandler,cb as createSmsClient,ab as createSmsInboxHandler,rb as createSmsInfrastructure,mb as createVoiceClient,kb as createVoicemailHandler,d as detectCredentialSource,P as detectDnsProvider,va as detectLabelsFromS3,sa as detectLanguage,R as dnsProviders,j as email,G as exportRoute53Zone,ra as extractEntities,Aa as extractFormsFromS3,Ba as extractTablesFromS3,za as extractTextFromS3,fb as formatPhoneNumber,oa as generateEmbeddings,hb as getCountryCode,Na as getRecommendations,Oa as getSimilarItems,qb as getSmsInfrastructureStatus,xa as isContentSafe,ib as isSamePhoneNumber,gb as isValidPhoneNumber,n as keyMatchesFilters,ma as listClaudeModels,Ja as listLanguages,Ea as listVoices,o as migrateObjectStorage,eb as normalizePhoneNumber,H as planZoneMigration,B as policyTag,p as providerEndpoint,C as qualifyName,E as reconcileDeclaredRecords,m as remapKey,la as requestModelAccess,D as resolveDeclaredRecords,q as resolveObjectStorage,a as resolveS3Endpoint,Sa as retrieveForRag,Ra as search,pb as setupSmsInfrastructure,Ya as startImapServer,_a as startSmtpServer,Da as textToSpeech,Pa as trackEvent,Ha as translate,Ia as translateToMultiple,J as verifyZoneParity};
@@ -0,0 +1 @@
1
+ import{Fd as a}from"./chunk-jt1tndm2.js";import"./chunk-sbejksrh.js";import"./chunk-ckxpgwxw.js";import"./chunk-pjpa4x52.js";import"./chunk-7wzdaqh6.js";import"./chunk-6eat8ezk.js";import"./chunk-d6zzgvtn.js";import"./chunk-1v6bt68w.js";import"./chunk-ey9fagrr.js";import"./chunk-anm3ae6z.js";import"./chunk-b2ymh8k0.js";export{a as resolveDashboardData};
@@ -0,0 +1 @@
1
+ import{ed as a}from"./chunk-8rwhsp5b.js";import"./chunk-ey9fagrr.js";import"./chunk-b2ymh8k0.js";export{a as STSClient};
@@ -0,0 +1,6 @@
1
+ import{lp as v,mp as l}from"./chunk-b2ymh8k0.js";var F={};v(F,{ProgressBar:()=>y,Spinner:()=>x,box:()=>R,checkAwsCli:()=>T,checkAwsCredentials:()=>L,colorize:()=>a,colors:()=>r,confirm:()=>A,error:()=>f,formatBytes:()=>P,formatDuration:()=>M,getAwsAccountId:()=>E,getAwsRegions:()=>k,header:()=>I,info:()=>b,prompt:()=>h,select:()=>C,step:()=>B,success:()=>m,table:()=>S,warn:()=>d,warning:()=>w});var r={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",gray:"\x1B[90m"};function a(t,e){return`${r[e]}${t}${r.reset}`}function m(t){console.log(`${r.green}✓${r.reset} ${t}`)}function f(t){console.error(`${r.red}✗${r.reset} ${t}`)}function d(t){console.warn(`${r.yellow}⚠${r.reset} ${t}`)}var w=d;function b(t){console.log(`${r.blue}ℹ${r.reset} ${t}`)}function B(t){console.log(`${r.cyan}→${r.reset} ${t}`)}function I(t){console.log(`
2
+ ${r.bright}${r.cyan}${t}${r.reset}
3
+ `)}var g=!!(process.env.CI||process.env.GITHUB_ACTIONS||process.env.BUILDKITE||process.env.CIRCLECI||process.env.GITLAB_CI);class x{frames=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];interval=null;currentFrame=0;message;constructor(t){this.message=t}get text(){return this.message}set text(t){if(this.message=t,g&&this.interval)console.log(` ${t}`)}start(){if(g){console.log(` ${this.message}`),this.interval=!0;return}this.interval=setInterval(()=>{process.stdout.write(`\r${r.cyan}${this.frames[this.currentFrame]}${r.reset} ${this.message}`),this.currentFrame=(this.currentFrame+1)%this.frames.length},80)}succeed(t){this.stop(),m(t||this.message)}fail(t){this.stop(),f(t||this.message)}warn(t){this.stop(),w(t||this.message)}stop(){if(this.interval){if(!g)process.stdout.write("\r");if(typeof this.interval==="object")clearInterval(this.interval);this.interval=null}}}class y{total;current=0;width=40;constructor(t){this.total=t}update(t){this.current=t,this.render()}increment(){this.current++,this.render()}render(){let t=Math.floor(this.current/this.total*100),e=Math.floor(this.current/this.total*this.width),n=this.width-e,s=`${"█".repeat(e)}${"░".repeat(n)}`;if(process.stdout.write(`\r${r.cyan}${s}${r.reset} ${t}% (${this.current}/${this.total})`),this.current>=this.total)process.stdout.write(`
4
+ `)}}async function h(t,e){let s=(await import("node:readline")).createInterface({input:process.stdin,output:process.stdout});return new Promise((i)=>{let o=e?`${r.cyan}?${r.reset} ${t} ${r.gray}(${e})${r.reset}: `:`${r.cyan}?${r.reset} ${t}: `;s.question(o,(c)=>{s.close(),i(c||e||"")})})}async function A(t,e=!1){let n=await h(`${t} (y/n)`,e?"y":"n");return n.toLowerCase()==="y"||n.toLowerCase()==="yes"}async function C(t,e){console.log(`${r.cyan}?${r.reset} ${t}`),e.forEach((i,o)=>{console.log(` ${r.gray}${o+1}.${r.reset} ${i}`)});let n=await h("Select","1"),s=Number.parseInt(n)-1;if(s>=0&&s<e.length)return e[s];return e[0]}function S(t,e){let n=t.map((i,o)=>{let c=Math.max(...e.map((u)=>(u[o]||"").length));return Math.max(i.length,c)}),s=t.map((i,o)=>i.padEnd(n[o])).join(" ");console.log(a(s,"bright")),console.log(a("─".repeat(s.length),"gray")),e.forEach((i)=>{let o=i.map((c,u)=>(c||"").padEnd(n[u])).join(" ");console.log(o)})}function P(t){if(t===0)return"0 B";let e=1024,n=["B","KB","MB","GB","TB"],s=Math.floor(Math.log(t)/Math.log(e));return`${Number.parseFloat((t/e**s).toFixed(2))} ${n[s]}`}function M(t){if(t<1000)return`${t}ms`;let e=Math.floor(t/1000);if(e<60)return`${e}s`;let n=Math.floor(e/60),s=e%60;if(n<60)return`${n}m ${s}s`;let i=Math.floor(n/60),o=n%60;return`${i}h ${o}m`}function R(t,e="cyan"){let n=t.split(`
5
+ `),s=Math.max(...n.map((o)=>o.length)),i="─".repeat(s+2);console.log(a(`┌${i}┐`,e)),n.forEach((o)=>{console.log(a(`│ ${o.padEnd(s)} │`,e))}),console.log(a(`└${i}┘`,e))}async function T(){return!0}async function L(){try{let{AWSClient:t}=await import("./chunk-5rv31chh.js");return await new t().request({service:"sts",region:"us-east-1",method:"POST",path:"/",body:new URLSearchParams({Action:"GetCallerIdentity",Version:"2011-06-15"}).toString()}),!0}catch{return!1}}async function E(){try{let{AWSClient:t}=await import("./chunk-5rv31chh.js"),n=await new t().request({service:"sts",region:"us-east-1",method:"POST",path:"/",body:new URLSearchParams({Action:"GetCallerIdentity",Version:"2011-06-15"}).toString()});return n.Account||n.GetCallerIdentityResult?.Account||null}catch{return null}}async function k(){try{let{AWSClient:t}=await import("./chunk-5rv31chh.js"),n=await new t().request({service:"ec2",region:"us-east-1",method:"POST",path:"/",body:new URLSearchParams({Action:"DescribeRegions",Version:"2016-11-15"}).toString()}),s=[];if(n.regionInfo){let i=Array.isArray(n.regionInfo)?n.regionInfo:[n.regionInfo];s.push(...i.map((o)=>o.regionName))}return s.length>0?s:p()}catch{return p()}}function p(){return["us-east-1","us-east-2","us-west-1","us-west-2","eu-west-1","eu-central-1","ap-southeast-1","ap-northeast-1"]}
6
+ export{r as Hg,a as Ig,m as Jg,f as Kg,d as Lg,w as Mg,b as Ng,B as Og,I as Pg,x as Qg,h as Rg,A as Sg,C as Tg,S as Ug,P as Vg,R as Wg,T as Xg,L as Yg,E as Zg,k as _g,F as $g};
@@ -0,0 +1,70 @@
1
+ import{Jh as d}from"./chunk-anm3ae6z.js";import"./chunk-b2ymh8k0.js";function E(t){let e=t.sites||{};for(let r of Object.values(e))if(r?.repository?.url)return{provider:r.repository.provider,branch:r.repository.branch};return}function v(t){let e=t.trim().toLowerCase();if(e.includes("github.com"))return"github";if(e.includes("gitlab.com"))return"gitlab";if(e.includes("bitbucket.org"))return"bitbucket";return}function a(t){return`'${t.replace(/'/g,"'\\''")}'`}function _(t){return t.replace(/'/g,"''")}function S(t,e){let r=["bunx --bun @stacksjs/ts-cloud deploy","--env",a(t)];if(e.site)r.push("--site",a(e.site));if(e.skipDnsVerification)r.push("--skip-dns-verification");return r.push("--yes"),r.join(" ")}function k(t,e="production",r={}){let l=E(t),n=r.provider||l?.provider;if(n!=="github"&&n!=="gitlab"&&n!=="bitbucket")return null;let i=t.environments?.[e],s=i?.deployBranch||l?.branch||"main",u=S(e,r),c=JSON.stringify(s),f=JSON.stringify(e),p=i?.domain?i.domain.startsWith("http")?i.domain:`https://${i.domain}`:void 0,h=p?`
2
+ url: ${JSON.stringify(p)}`:"",y=r.setup==="pantry"?` - name: Setup Pantry
3
+ uses: home-lang/pantry/packages/action@main`:` - uses: oven-sh/setup-bun@v2
4
+ - run: bun install --frozen-lockfile`,b=d(t)==="hetzner"&&!!t.infrastructure?.compute,o=r.sshPrivateKeySecret||"SSH_PRIVATE_KEY";if(!/^[A-Z_][A-Z0-9_]*$/i.test(o))throw Error(`Invalid SSH private key secret name '${o}'`);let g=b?`
5
+ - name: Configure deployment SSH key
6
+ env:
7
+ SSH_PRIVATE_KEY: \${{ secrets.${o} }}
8
+ run: |
9
+ if [ -z "$SSH_PRIVATE_KEY" ]; then
10
+ echo "::error::${o} is required for Hetzner compute deployments"
11
+ exit 1
12
+ fi
13
+ install -d -m 700 "$HOME/.ssh"
14
+ printf '%s\\n' "$SSH_PRIVATE_KEY" | tr -d '\\r' > "$HOME/.ssh/id_ed25519"
15
+ chmod 600 "$HOME/.ssh/id_ed25519"
16
+ ssh-keygen -y -f "$HOME/.ssh/id_ed25519" > "$HOME/.ssh/id_ed25519.pub"
17
+ `:"";if(n==="github")return{provider:n,branch:s,path:".github/workflows/deploy.yml",content:`name: Deploy ${e}
18
+ run-name: Deploy ${e} from \${{ github.ref_name }}
19
+
20
+ on:
21
+ push:
22
+ branches: [${c}]
23
+ workflow_dispatch:
24
+
25
+ permissions:
26
+ contents: read
27
+
28
+ concurrency:
29
+ group: ts-cloud-${e}
30
+ cancel-in-progress: false
31
+
32
+ jobs:
33
+ deploy:
34
+ if: github.ref_name == '${_(s)}'
35
+ runs-on: ubuntu-latest
36
+ environment:
37
+ name: ${f}${h}
38
+ steps:
39
+ - uses: actions/checkout@v6
40
+ ${y}
41
+ ${g}
42
+ # Provide the provider credentials your config needs as repo secrets.
43
+ - run: ${u}
44
+ env:
45
+ HCLOUD_TOKEN: \${{ secrets.HCLOUD_TOKEN }}
46
+ HETZNER_API_TOKEN: \${{ secrets.HETZNER_API_TOKEN }}
47
+ AWS_ACCESS_KEY_ID: \${{ secrets.AWS_ACCESS_KEY_ID }}
48
+ AWS_SECRET_ACCESS_KEY: \${{ secrets.AWS_SECRET_ACCESS_KEY }}
49
+ TS_CLOUD_UI_DISABLE: '1'
50
+ `};if(n==="gitlab")return{provider:n,branch:s,path:".gitlab-ci.yml",content:`deploy:
51
+ image: oven/bun:latest
52
+ rules:
53
+ - if: '$CI_COMMIT_BRANCH == ${c}'
54
+ environment: ${e}
55
+ script:
56
+ - bun install --frozen-lockfile
57
+ - ${u}
58
+ # Set HCLOUD_TOKEN / HETZNER_API_TOKEN / AWS credentials as CI variables.
59
+ `};return{provider:n,branch:s,path:"bitbucket-pipelines.yml",content:`pipelines:
60
+ branches:
61
+ ${c}:
62
+ - step:
63
+ name: Deploy ${e}
64
+ deployment: ${e}
65
+ image: oven/bun:latest
66
+ script:
67
+ - bun install --frozen-lockfile
68
+ - ${u}
69
+ # Set HCLOUD_TOKEN / HETZNER_API_TOKEN / AWS credentials as repo variables.
70
+ `}}export{k as buildQuickDeployCi,v as inferQuickDeployProvider};
@@ -0,0 +1 @@
1
+ import{if as a}from"./chunk-9px3rg4a.js";import"./chunk-ey9fagrr.js";import"./chunk-b2ymh8k0.js";export{a as EC2Client};
@@ -0,0 +1,2 @@
1
+ function r(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{r as Wa};
@@ -0,0 +1 @@
1
+ import{ah as a,bh as b,ch as c,dh as d}from"./chunk-ey9fagrr.js";import"./chunk-b2ymh8k0.js";export{b as AWSClient,c as buildQueryParams,d as detectCredentialSource,a as resolveS3Endpoint};
@@ -0,0 +1,2 @@
1
+ import{bh as g}from"./chunk-ey9fagrr.js";class p{client;region;constructor(e="us-east-1",t){this.region=e,this.client=new g(void 0,{profile:t})}async createStack(e){let t={Action:"CreateStack",StackName:e.stackName,Version:"2010-05-15"};if(e.templateBody)t.TemplateBody=e.templateBody;else if(e.templateUrl)t.TemplateURL=e.templateUrl;else throw Error("Either templateBody or templateUrl must be provided");if(e.parameters)e.parameters.forEach((a,r)=>{t[`Parameters.member.${r+1}.ParameterKey`]=a.ParameterKey,t[`Parameters.member.${r+1}.ParameterValue`]=a.ParameterValue});if(e.capabilities)e.capabilities.forEach((a,r)=>{t[`Capabilities.member.${r+1}`]=a});if(e.roleArn)t.RoleARN=e.roleArn;if(e.tags)e.tags.forEach((a,r)=>{t[`Tags.member.${r+1}.Key`]=a.Key,t[`Tags.member.${r+1}.Value`]=a.Value});if(e.timeoutInMinutes)t.TimeoutInMinutes=e.timeoutInMinutes;if(e.onFailure)t.OnFailure=e.onFailure;let s=await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()});return{StackId:s.StackId||s.CreateStackResult?.StackId}}async updateStack(e){let t={Action:"UpdateStack",StackName:e.stackName,Version:"2010-05-15"};if(e.templateBody)t.TemplateBody=e.templateBody;else if(e.templateUrl)t.TemplateURL=e.templateUrl;if(e.parameters)e.parameters.forEach((a,r)=>{if(t[`Parameters.member.${r+1}.ParameterKey`]=a.ParameterKey,a.UsePreviousValue)t[`Parameters.member.${r+1}.UsePreviousValue`]="true";else t[`Parameters.member.${r+1}.ParameterValue`]=a.ParameterValue});if(e.capabilities)e.capabilities.forEach((a,r)=>{t[`Capabilities.member.${r+1}`]=a});if(e.roleArn)t.RoleARN=e.roleArn;if(e.tags)e.tags.forEach((a,r)=>{t[`Tags.member.${r+1}.Key`]=a.Key,t[`Tags.member.${r+1}.Value`]=a.Value});let s=await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()});return{StackId:s.StackId||s.UpdateStackResult?.StackId}}async deleteStack(e,t,s){let a={Action:"DeleteStack",StackName:e,Version:"2010-05-15"};if(t)a.RoleARN=t;if(s&&s.length>0)s.forEach((r,m)=>{a[`RetainResources.member.${m+1}`]=r});await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(a).toString()})}async describeStacks(e={}){let t={Action:"DescribeStacks",Version:"2010-05-15"};if(e.stackName)t.StackName=e.stackName;let s=await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()});return{Stacks:this.parseStacksResponse(s)}}async describeStackEvents(e){let t={Action:"DescribeStackEvents",StackName:e,Version:"2010-05-15"},s=await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()});return{StackEvents:this.parseStackEvents(s)}}async listStackResources(e){let t={Action:"ListStackResources",StackName:e,Version:"2010-05-15"},a=(await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()}))?.ListStackResourcesResult?.StackResourceSummaries?.member,r=[];if(a)r=Array.isArray(a)?a:[a];return{StackResourceSummaries:r}}async waitForStack(e,t){let s={"stack-create-complete":["CREATE_COMPLETE"],"stack-update-complete":["UPDATE_COMPLETE"],"stack-delete-complete":["DELETE_COMPLETE"]},a=["CREATE_FAILED","ROLLBACK_FAILED","ROLLBACK_COMPLETE","UPDATE_ROLLBACK_FAILED","UPDATE_ROLLBACK_COMPLETE"],r=s[t],m=360,i=0;while(i<360)try{let c=await this.describeStacks({stackName:e});if(c.Stacks.length===0){if(t==="stack-delete-complete")return;if(i%10===0)console.log(`[waitForStack] Attempt ${i}: Stack not visible yet`);await new Promise((o)=>setTimeout(o,2000)),i++;continue}let n=c.Stacks[0];if(i%10===0)console.log(`[waitForStack] Attempt ${i}: Status = ${n.StackStatus}${n.StackStatusReason?` (${n.StackStatusReason})`:""}`);if(r.includes(n.StackStatus))return;if((t==="stack-create-complete"||t==="stack-update-complete")&&(n.StackStatus==="DELETE_IN_PROGRESS"||n.StackStatus==="DELETE_COMPLETE")){console.log("[waitForStack] Stack is being deleted (creation/update failed)");let o="";try{let u=await this.describeStackEvents(e);console.log("[waitForStack] Stack events (most recent first):");for(let l of u.StackEvents.slice(0,15))if(l.ResourceStatus.includes("FAILED")||l.ResourceStatusReason){if(console.log(` ${l.LogicalResourceId}: ${l.ResourceStatus} - ${l.ResourceStatusReason||"No reason provided"}`),l.ResourceStatus.includes("FAILED")&&l.ResourceStatusReason&&!o)o=l.ResourceStatusReason}}catch{}let S=o||n.StackStatusReason||"Check CloudFormation console for details.";throw Error(`Stack creation/update failed - stack is being deleted. Reason: ${S}`)}if(n.StackStatus==="DELETE_FAILED"&&t==="stack-delete-complete"){let o=Error("Stack deletion failed - may have resources that need to be retained");throw o.code="DELETE_FAILED",o.stackStatus=n.StackStatus,o.statusReason=n.StackStatusReason,o}if(a.includes(n.StackStatus))throw Error(`Stack reached failure status: ${n.StackStatus}`);await new Promise((o)=>setTimeout(o,5000)),i++}catch(c){if(t==="stack-delete-complete"&&c.message?.includes("does not exist"))return;if(t==="stack-create-complete"&&c.message?.includes("does not exist")){if(i%10===0)console.log(`[waitForStack] Attempt ${i}: Stack does not exist (error), retrying...`);await new Promise((n)=>setTimeout(n,2000)),i++;continue}throw console.log(`[waitForStack] Unexpected error: ${c.message}`),c}throw console.log(`[waitForStack] Timeout after ${i} attempts`),Error(`Timeout waiting for stack to reach ${t}`)}async validateTemplate(e){let t={Action:"ValidateTemplate",TemplateBody:e,Version:"2010-05-15"};return await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()})}async listStacks(e){let t={Action:"ListStacks",Version:"2010-05-15"};if(e)e.forEach((c,n)=>{t[`StackStatusFilter.member.${n+1}`]=c});let s=await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()}),a=s.ListStacksResponse||s,r=a.ListStacksResult||a,m=r.StackSummaries?.member||r.StackSummaries||[];return{StackSummaries:(Array.isArray(m)?m:m?[m]:[]).map((c)=>({StackId:c.StackId||"",StackName:c.StackName||"",TemplateDescription:c.TemplateDescription,CreationTime:c.CreationTime||"",LastUpdatedTime:c.LastUpdatedTime,DeletionTime:c.DeletionTime,StackStatus:c.StackStatus||""}))}}async createChangeSet(e){let t={Action:"CreateChangeSet",StackName:e.stackName,ChangeSetName:e.changeSetName,Version:"2010-05-15"};if(e.templateBody)t.TemplateBody=e.templateBody;else if(e.templateUrl)t.TemplateURL=e.templateUrl;if(e.parameters)e.parameters.forEach((a,r)=>{t[`Parameters.member.${r+1}.ParameterKey`]=a.ParameterKey,t[`Parameters.member.${r+1}.ParameterValue`]=a.ParameterValue});if(e.capabilities)e.capabilities.forEach((a,r)=>{t[`Capabilities.member.${r+1}`]=a});if(e.changeSetType)t.ChangeSetType=e.changeSetType;let s=await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()});return{Id:s.Id,StackId:s.StackId}}async describeChangeSet(e,t){let s={Action:"DescribeChangeSet",StackName:e,ChangeSetName:t,Version:"2010-05-15"};return await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(s).toString()})}async executeChangeSet(e,t){let s={Action:"ExecuteChangeSet",StackName:e,ChangeSetName:t,Version:"2010-05-15"};await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(s).toString()})}async deleteChangeSet(e,t){let s={Action:"DeleteChangeSet",StackName:e,ChangeSetName:t,Version:"2010-05-15"};await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(s).toString()})}async getStackOutputs(e){let t=await this.describeStacks({stackName:e});if(!t.Stacks||t.Stacks.length===0)throw Error(`Stack ${e} not found`);let s=t.Stacks[0],a={};if(s.Outputs)for(let r of s.Outputs)a[r.OutputKey]=r.OutputValue;return a}async getTemplate(e){let t={Action:"GetTemplate",StackName:e,Version:"2010-05-15"},s=await this.client.request({service:"cloudformation",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()});return{TemplateBody:s?.GetTemplateResult?.TemplateBody||s?.TemplateBody||""}}parseStacksResponse(e){let t=[],s=e?.DescribeStacksResult?.Stacks?.member||e?.Stacks?.member||e?.Stacks||e;if(s&&!Array.isArray(s))s=[s];if(Array.isArray(s)){for(let a of s)if(a.StackId||a.StackName){let r;if(a.Outputs?.member)r=(Array.isArray(a.Outputs.member)?a.Outputs.member:[a.Outputs.member]).map((i)=>({OutputKey:i.OutputKey,OutputValue:i.OutputValue,Description:i.Description,ExportName:i.ExportName}));t.push({StackId:a.StackId,StackName:a.StackName,StackStatus:a.StackStatus,CreationTime:a.CreationTime,LastUpdatedTime:a.LastUpdatedTime,StackStatusReason:a.StackStatusReason,Outputs:r})}}else if(e.StackId)t.push({StackId:e.StackId,StackName:e.StackName,StackStatus:e.StackStatus,CreationTime:e.CreationTime,LastUpdatedTime:e.LastUpdatedTime});return t}parseStackEvents(e){let t=[],s=e?.DescribeStackEventsResult?.StackEvents?.member||e?.StackEvents?.member||e?.StackEvents||[];if(s&&!Array.isArray(s))s=[s];for(let a of s)if(a.LogicalResourceId)t.push({Timestamp:a.Timestamp,ResourceType:a.ResourceType,LogicalResourceId:a.LogicalResourceId,ResourceStatus:a.ResourceStatus,ResourceStatusReason:a.ResourceStatusReason});return t}async waitForStackWithProgress(e,t,s){let a={"stack-create-complete":["CREATE_COMPLETE"],"stack-update-complete":["UPDATE_COMPLETE"],"stack-delete-complete":["DELETE_COMPLETE"]},r=["CREATE_FAILED","ROLLBACK_FAILED","ROLLBACK_COMPLETE","UPDATE_ROLLBACK_FAILED","UPDATE_ROLLBACK_COMPLETE"],m=a[t],i=360,c=0,n=new Set;while(c<360)try{if(s)try{let l=[...(await this.describeStackEvents(e)).StackEvents||[]].reverse();for(let k of l){let d=`${k.LogicalResourceId}-${k.ResourceStatus}-${k.Timestamp}`;if(!n.has(d))n.add(d),s({resourceId:k.LogicalResourceId,resourceType:k.ResourceType,status:k.ResourceStatus,reason:k.ResourceStatusReason,timestamp:k.Timestamp})}}catch{}let o=await this.describeStacks({stackName:e});if(o.Stacks.length===0){if(t==="stack-delete-complete")return;await new Promise((u)=>setTimeout(u,2000)),c++;continue}let S=o.Stacks[0];if(m.includes(S.StackStatus))return;if(S.StackStatus==="DELETE_FAILED"&&t==="stack-delete-complete"){let u=Error("Stack deletion failed - may have resources that need to be retained");throw u.code="DELETE_FAILED",u.stackStatus=S.StackStatus,u.statusReason=S.StackStatusReason,u}if(r.includes(S.StackStatus))throw Error(`Stack reached failure status: ${S.StackStatus}`);await new Promise((u)=>setTimeout(u,3000)),c++}catch(o){if(t==="stack-delete-complete"&&o.message?.includes("does not exist"))return;if(t==="stack-create-complete"&&o.message?.includes("does not exist")){await new Promise((S)=>setTimeout(S,2000)),c++;continue}throw o}throw Error(`Timeout waiting for stack to reach ${t}`)}async waitForStackComplete(e,t=120,s=5000){let a=["CREATE_COMPLETE","UPDATE_COMPLETE","DELETE_COMPLETE"],r=["CREATE_FAILED","UPDATE_FAILED","DELETE_FAILED","ROLLBACK_COMPLETE","ROLLBACK_FAILED","UPDATE_ROLLBACK_COMPLETE","UPDATE_ROLLBACK_FAILED"];for(let m=0;m<t;m++)try{let i=await this.describeStacks({stackName:e});if(i.Stacks.length===0)return{success:!0,status:"DELETE_COMPLETE"};let c=i.Stacks[0],n=c.StackStatus;if(a.includes(n))return{success:!0,status:n};if(r.includes(n))return{success:!1,status:n,reason:c.StackStatusReason};await new Promise((o)=>setTimeout(o,s))}catch(i){if(i.message?.includes("does not exist"))return{success:!0,status:"DELETE_COMPLETE"};throw i}return{success:!1,status:"TIMEOUT",reason:"Timeout waiting for stack operation"}}}
2
+ export{p as hg};
@@ -0,0 +1 @@
1
+ import{Me as a,Ne as b,Oe as c,Pe as d,Qe as e,Re as f,Se as g,Te as h,Ue as i,Ve as j}from"./chunk-g90nqfgv.js";import"./chunk-c2b6nk0q.js";import"./chunk-936vp7dx.js";import"./chunk-9px3rg4a.js";import"./chunk-mn6j22zn.js";import"./chunk-dj9a67c3.js";import"./chunk-7wzdaqh6.js";import"./chunk-6eat8ezk.js";import"./chunk-d6zzgvtn.js";import"./chunk-ey9fagrr.js";import"./chunk-anm3ae6z.js";import"./chunk-b2ymh8k0.js";export{d as mergeDiscoveredSites,b as metricsScript,c as parseBlock,h as parseDeployHistory,f as parseServerLogs,g as parseServerSecurity,i as resolveConfigOnlyServerDashboardData,j as resolveServerDashboardData,e as serverLogSources,a as sharedBoxProbeScript};
@@ -0,0 +1,141 @@
1
+ import{bh as T}from"./chunk-ey9fagrr.js";class A{client;constructor(e,i){this.client=i??new T(void 0,{profile:e})}collectionItems(e,i){let t=e?.Items??e?.[i];if(!t)return[];if(Array.isArray(t))return t;let n=t[i]??t.Item;if(n===void 0)return typeof t==="object"&&(t.Id||t.PathPattern)?[t]:[];return Array.isArray(n)?n:[n]}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(([n,s])=>!/^[A-Za-z0-9-]{1,64}$/.test(n)||!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),n=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/config`,returnHeaders:!0}),s=n.headers?.etag||n.headers?.ETag||n.ETag||"",r=n.body?.DistributionConfig||n.DistributionConfig||n.body;if(!r||r.Enabled===void 0||!s)throw Error("Failed to read an ETag-protected CloudFront distribution config");let o=this.collectionItems(r.Origins,"Origin"),a=this.collectionItems(r.CacheBehaviors,"CacheBehavior"),u=o.find((f)=>String(f.Id)===t.id),c=a.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(c&&String(c.TargetOriginId)!==t.id&&!t.replaceExisting)throw Error(`Path ${t.pathPattern} already targets ${c.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,I])=>({HeaderName:f,HeaderValue:I}))}}:{}},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}:{}},m=["GET","HEAD","OPTIONS","PUT","POST","PATCH","DELETE"],d={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:m.length,Items:{Method:m},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}},h=u?o.map((f)=>String(f.Id)===t.id?g:f):[...o,g],l=c?a.map((f)=>String(f.PathPattern)===t.pathPattern?d:f):[...a,d],y=JSON.stringify(o)!==JSON.stringify(h)||JSON.stringify(a)!==JSON.stringify(l);if(!y||t.dryRun)return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:y,applied:!1,etag:s};r.Origins={Quantity:h.length,Items:{Origin:h}},r.CacheBehaviors={Quantity:l.length,...l.length?{Items:{CacheBehavior:l}}:{}};let C=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${e}/config`,body:this.buildDistributionConfigXml(r),headers:{"Content-Type":"application/xml","If-Match":s}});return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!0,applied:!0,etag:C.ETag||C.headers?.etag||""}}async removeExistingDistributionOrigin(e,i){let t=this.validateExistingOriginInput(e,i),n=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/config`,returnHeaders:!0}),s=n.headers?.etag||n.headers?.ETag||n.ETag||"",r=n.body?.DistributionConfig||n.DistributionConfig||n.body;if(!r||r.Enabled===void 0||!s)throw Error("Failed to read an ETag-protected CloudFront distribution config");let o=this.collectionItems(r.Origins,"Origin"),a=this.collectionItems(r.CacheBehaviors,"CacheBehavior"),u=o.find((l)=>String(l.Id)===t.id),c=a.find((l)=>String(l.PathPattern)===t.pathPattern);if(u&&String(u.DomainName)!==t.domainName)throw Error(`Origin ${t.id} no longer targets ${t.domainName}; refusing ambiguous removal`);if(c&&String(c.TargetOriginId)!==t.id)throw Error(`Path ${t.pathPattern} no longer targets ${t.id}; refusing ambiguous removal`);if(!c)return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!1,applied:!1,originRemoved:!1,etag:s};let g=a.filter((l)=>String(l.PathPattern)!==t.pathPattern),m=String(r.DefaultCacheBehavior?.TargetOriginId)===t.id||g.some((l)=>String(l.TargetOriginId)===t.id),d=m?o:o.filter((l)=>String(l.Id)!==t.id);if(t.dryRun)return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!0,applied:!1,originRemoved:!m&&!!u,etag:s};r.Origins={Quantity:d.length,Items:{Origin:d}},r.CacheBehaviors={Quantity:g.length,...g.length?{Items:{CacheBehavior:g}}:{}};let h=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${e}/config`,body:this.buildDistributionConfigXml(r),headers:{"Content-Type":"application/xml","If-Match":s}});return{distributionId:e,originId:t.id,domainName:t.domainName,pathPattern:t.pathPattern,changed:!0,applied:!0,originRemoved:!m&&!!u,etag:h.ETag||h.headers?.etag||""}}async createInvalidation(e){let i=e.callerReference||Date.now().toString(),t=`<?xml version="1.0" encoding="UTF-8"?>
2
+ <InvalidationBatch>
3
+ <Paths>
4
+ <Quantity>${e.paths.length}</Quantity>
5
+ <Items>
6
+ ${e.paths.map((s)=>`<Path>${s}</Path>`).join(`
7
+ `)}
8
+ </Items>
9
+ </Paths>
10
+ <CallerReference>${i}</CallerReference>
11
+ </InvalidationBatch>`,n=await this.client.request({service:"cloudfront",region:"us-east-1",method:"POST",path:`/2020-05-31/distribution/${e.distributionId}/invalidation`,body:t,headers:{"Content-Type":"application/xml"}});return{Id:n.Id||n.Invalidation?.Id,Status:n.Status||n.Invalidation?.Status||"InProgress",CreateTime:n.CreateTime||n.Invalidation?.CreateTime||new Date().toISOString()}}async getInvalidation(e,i){let t=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/invalidation/${i}`});return{Id:t.Id||t.Invalidation?.Id,Status:t.Status||t.Invalidation?.Status,CreateTime:t.CreateTime||t.Invalidation?.CreateTime}}async listInvalidations(e){let i=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/invalidation`}),t=[];if(i.InvalidationSummary){let n=Array.isArray(i.InvalidationSummary)?i.InvalidationSummary:[i.InvalidationSummary];t.push(...n.map((s)=>({Id:s.Id,Status:s.Status,CreateTime:s.CreateTime})))}return t}async waitForInvalidation(e,i){let n=0;while(n<60){if((await this.getInvalidation(e,i)).Status==="Completed")return;await new Promise((r)=>setTimeout(r,5000)),n++}throw Error(`Timeout waiting for invalidation ${i} to complete`)}async listDistributions(){let e=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:"/2020-05-31/distribution"}),i=[],n=(e.DistributionList||e).Items,s=[];if(Array.isArray(n))s=n;else if(n?.DistributionSummary)s=Array.isArray(n.DistributionSummary)?n.DistributionSummary:[n.DistributionSummary];return i.push(...s.map((r)=>({Id:r.Id,ARN:r.ARN,Status:r.Status,DomainName:r.DomainName,Aliases:r.Aliases||void 0,Enabled:r.Enabled==="true"||r.Enabled===!0}))),i}async getDistribution(e){let i=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}`}),t=i.Distribution||i;return{Id:t.Id,ARN:t.ARN,Status:t.Status,DomainName:t.DomainName,Aliases:t.DistributionConfig?.Aliases?.Items||t.Aliases?.Items||[],Enabled:t.DistributionConfig?.Enabled==="true"||t.DistributionConfig?.Enabled===!0}}async getDistributionConfig(e){let i=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/config`});return{ETag:i.ETag||"",DistributionConfig:i.DistributionConfig||i}}async invalidateAll(e){return this.createInvalidation({distributionId:e,paths:["/*"]})}async invalidatePaths(e,i){let t=i.map((n)=>n.startsWith("/")?n:`/${n}`);return this.createInvalidation({distributionId:e,paths:t})}async invalidatePattern(e,i){let t=i.startsWith("/")?i:`/${i}`;return this.createInvalidation({distributionId:e,paths:[t]})}async invalidateAfterDeployment(e){let{distributionId:i,changedPaths:t,invalidateAll:n=!1,wait:s=!1}=e,r;if(n||!t||t.length===0)r=await this.invalidateAll(i);else r=await this.invalidatePaths(i,t);if(s)await this.waitForInvalidation(i,r.Id);return{invalidationId:r.Id,status:r.Status}}async findDistributionByDomain(e){return(await this.listDistributions()).find((n)=>{if(n.DomainName===e)return!0;if(n.Aliases?.Items&&n.Aliases.Items.includes(e))return!0;return!1})||null}async batchInvalidate(e,i=["/*"]){return await Promise.all(e.map(async(n)=>{let s=await this.createInvalidation({distributionId:n,paths:i});return{distributionId:n,invalidationId:s.Id,status:s.Status}}))}async updateCustomErrorResponses(e){let{distributionId:i,customErrorResponses:t}=e,n=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${i}/config`,returnHeaders:!0}),s=n.headers?.etag||n.headers?.ETag||"",r=n.body?.DistributionConfig||(n.body?.Enabled!==void 0?n.body:void 0)||n.DistributionConfig;if(!r||r.Enabled===void 0)throw Error("Failed to get current distribution config");if(t.length===0)r.CustomErrorResponses={Quantity:0};else r.CustomErrorResponses={Quantity:t.length,Items:{CustomErrorResponse:t.map((c)=>({ErrorCode:c.errorCode,...c.responsePagePath&&{ResponsePagePath:c.responsePagePath},...c.responseCode&&{ResponseCode:c.responseCode},...c.errorCachingMinTTL!==void 0&&{ErrorCachingMinTTL:c.errorCachingMinTTL}}))}};let o=this.buildDistributionConfigXml(r),a=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${i}/config`,body:o,headers:{"Content-Type":"application/xml","If-Match":s}}),u=a.Distribution||a;return{Distribution:{Id:u.Id,ARN:u.ARN,Status:u.Status,DomainName:u.DomainName,Aliases:u.DistributionConfig?.Aliases?.Items||[],Enabled:u.DistributionConfig?.Enabled==="true"||u.DistributionConfig?.Enabled===!0},ETag:a.ETag||""}}async removeCustomErrorResponses(e){return this.updateCustomErrorResponses({distributionId:e,customErrorResponses:[]})}async updateDistribution(e){let{distributionId:i,aliases:t,certificateArn:n,comment:s}=e,r=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${i}/config`,returnHeaders:!0}),o=r.headers?.etag||r.headers?.ETag||"",a=r.body?.DistributionConfig||(r.body?.Enabled!==void 0?r.body:void 0)||r.DistributionConfig;if(!a||a.Enabled===void 0)throw Error("Failed to get current distribution config");if(t&&t.length>0)a.Aliases={Quantity:t.length,Items:{Item:t}};if(n)a.ViewerCertificate={ACMCertificateArn:n,SSLSupportMethod:"sni-only",MinimumProtocolVersion:"TLSv1.2_2021",CertificateSource:"acm"};if(s)a.Comment=s;let u=this.buildDistributionConfigXml(a),c=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${i}/config`,body:u,headers:{"Content-Type":"application/xml","If-Match":o}}),g=c.Distribution||c;return{Distribution:{Id:g.Id,ARN:g.ARN,Status:g.Status,DomainName:g.DomainName,Aliases:t?{Quantity:t.length,Items:t}:{Quantity:0,Items:[]},Enabled:g.DistributionConfig?.Enabled==="true"||g.DistributionConfig?.Enabled===!0},ETag:c.ETag||""}}buildDistributionConfigXml(e){let i=(r)=>r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;"),t={Items:"",Methods:"Method",Headers:"Name",Cookies:"Name",QueryStringCacheKeys:"Name",TrustedKeyGroups:"KeyGroup",TrustedSigners:"AwsAccountNumber",LambdaFunctionAssociations:"LambdaFunctionAssociation",FunctionAssociations:"FunctionAssociation",CacheBehaviors:"CacheBehavior",CustomErrorResponses:"CustomErrorResponse",GeoRestriction:"Location"},n={Origins:"Origin",Aliases:"CNAME",AllowedMethods:"Method",CachedMethods:"Method",CustomErrorResponses:"CustomErrorResponse",CacheBehaviors:"CacheBehavior"},s=(r,o,a="",u="")=>{if(o===null||o===void 0)return"";if(r.startsWith("@_")||r==="?xml")return"";if(typeof o==="boolean")return`${a}<${r}>${o}</${r}>
12
+ `;if(typeof o==="number"||typeof o==="string")return`${a}<${r}>${i(String(o))}</${r}>
13
+ `;if(Array.isArray(o)){let c=t[r]||r.replace(/s$/,"");return o.map((g)=>s(c,g,a,r)).join("")}if(typeof o==="object"){if(r==="Items"){let g=n[u]||"",m=Object.keys(o).filter((d)=>!d.startsWith("@_"));if(m.length===1&&!Array.isArray(o[m[0]])){let d=m[0],h=o[d];if(typeof h==="string")return`${a}<Items>
14
+ ${a} <${d}>${i(h)}</${d}>
15
+ ${a}</Items>
16
+ `;else if(typeof h==="object"&&!Array.isArray(h))return`${a}<Items>
17
+ ${s(d,h,a+" ",r)}${a}</Items>
18
+ `}if(m.length===1&&Array.isArray(o[m[0]])){let d=m[0],h=o[d],l="";for(let y of h)if(typeof y==="string")l+=`${a} <${d}>${i(y)}</${d}>
19
+ `;else l+=s(d,y,a+" ",r);return`${a}<Items>
20
+ ${l}${a}</Items>
21
+ `}if(Array.isArray(o)){let d="",h=g||"Item";for(let l of o)if(typeof l==="string")d+=`${a} <${h}>${i(l)}</${h}>
22
+ `;else d+=s(h,l,a+" ",r);return`${a}<Items>
23
+ ${d}${a}</Items>
24
+ `}}let c="";for(let[g,m]of Object.entries(o))if(!g.startsWith("@_"))c+=s(g,m,a+" ",r);if(c==="")return`${a}<${r}/>
25
+ `;return`${a}<${r}>
26
+ ${c}${a}</${r}>
27
+ `}return""};return`<?xml version="1.0" encoding="UTF-8"?>
28
+ <DistributionConfig xmlns="http://cloudfront.amazonaws.com/doc/2020-05-31/">
29
+ ${Object.entries(e).filter(([r])=>!r.startsWith("@_")).map(([r,o])=>s(r,o," ","DistributionConfig")).join("")}</DistributionConfig>`}async ensureDynamicHttpMethods(e){let i=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/config`,returnHeaders:!0}),t=i.headers?.etag||i.headers?.ETag||"",n=i.body?.DistributionConfig||i.DistributionConfig||i.body;if(!n)throw Error("Failed to get current distribution config");let s=!1,r=["GET","HEAD","OPTIONS","PUT","POST","PATCH","DELETE"],o=(c)=>{if(!c)return[];let g=c.Items;if(!g)return[];if(Array.isArray(g))return g.map(String);if(typeof g==="object"&&g.Method){let m=g.Method;return Array.isArray(m)?m.map(String):[String(m)]}if(g.Item)return Array.isArray(g.Item)?g.Item.map(String):[String(g.Item)];return[]},a=n.DefaultCacheBehavior;if(a){if(!o(a.AllowedMethods).includes("POST"))a.AllowedMethods={Quantity:r.length,Items:{Method:r},CachedMethods:{Quantity:2,Items:{Method:["GET","HEAD"]}}},s=!0}if(!s)return!1;let u=this.buildDistributionConfigXml(n);return await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${e}/config`,body:u,headers:{"Content-Type":"application/xml","If-Match":t}}),!0}async addAliases(e,i,t){return this.updateDistribution({distributionId:e,aliases:i,certificateArn:t})}async createFunction(e){let{name:i,code:t,comment:n="",runtime:s="cloudfront-js-2.0"}=e,r=`<?xml version="1.0" encoding="UTF-8"?>
30
+ <CreateFunctionRequest xmlns="http://cloudfront.amazonaws.com/doc/2020-05-31/">
31
+ <Name>${i}</Name>
32
+ <FunctionConfig>
33
+ <Comment>${n}</Comment>
34
+ <Runtime>${s}</Runtime>
35
+ </FunctionConfig>
36
+ <FunctionCode>${Buffer.from(t).toString("base64")}</FunctionCode>
37
+ </CreateFunctionRequest>`,o=await this.client.request({service:"cloudfront",region:"us-east-1",method:"POST",path:"/2020-05-31/function",body:r,headers:{"Content-Type":"application/xml"}}),a=o.FunctionSummary||o;return{FunctionARN:a.FunctionMetadata?.FunctionARN||a.FunctionARN,Name:a.Name||i,Stage:a.FunctionMetadata?.Stage||"DEVELOPMENT",ETag:o.ETag||""}}async listFunctions(){let e=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:"/2020-05-31/function"}),i=[],t=e.FunctionList?.Items?.FunctionSummary;if(t){let n=Array.isArray(t)?t:[t];for(let s of n)i.push({Name:s.Name,FunctionARN:s.FunctionMetadata?.FunctionARN,Stage:s.FunctionMetadata?.Stage,CreatedTime:s.FunctionMetadata?.CreatedTime,LastModifiedTime:s.FunctionMetadata?.LastModifiedTime})}return i}async getFunction(e,i="LIVE"){try{let t=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/function/${e}`,queryParams:{Stage:i},returnHeaders:!0}),n=t.body?.FunctionSummary||t.FunctionSummary||t.body||t;return{FunctionARN:n.FunctionMetadata?.FunctionARN,Name:n.Name||e,Stage:n.FunctionMetadata?.Stage||i,ETag:t.headers?.etag||t.ETag||"",FunctionCode:n.FunctionCode}}catch(t){if(t.message?.includes("404")||t.message?.includes("NoSuchFunctionExists"))return null;throw t}}async publishFunction(e,i){let t,n;if(typeof e==="object")t=e.Name,n=e.IfMatch;else t=e,n=i;if(!n){let o=await this.getFunction(t,"DEVELOPMENT");if(!o)throw Error(`Function ${t} not found`);n=o.ETag}let s=await this.client.request({service:"cloudfront",region:"us-east-1",method:"POST",path:`/2020-05-31/function/${t}/publish`,headers:{"If-Match":n}}),r=s.FunctionSummary||s;return{FunctionARN:r.FunctionMetadata?.FunctionARN,Stage:r.FunctionMetadata?.Stage||"LIVE",FunctionSummary:r}}async describeFunction(e){let{Name:i,Stage:t="DEVELOPMENT"}=e,n=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/function/${i}/describe`,queryParams:{Stage:t},returnHeaders:!0});return{ETag:n.headers?.etag||n.ETag||"",FunctionSummary:n.body?.FunctionSummary||n.FunctionSummary||n.body||n}}async updateFunction(e){let{Name:i,FunctionCode:t,FunctionConfig:n,IfMatch:s}=e,r=`<?xml version="1.0" encoding="UTF-8"?>
38
+ <UpdateFunctionRequest xmlns="http://cloudfront.amazonaws.com/doc/2020-05-31/">
39
+ <FunctionConfig>
40
+ <Comment>${n.Comment}</Comment>
41
+ <Runtime>${n.Runtime}</Runtime>
42
+ </FunctionConfig>
43
+ <FunctionCode>${Buffer.from(t).toString("base64")}</FunctionCode>
44
+ </UpdateFunctionRequest>`,o=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/function/${i}`,body:r,headers:{"Content-Type":"application/xml","If-Match":s},returnHeaders:!0});return{ETag:o.headers?.etag||o.ETag||"",FunctionSummary:o.body?.FunctionSummary||o.FunctionSummary||o.body||o}}async deleteFunction(e,i){let t=i;if(!t){let n=await this.getFunction(e,"DEVELOPMENT");if(!n)return;t=n.ETag}await this.client.request({service:"cloudfront",region:"us-east-1",method:"DELETE",path:`/2020-05-31/function/${e}`,headers:{"If-Match":t}})}async createIndexRewriteFunction(e){return this.createFunction({name:e,code:`function handler(event) {
45
+ const request = event.request;
46
+ var uri = request.uri;
47
+
48
+ // Check if the request is for a directory (ends with /)
49
+ if (uri.endsWith('/')) {
50
+ request.uri += 'index.html';
51
+ }
52
+ // Check if the request doesn't have a file extension
53
+ else if (!uri.includes('.')) {
54
+ // Add trailing slash to redirect to directory
55
+ request.uri += '/index.html';
56
+ }
57
+
58
+ return request;
59
+ }`,comment:"Rewrite directory requests to index.html for S3 static sites",runtime:"cloudfront-js-2.0"})}async listOriginAccessControls(){let e=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:"/2020-05-31/origin-access-control"}),i=[];if(e.OriginAccessControlList?.Items?.OriginAccessControlSummary){let t=Array.isArray(e.OriginAccessControlList.Items.OriginAccessControlSummary)?e.OriginAccessControlList.Items.OriginAccessControlSummary:[e.OriginAccessControlList.Items.OriginAccessControlSummary];i.push(...t.map((n)=>({Id:n.Id,Name:n.Name,Description:n.Description,SigningProtocol:n.SigningProtocol,SigningBehavior:n.SigningBehavior,OriginAccessControlOriginType:n.OriginAccessControlOriginType})))}return i}async createOriginAccessControl(e){let{name:i,description:t=`OAC for ${i}`,signingProtocol:n="sigv4",signingBehavior:s="always",originType:r="s3"}=e,o=`<?xml version="1.0" encoding="UTF-8"?>
60
+ <OriginAccessControlConfig xmlns="http://cloudfront.amazonaws.com/doc/2020-05-31/">
61
+ <Name>${i}</Name>
62
+ <Description>${t}</Description>
63
+ <SigningProtocol>${n}</SigningProtocol>
64
+ <SigningBehavior>${s}</SigningBehavior>
65
+ <OriginAccessControlOriginType>${r}</OriginAccessControlOriginType>
66
+ </OriginAccessControlConfig>`,a=await this.client.request({service:"cloudfront",region:"us-east-1",method:"POST",path:"/2020-05-31/origin-access-control",body:o,headers:{"Content-Type":"application/xml"},returnHeaders:!0}),u=a.body?.OriginAccessControl||a.OriginAccessControl||a.body||a;return{Id:u.Id,Name:u.OriginAccessControlConfig?.Name||i,Description:u.OriginAccessControlConfig?.Description||t,SigningProtocol:u.OriginAccessControlConfig?.SigningProtocol||n,SigningBehavior:u.OriginAccessControlConfig?.SigningBehavior||s,OriginAccessControlOriginType:u.OriginAccessControlConfig?.OriginAccessControlOriginType||r,ETag:a.headers?.etag||a.ETag||""}}async findOrCreateOriginAccessControl(e,i="s3"){let n=(await this.listOriginAccessControls()).find((r)=>r.Name===e&&r.OriginAccessControlOriginType===i);if(n)return{Id:n.Id,Name:n.Name,isNew:!1};let s=await this.createOriginAccessControl({name:e,originType:i});return{Id:s.Id,Name:s.Name,isNew:!0}}async createDistributionForS3(e){let{bucketName:i,bucketRegion:t,originAccessControlId:n,aliases:s=[],certificateArn:r,defaultRootObject:o="index.html",comment:a=`Distribution for ${i}`,priceClass:u="PriceClass_100",enabled:c=!0,trustedKeyGroupIds:g=[],mediaDelivery:m=!1}=e,d=`S3-${i}`,h=`${i}.s3.${t}.amazonaws.com`,l=`${Date.now()}-${Math.random().toString(36).slice(2)}`,y=g.length>0?`<TrustedKeyGroups>
67
+ <Enabled>true</Enabled>
68
+ <Quantity>${g.length}</Quantity>
69
+ <Items>${g.map((E)=>`<KeyGroup>${E}</KeyGroup>`).join("")}</Items>
70
+ </TrustedKeyGroups>`:"<TrustedKeyGroups><Enabled>false</Enabled><Quantity>0</Quantity></TrustedKeyGroups>",C="<Aliases><Quantity>0</Quantity></Aliases>";if(s.length>0)C=`<Aliases>
71
+ <Quantity>${s.length}</Quantity>
72
+ <Items>
73
+ ${s.map((E)=>`<CNAME>${E}</CNAME>`).join(`
74
+ `)}
75
+ </Items>
76
+ </Aliases>`;let f=`<ViewerCertificate>
77
+ <CloudFrontDefaultCertificate>true</CloudFrontDefaultCertificate>
78
+ </ViewerCertificate>`;if(r&&s.length>0)f=`<ViewerCertificate>
79
+ <ACMCertificateArn>${r}</ACMCertificateArn>
80
+ <SSLSupportMethod>sni-only</SSLSupportMethod>
81
+ <MinimumProtocolVersion>TLSv1.2_2021</MinimumProtocolVersion>
82
+ <CertificateSource>acm</CertificateSource>
83
+ </ViewerCertificate>`;let I=`<?xml version="1.0" encoding="UTF-8"?>
84
+ <DistributionConfig xmlns="http://cloudfront.amazonaws.com/doc/2020-05-31/">
85
+ <CallerReference>${l}</CallerReference>
86
+ <Comment>${a}</Comment>
87
+ <DefaultRootObject>${o}</DefaultRootObject>
88
+ <Origins>
89
+ <Quantity>1</Quantity>
90
+ <Items>
91
+ <Origin>
92
+ <Id>${d}</Id>
93
+ <DomainName>${h}</DomainName>
94
+ <OriginPath></OriginPath>
95
+ <S3OriginConfig>
96
+ <OriginAccessIdentity></OriginAccessIdentity>
97
+ </S3OriginConfig>
98
+ <OriginAccessControlId>${n}</OriginAccessControlId>
99
+ </Origin>
100
+ </Items>
101
+ </Origins>
102
+ <DefaultCacheBehavior>
103
+ <TargetOriginId>${d}</TargetOriginId>
104
+ <ViewerProtocolPolicy>redirect-to-https</ViewerProtocolPolicy>
105
+ <AllowedMethods>
106
+ <Quantity>2</Quantity>
107
+ <Items>
108
+ <Method>GET</Method>
109
+ <Method>HEAD</Method>
110
+ </Items>
111
+ <CachedMethods>
112
+ <Quantity>2</Quantity>
113
+ <Items>
114
+ <Method>GET</Method>
115
+ <Method>HEAD</Method>
116
+ </Items>
117
+ </CachedMethods>
118
+ </AllowedMethods>
119
+ <Compress>true</Compress>
120
+ <CachePolicyId>658327ea-f89d-4fab-a63d-7e88639e58f6</CachePolicyId>
121
+ ${y}
122
+ </DefaultCacheBehavior>
123
+ ${C}
124
+ ${f}
125
+ <PriceClass>${u}</PriceClass>
126
+ <Enabled>${c}</Enabled>
127
+ <HttpVersion>http2and3</HttpVersion>
128
+ <IsIPV6Enabled>true</IsIPV6Enabled>
129
+ ${m?"<CustomErrorResponses><Quantity>0</Quantity></CustomErrorResponses>":`<CustomErrorResponses>
130
+ <Quantity>1</Quantity>
131
+ <Items>
132
+ <CustomErrorResponse>
133
+ <ErrorCode>403</ErrorCode>
134
+ <ResponsePagePath>/index.html</ResponsePagePath>
135
+ <ResponseCode>200</ResponseCode>
136
+ <ErrorCachingMinTTL>300</ErrorCachingMinTTL>
137
+ </CustomErrorResponse>
138
+ </Items>
139
+ </CustomErrorResponses>`}
140
+ </DistributionConfig>`,p=await this.client.request({service:"cloudfront",region:"us-east-1",method:"POST",path:"/2020-05-31/distribution",body:I,headers:{"Content-Type":"application/xml"},returnHeaders:!0}),b=p.body?.Distribution||p.Distribution||p.body||p;return{Id:b.Id,ARN:b.ARN,DomainName:b.DomainName,Status:b.Status,ETag:p.headers?.etag||p.ETag||""}}async createMediaDistributionForS3(e){return this.createDistributionForS3({...e,defaultRootObject:"",mediaDelivery:!0,comment:e.comment??`Media distribution for ${e.bucketName}`})}async listPublicKeys(){let e=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:"/2020-05-31/public-key"});return this.collectionItems(e.PublicKeyList??e,"PublicKeySummary").map((t)=>({Id:String(t.Id),Name:String(t.Name),Comment:t.Comment?String(t.Comment):void 0}))}async createPublicKey(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e.name))throw TypeError("CloudFront public key name is invalid");if(!e.encodedKey.includes("BEGIN PUBLIC KEY"))throw TypeError("CloudFront public key must be PEM encoded");let i=(s)=>s.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),t=await this.client.request({service:"cloudfront",region:"us-east-1",method:"POST",path:"/2020-05-31/public-key",headers:{"Content-Type":"application/xml"},body:`<PublicKeyConfig xmlns="http://cloudfront.amazonaws.com/doc/2020-05-31/"><CallerReference>${i(e.callerReference??`${Date.now()}-${e.name}`)}</CallerReference><Name>${i(e.name)}</Name><EncodedKey>${i(e.encodedKey)}</EncodedKey><Comment>${i(e.comment??"")}</Comment></PublicKeyConfig>`}),n=t.PublicKey??t;return{Id:String(n.Id),Name:String(n.PublicKeyConfig?.Name??e.name),EncodedKey:String(n.PublicKeyConfig?.EncodedKey??e.encodedKey),Comment:String(n.PublicKeyConfig?.Comment??e.comment??"")}}async listKeyGroups(){let e=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:"/2020-05-31/key-group"});return this.collectionItems(e.KeyGroupList??e,"KeyGroupSummary").map((t)=>({Id:String(t.KeyGroup?.Id??t.Id),Name:String(t.KeyGroup?.KeyGroupConfig?.Name??t.KeyGroupConfig?.Name??t.Name),Items:this.collectionItems(t.KeyGroup?.KeyGroupConfig?.Items??t.KeyGroupConfig?.Items??t.Items,"Item").map(String),Comment:t.KeyGroup?.KeyGroupConfig?.Comment??t.KeyGroupConfig?.Comment??t.Comment}))}async createKeyGroup(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e.name))throw TypeError("CloudFront key group name is invalid");let i=[...new Set(e.publicKeyIds)];if(i.length===0)throw TypeError("CloudFront key group requires at least one public key");let t=(o)=>o.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),n=i.map((o)=>`<Item>${t(o)}</Item>`).join(""),s=await this.client.request({service:"cloudfront",region:"us-east-1",method:"POST",path:"/2020-05-31/key-group",headers:{"Content-Type":"application/xml"},body:`<KeyGroupConfig xmlns="http://cloudfront.amazonaws.com/doc/2020-05-31/"><Name>${t(e.name)}</Name><Items>${n}</Items><Comment>${t(e.comment??"")}</Comment></KeyGroupConfig>`}),r=s.KeyGroup??s;return{Id:String(r.Id),Name:String(r.KeyGroupConfig?.Name??e.name),Items:i,Comment:String(r.KeyGroupConfig?.Comment??e.comment??"")}}static getS3BucketPolicyForCloudFront(e,i){return{Version:"2012-10-17",Statement:[{Sid:"AllowCloudFrontServicePrincipal",Effect:"Allow",Principal:{Service:"cloudfront.amazonaws.com"},Action:"s3:GetObject",Resource:`arn:aws:s3:::${e}/*`,Condition:{StringEquals:{"AWS:SourceArn":i}}}]}}async waitForDistributionDeployed(e,i=60){for(let t=0;t<i;t++){if((await this.getDistribution(e)).Status==="Deployed")return!0;await new Promise((s)=>setTimeout(s,30000))}return!1}async disableDistribution(e){let i=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/config`,returnHeaders:!0}),t=i.headers?.etag||i.headers?.ETag||"",n=i.body?.DistributionConfig||(i.body?.Enabled!==void 0?i.body:void 0)||i.DistributionConfig;if(!n||n.Enabled===void 0)throw Error("Failed to get current distribution config");n.Enabled=!1;let s=this.buildDistributionConfigXml(n),r=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${e}/config`,body:s,headers:{"Content-Type":"application/xml","If-Match":t},returnHeaders:!0});return{ETag:r.headers?.etag||r.headers?.ETag||r.ETag||""}}async deleteDistribution(e,i){let t=i||"";if(!t){let n=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}`,returnHeaders:!0});t=n.headers?.etag||n.headers?.ETag||""}await this.client.request({service:"cloudfront",region:"us-east-1",method:"DELETE",path:`/2020-05-31/distribution/${e}`,headers:{"If-Match":t}})}async waitForDistributionDisabled(e,i=60){for(let t=0;t<i;t++){let n=await this.getDistribution(e);if(n.Status==="Deployed"&&!n.Enabled)return!0;await new Promise((s)=>setTimeout(s,30000))}return!1}async removeAlias(e,i){let t=await this.client.request({service:"cloudfront",region:"us-east-1",method:"GET",path:`/2020-05-31/distribution/${e}/config`,returnHeaders:!0}),n=t.headers?.etag||t.headers?.ETag||"",s=t.body?.DistributionConfig||(t.body?.Enabled!==void 0?t.body:void 0)||t.DistributionConfig;if(!s||s.Enabled===void 0)throw Error("Failed to get current distribution config");let r=[];if(s.Aliases?.Items){if(Array.isArray(s.Aliases.Items))r=s.Aliases.Items;else if(typeof s.Aliases.Items==="object"){let c=s.Aliases.Items.CNAME;if(typeof c==="string")r=[c];else if(Array.isArray(c))r=c}}if(r.length===0)throw Error("Distribution has no aliases to remove");let o=r.filter((c)=>c!==i);if(o.length===r.length)throw Error(`Alias ${i} not found in distribution`);if(s.Aliases.Quantity=o.length,s.Aliases.Items=o.length>0?o:void 0,o.length===0)s.ViewerCertificate={CloudFrontDefaultCertificate:!0,MinimumProtocolVersion:"TLSv1.2_2021"};let a=this.buildDistributionConfigXml(s),u=await this.client.request({service:"cloudfront",region:"us-east-1",method:"PUT",path:`/2020-05-31/distribution/${e}/config`,body:a,headers:{"Content-Type":"application/xml","If-Match":n},returnHeaders:!0});return{ETag:u.headers?.etag||u.headers?.ETag||u.ETag||""}}}
141
+ export{A as vd};