@stacksjs/ts-cloud 0.16.21 → 0.16.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/aws/index.js +1 -1
  2. package/dist/aws/xml-result.d.ts +20 -0
  3. package/dist/{chunk-g6g33pt9.js → bin/chunk-09d5qe73.js} +7 -7
  4. package/dist/bin/chunk-0cefbrxg.js +1 -0
  5. package/dist/bin/{chunk-ys5n5c84.js → chunk-12q8xrct.js} +5 -5
  6. package/dist/bin/chunk-1srmd473.js +1 -0
  7. package/dist/bin/{chunk-mxvekmdx.js → chunk-24njmb7d.js} +114 -114
  8. package/dist/bin/chunk-27ka240w.js +1 -0
  9. package/dist/bin/{chunk-ngyqqy6d.js → chunk-2gd8kqzq.js} +5 -5
  10. package/dist/bin/{chunk-djjj62c0.js → chunk-330kytpm.js} +2 -2
  11. package/dist/bin/{chunk-h1rb8qvt.js → chunk-3425j97b.js} +2 -2
  12. package/dist/bin/chunk-3bq69jqk.js +1 -0
  13. package/dist/bin/chunk-4pysr1ky.js +1 -0
  14. package/dist/bin/chunk-56zfvf7e.js +1 -0
  15. package/dist/bin/chunk-59nav625.js +1 -0
  16. package/dist/bin/{chunk-6kx50dyc.js → chunk-5bsknbr7.js} +1 -1
  17. package/dist/bin/{chunk-t10e32an.js → chunk-636jsmnz.js} +6 -6
  18. package/dist/bin/chunk-7kj8f72p.js +2 -0
  19. package/dist/bin/{chunk-e55fdn0r.js → chunk-7xr71hnt.js} +3 -3
  20. package/dist/bin/chunk-87f5d9qj.js +2 -0
  21. package/dist/bin/{chunk-tq172j2x.js → chunk-8agf66wn.js} +3 -3
  22. package/dist/bin/chunk-8fjzcr2w.js +1 -0
  23. package/dist/bin/{chunk-apnhhfkj.js → chunk-8wnkx3jf.js} +2 -2
  24. package/dist/bin/{chunk-z1dtdw3j.js → chunk-95v6ry1x.js} +5 -5
  25. package/dist/bin/chunk-9fq0bezb.js +1 -0
  26. package/dist/bin/chunk-9wpy7r9f.js +1 -0
  27. package/dist/bin/{chunk-5a7sxtwn.js → chunk-a0me5fed.js} +2 -2
  28. package/dist/bin/{chunk-148x1zq8.js → chunk-and7khsv.js} +2 -2
  29. package/dist/bin/{chunk-6wqjk007.js → chunk-ardzx4dw.js} +130 -130
  30. package/dist/bin/{chunk-0trtkv9g.js → chunk-c04dygzg.js} +6 -6
  31. package/dist/bin/chunk-eetz9jgy.js +1 -0
  32. package/dist/bin/chunk-eg6156wp.js +1 -0
  33. package/dist/bin/chunk-ezpz96kp.js +1 -0
  34. package/dist/bin/chunk-f2qpsrrj.js +1 -0
  35. package/dist/bin/chunk-f3sbq7pw.js +2 -0
  36. package/dist/bin/chunk-gmabk4qn.js +1 -0
  37. package/dist/bin/{chunk-9vmtm7nq.js → chunk-hmnaen1z.js} +2 -2
  38. package/dist/bin/{chunk-x63yz8xg.js → chunk-jp23ed1q.js} +1 -1
  39. package/dist/bin/{chunk-0f1qpmd6.js → chunk-k6apknm8.js} +5 -5
  40. package/dist/bin/{chunk-2mv692y4.js → chunk-k97ms0bs.js} +5 -5
  41. package/dist/bin/chunk-kr51h4gk.js +1 -0
  42. package/dist/bin/{chunk-290bzm2m.js → chunk-m51vpvr6.js} +3 -3
  43. package/dist/bin/{chunk-mx9ppkmn.js → chunk-mbqwrs7a.js} +4 -4
  44. package/dist/bin/{chunk-rbtt23vx.js → chunk-mz2jbtcs.js} +3 -3
  45. package/dist/bin/{chunk-dyh0vndw.js → chunk-n7hmjzgd.js} +4 -4
  46. package/dist/bin/{chunk-dmdg23a5.js → chunk-n8dsby4k.js} +2 -2
  47. package/dist/bin/chunk-nx8gpr90.js +34 -0
  48. package/dist/bin/chunk-q62ggp3g.js +1 -0
  49. package/dist/bin/chunk-q957s44c.js +1 -0
  50. package/dist/bin/{chunk-k7wh1wr5.js → chunk-qqqx70g6.js} +2 -2
  51. package/dist/bin/{chunk-gfr2215x.js → chunk-rm59bcnw.js} +60 -60
  52. package/dist/bin/chunk-rm6qnyce.js +2 -0
  53. package/dist/bin/chunk-rxehseyz.js +1 -0
  54. package/dist/bin/chunk-tfz7djw9.js +1 -0
  55. package/dist/bin/chunk-tr8901hb.js +1 -0
  56. package/dist/bin/{chunk-3n733cgx.js → chunk-v5bjbyve.js} +2 -2
  57. package/dist/bin/{chunk-90102shh.js → chunk-v980gs11.js} +2 -2
  58. package/dist/bin/chunk-vqb80dyg.js +1 -0
  59. package/dist/bin/{chunk-1j8b1d58.js → chunk-vskhr9qy.js} +2 -2
  60. package/dist/bin/{chunk-e24bscb0.js → chunk-wqydambz.js} +17 -17
  61. package/dist/bin/chunk-wysyyysg.js +1 -0
  62. package/dist/bin/chunk-xfs7rscr.js +1 -0
  63. package/dist/bin/cli.js +356 -356
  64. package/dist/bin/dashboard-server.js +1 -1
  65. package/dist/chunk-2ap78e1s.js +5 -0
  66. package/dist/{chunk-k53agv2m.js → chunk-2dextjqf.js} +2 -2
  67. package/dist/chunk-2fa9cdyf.js +1 -0
  68. package/dist/{chunk-z3wynefj.js → chunk-3jkc3s8c.js} +19 -19
  69. package/dist/chunk-3zzm5f28.js +92 -0
  70. package/dist/{chunk-e8e1h2h9.js → chunk-5dz6bzdj.js} +2 -2
  71. package/dist/chunk-6d5e10md.js +1 -0
  72. package/dist/chunk-9gypn8w9.js +1 -0
  73. package/dist/{chunk-hyeeqga9.js → chunk-9p89msvs.js} +6 -6
  74. package/dist/{chunk-31tvc877.js → chunk-9s24pbbc.js} +18 -18
  75. package/dist/chunk-badb5mf3.js +34 -0
  76. package/dist/{chunk-w9jhyy09.js → chunk-cfrv8110.js} +4 -4
  77. package/dist/{bin/chunk-8jbkphmg.js → chunk-dv1jkay7.js} +6 -6
  78. package/dist/{chunk-e52me1c6.js → chunk-ezgpamw6.js} +1 -1
  79. package/dist/chunk-j6a577hr.js +1 -0
  80. package/dist/chunk-jt49qs0f.js +2 -0
  81. package/dist/{chunk-aw1tp3p3.js → chunk-khatwx29.js} +99 -99
  82. package/dist/{chunk-v2p7c7s4.js → chunk-kpyhx96m.js} +133 -133
  83. package/dist/{chunk-3rahpgb9.js → chunk-kw852q5m.js} +164 -164
  84. package/dist/{chunk-3m9ghthh.js → chunk-mgg0psgc.js} +2 -2
  85. package/dist/{chunk-9wmer0zx.js → chunk-ms4dnha2.js} +2 -2
  86. package/dist/{chunk-qcaqc5b8.js → chunk-np8vgbv0.js} +3 -3
  87. package/dist/chunk-p0b08g9f.js +114 -0
  88. package/dist/{chunk-srrscggm.js → chunk-pcns0kz4.js} +5 -5
  89. package/dist/{chunk-kczzc599.js → chunk-pffebjr8.js} +31 -31
  90. package/dist/{chunk-vs0qrm09.js → chunk-pwywwdq2.js} +1 -1
  91. package/dist/{chunk-5far81q7.js → chunk-w4s3rswa.js} +2 -2
  92. package/dist/chunk-whdbz3h8.js +1 -0
  93. package/dist/{chunk-bxrzsth8.js → chunk-x60w04y3.js} +2 -2
  94. package/dist/{chunk-zx8ecz8b.js → chunk-y6k0vwfn.js} +4 -4
  95. package/dist/deploy/index.js +1 -1
  96. package/dist/dns/index.js +1 -1
  97. package/dist/drivers/index.js +1 -1
  98. package/dist/index.js +85 -85
  99. package/dist/operations/index.js +1 -1
  100. package/dist/protection/index.js +1 -1
  101. package/dist/spend/index.js +1 -1
  102. package/dist/ui/404.html +1 -1
  103. package/dist/ui/accept-invitation.html +1 -1
  104. package/dist/ui/access-denied.html +1 -1
  105. package/dist/ui/account/automation.html +6 -6
  106. package/dist/ui/account/security.html +2 -2
  107. package/dist/ui/applications/compose.html +6 -6
  108. package/dist/ui/applications/new.html +1 -1
  109. package/dist/ui/data/backups.html +5 -5
  110. package/dist/ui/data/services.html +5 -5
  111. package/dist/ui/data/volumes.html +6 -6
  112. package/dist/ui/index.html +6 -6
  113. package/dist/ui/infrastructure/topology.html +6 -6
  114. package/dist/ui/integrations.html +1 -1
  115. package/dist/ui/operations/alerts.html +6 -6
  116. package/dist/ui/operations/configuration.html +6 -6
  117. package/dist/ui/operations/jobs.html +5 -5
  118. package/dist/ui/operations/maintenance.html +6 -6
  119. package/dist/ui/operations/observability.html +6 -6
  120. package/dist/ui/operations/previews.html +6 -6
  121. package/dist/ui/operations/queue.html +6 -6
  122. package/dist/ui/operations/regions.html +6 -6
  123. package/dist/ui/operations/releases.html +6 -6
  124. package/dist/ui/operations/spend.html +6 -6
  125. package/dist/ui/operations/workloads.html +6 -6
  126. package/dist/ui/security.html +2 -2
  127. package/dist/ui/server/actions.html +6 -6
  128. package/dist/ui/server/activity.html +2 -2
  129. package/dist/ui/server/capacity.html +5 -5
  130. package/dist/ui/server/database.html +6 -6
  131. package/dist/ui/server/deployments.html +5 -5
  132. package/dist/ui/server/diagnostics.html +2 -2
  133. package/dist/ui/server/firewall.html +6 -6
  134. package/dist/ui/server/fleet.html +6 -6
  135. package/dist/ui/server/logs.html +6 -6
  136. package/dist/ui/server/metrics.html +5 -5
  137. package/dist/ui/server/security.html +1 -1
  138. package/dist/ui/server/services.html +1 -1
  139. package/dist/ui/server/sites.html +5 -5
  140. package/dist/ui/server/ssh-keys.html +5 -5
  141. package/dist/ui/server/team.html +6 -6
  142. package/dist/ui/server/terminal.html +2 -2
  143. package/dist/ui/serverless/alarms.html +6 -6
  144. package/dist/ui/serverless/assets.html +2 -2
  145. package/dist/ui/serverless/cost.html +2 -2
  146. package/dist/ui/serverless/data.html +5 -5
  147. package/dist/ui/serverless/deployments.html +1 -1
  148. package/dist/ui/serverless/firewall.html +1 -1
  149. package/dist/ui/serverless/functions.html +5 -5
  150. package/dist/ui/serverless/logs.html +6 -6
  151. package/dist/ui/serverless/metrics.html +1 -1
  152. package/dist/ui/serverless/queues.html +6 -6
  153. package/dist/ui/serverless/secrets.html +6 -6
  154. package/dist/ui/serverless/traces.html +5 -5
  155. package/dist/ui/serverless.html +6 -6
  156. package/package.json +3 -3
  157. package/dist/bin/chunk-0h6cggyt.js +0 -1
  158. package/dist/bin/chunk-2g2zrtjs.js +0 -2
  159. package/dist/bin/chunk-35rkh66r.js +0 -1
  160. package/dist/bin/chunk-4cs098d1.js +0 -1
  161. package/dist/bin/chunk-52fhq35h.js +0 -1
  162. package/dist/bin/chunk-6se7ygxa.js +0 -1
  163. package/dist/bin/chunk-72g1hr4z.js +0 -1
  164. package/dist/bin/chunk-840arz58.js +0 -34
  165. package/dist/bin/chunk-c7vxdwth.js +0 -1
  166. package/dist/bin/chunk-e0c3agf2.js +0 -1
  167. package/dist/bin/chunk-egn33pr9.js +0 -2
  168. package/dist/bin/chunk-gf7yavs5.js +0 -1
  169. package/dist/bin/chunk-gp5w7e4c.js +0 -1
  170. package/dist/bin/chunk-gt7g41js.js +0 -1
  171. package/dist/bin/chunk-hagakkgm.js +0 -1
  172. package/dist/bin/chunk-hr3vbg6y.js +0 -1
  173. package/dist/bin/chunk-hyb5v8wr.js +0 -1
  174. package/dist/bin/chunk-nqb1faqj.js +0 -1
  175. package/dist/bin/chunk-p831sptd.js +0 -1
  176. package/dist/bin/chunk-qxx1a51w.js +0 -1
  177. package/dist/bin/chunk-sh248v2y.js +0 -1
  178. package/dist/bin/chunk-swfmx4f8.js +0 -1
  179. package/dist/bin/chunk-vjkyj3xy.js +0 -2
  180. package/dist/bin/chunk-w78chy9x.js +0 -1
  181. package/dist/bin/chunk-w8k1gyzr.js +0 -1
  182. package/dist/bin/chunk-wagzxm7z.js +0 -1
  183. package/dist/bin/chunk-xdxk6baf.js +0 -1
  184. package/dist/bin/chunk-ysv52qcc.js +0 -1
  185. package/dist/chunk-07rjctzz.js +0 -1
  186. package/dist/chunk-49vvjfrd.js +0 -1
  187. package/dist/chunk-6kcmbymp.js +0 -1
  188. package/dist/chunk-7xnwa0s8.js +0 -5
  189. package/dist/chunk-89p8mshq.js +0 -114
  190. package/dist/chunk-9asn5fpt.js +0 -92
  191. package/dist/chunk-d46p0h6t.js +0 -34
  192. package/dist/chunk-dak9hfrd.js +0 -1
  193. package/dist/chunk-ptq9v346.js +0 -2
  194. package/dist/chunk-z4xzd43p.js +0 -1
@@ -1,5 +1,5 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mutbqbctbm2gpg"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"> <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Traces</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-scoped>
2
- function __stx_setup_1791088305946_30() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mutd3utmqgvydm"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"> <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Traces</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-scoped>
2
+ function __stx_setup_1791090617455_30() {
3
3
  const { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
4
4
 
5
5
  var initialTraces = [];
@@ -42,9 +42,9 @@ onMount(() => {
42
42
 
43
43
  return { traces, minutes, note, loading, filter, shown, tone, load, setWindow };
44
44
  }
45
- window.__stx_latestSetup=__stx_setup_1791088305946_30;
46
- if(window.stx)window.stx._latestSetup=__stx_setup_1791088305946_30;
47
- </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1791088305946_30"><a data-stx-scope="stx_scope_nav_42" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>acme</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>acme</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
45
+ window.__stx_latestSetup=__stx_setup_1791090617455_30;
46
+ if(window.stx)window.stx._latestSetup=__stx_setup_1791090617455_30;
47
+ </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1791090617455_30"><a data-stx-scope="stx_scope_nav_42" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>acme</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>acme</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
48
48
  (function() {
49
49
  var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
50
50
  var __destroyHooks = [];
@@ -1,5 +1,5 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mutbqbctbm2gpg"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"> <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <script data-stx-composables src="/_stx/chunk.9fd39d5b.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Serverless</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-scoped>
2
- function __stx_setup_1791088306624_36() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mutd3utmqgvydm"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"> <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <script data-stx-composables src="/_stx/chunk.9fd39d5b.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Serverless</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-scoped>
2
+ function __stx_setup_1791090618060_36() {
3
3
  const { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
4
4
 
5
5
  var initialMaintenance = false;
@@ -180,9 +180,9 @@ runOp = __stxBundle_0bd12f9ee3a9["runOp"];
180
180
  typed = __stxBundle_0bd12f9ee3a9["typed"];
181
181
  return { appCmd, askAppCmd, askOp, busy, canRun, cancelAppCmd, cancelOp, cmdBusy, cmdCanRun, cmdOut, cmdPending, cmdShown, cmdTyped, confirmDanger, confirmLabel, confirmTok, confirmVerb, maint, opOutput, opShown, pending, runAppCmd, runOp, typed, __stxBundle_0bd12f9ee3a9 };
182
182
  }
183
- window.__stx_latestSetup=__stx_setup_1791088306624_36;
184
- if(window.stx)window.stx._latestSetup=__stx_setup_1791088306624_36;
185
- </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.b7a99a5c.css"></head><body data-stx="__stx_setup_1791088306624_36"><a data-stx-scope="stx_scope_nav_52" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>Project</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>Project</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
183
+ window.__stx_latestSetup=__stx_setup_1791090618060_36;
184
+ if(window.stx)window.stx._latestSetup=__stx_setup_1791090618060_36;
185
+ </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.b7a99a5c.css"></head><body data-stx="__stx_setup_1791090618060_36"><a data-stx-scope="stx_scope_nav_53" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>Project</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>Project</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
186
186
  (function() {
187
187
  var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
188
188
  var __destroyHooks = [];
@@ -533,6 +533,6 @@ if(window.stx)window.stx._latestSetup=__stx_setup_1791088306624_36;
533
533
 
534
534
 
535
535
  try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
536
- window.stx._scopes['stx_scope_nav_52'] = __scopeRegistration;
536
+ window.stx._scopes['stx_scope_nav_53'] = __scopeRegistration;
537
537
  })();
538
538
  </script> <div class="wrap"><header class="page"><div><h1>Serverless Dashboard</h1><p>AWS Lambda · unavailable · unavailable</p><div class="server-line"><span>URL <b><a href="#" class="mono">#</a></b></span><span>Build <b class="mono">unavailable</b></span><span>Deployed <b>unavailable</b></span></div></div><div class="header-actions"><span class="pill warn">data unavailable</span><button class="btn ghost sm" type="button" @show="!maint()" @click="askOp('maintenance:on', 'Project', 'enable maintenance mode for Project', 'maintenance')" x-cloak>Maintenance</button><button class="btn ghost sm" type="button" @show="maint()" @click="askOp('maintenance:off', 'Project', 'bring Project back live', 'live')" x-cloak>Go live</button><button class="btn ghost sm" type="button" @click="askOp('rollback', 'Project', 'roll back Project to the previous build', 'rollback')">Roll back</button><button class="btn sm" type="button" @click="askOp('redeploy', 'Project', 'redeploy Project', 'redeploy')">Redeploy</button></div></header><div class="panel" style="margin-bottom:20px" @show="pending() !== null || opShown()" x-cloak><div class="op-confirm panel" @show="pending() !== null" role="group" aria-labelledby="op-confirm-prompt" x-cloak><span id="op-confirm-prompt" x-cloak>Type <b class="mono" x-cloak>{{ confirmTok() }}</b> to {{ confirmVerb() }}:</span><input data-stx-ref="opConfirmInput" class="op-confirm-input" :value="typed()" @input="typed.set($event.target.value)" @keydown.enter="runOp()" placeholder="confirm" autocomplete="off" aria-labelledby="op-confirm-prompt"><button type="button" class="btn sm" :class="{ danger: confirmDanger() }" :disabled="!canRun()" @click="runOp()" x-cloak>{{ confirmLabel() }}</button><button type="button" class="btn ghost sm" :disabled="busy()" @click="cancelOp()">Cancel</button></div><pre class="action-output op-output" @show="opShown()" aria-live="polite" x-cloak>{{ opOutput() }}</pre></div><div class="grid cards"><a class="panel" href="/serverless/metrics"><h3>Invocations (24h)</h3><div class="stat">Unavailable</div><p style="color: var(--txt2); font-size: 13px; margin-top: 8px;">No sample data shown</p></a><a class="panel" href="/serverless/metrics"><h3>Error Rate</h3><div class="stat">Unavailable</div><div class="bar"><i style="width: 0%"></i></div></a><a class="panel" href="/serverless/metrics"><h3>p95 Latency</h3><div class="stat">Unavailable</div><p style="color: var(--txt2); font-size: 13px; margin-top: 8px;">Cold-start signal unavailable</p></a><a class="panel" href="/serverless/cost"><h3>Est. Cost (24h)</h3><div class="stat">Unavailable</div><p style="color: var(--txt2); font-size: 13px; margin-top: 8px;">cost analysis →</p></a></div><div class="section"><h2>Functions <a class="more" href="/serverless/functions">View all →</a></h2><div class="panel"><table><thead><tr><th scope="col">Function</th><th scope="col">Name</th><th scope="col">Memory</th><th scope="col">Timeout</th><th scope="col">Invocations</th><th scope="col">Errors</th><th scope="col">p95</th><th scope="col">Status</th></tr></thead><tbody></tbody></table></div></div><div class="cols section"><div><h2>Queues <a class="more" href="/serverless/queues">View all →</a></h2><div class="panel"><table><thead><tr><th scope="col">Queue</th><th scope="col">Visible</th><th scope="col">In-flight</th><th scope="col">Processed</th><th scope="col">DLQ</th></tr></thead><tbody></tbody></table></div></div><div><h2>Scheduler <a class="more" href="/serverless/scheduler">Details →</a></h2><div class="panel"><div class="kv"><span>state</span><span class="pill warn">off</span></div><div class="kv"><span>expression</span><span class="mono">unavailable</span></div><div class="kv"><span>last run</span><span style="color: var(--txt2)">unavailable</span></div></div><div style="height: 16px"></div><h2>Firewall (WAF) <a class="more" href="/serverless/firewall">Details →</a></h2><div class="panel"><div class="kv"><span>state</span><span class="pill warn">off</span></div><div class="kv"><span>rules</span><span class="mono"></span></div><div class="kv"><span>blocked (24h)</span><span>0</span></div></div></div></div><div class="section"><h2>Data <a class="more" href="/serverless/data">View all →</a></h2><div class="panel"></div></div><div class="cols section"><div><h2>Recent Deployments <a class="more" href="/serverless/deployments">View all →</a></h2><div class="panel"><div style="margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--panel-br);"><button class="btn danger sm" type="button" @click="askOp('rollback', 'Project', 'roll back Project to the previous build', 'rollback')">Roll back to previous</button></div></div></div><div><h2>Assets &amp; CDN <a class="more" href="/serverless/assets">Details →</a></h2><div class="panel"><div class="kv"><span>bucket</span><span class="mono">unavailable</span></div><div class="kv"><span>cdn</span><span class="mono">unavailable</span></div><div class="kv"><span>ASSET_URL</span><span class="mono" style="font-size: 11px">#</span></div></div><div style="height: 16px"></div><h2>Secrets <a class="more" href="/serverless/secrets">Manage →</a></h2><div class="panel"></div></div></div><div class="section"><h2>Run a command</h2><div class="panel"><div class="field"><label class="sr-only" for="app-command">Application command to run</label><input id="app-command" :value="appCmd()" @input="appCmd.set($event.target.value)" @keydown.enter="askAppCmd()" placeholder="e.g. migrate --force, cache:clear, queue:retry all" autocomplete="off"><button class="btn" type="button" :disabled="cmdBusy()" @click="askAppCmd()">Run</button></div><div class="op-confirm" @show="cmdPending() !== null" style="margin-top:14px" x-cloak><span>Type <b class="mono">run</b> to execute <b class="mono" x-cloak>{{ cmdPending() }}</b> against production:</span><input class="op-confirm-input" :value="cmdTyped()" @input="cmdTyped.set($event.target.value)" @keydown.enter="runAppCmd()" placeholder="confirm" autocomplete="off" aria-label="Type run to confirm executing this command"><button type="button" class="btn danger sm" :disabled="!cmdCanRun()" @click="runAppCmd()">Run command</button><button type="button" class="btn ghost sm" @click="cancelAppCmd()">Cancel</button></div><pre class="action-output" @show="cmdShown()" aria-live="polite" x-cloak>{{ cmdOut() }}</pre><p class="note">Invokes the app command through the CLI Lambda function (RequestResponse), the same path as <span class="mono">cloud command "..."</span>. Output is clamped.</p></div></div></div></body></html>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stacksjs/ts-cloud",
3
3
  "type": "module",
4
- "version": "0.16.21",
4
+ "version": "0.16.22",
5
5
  "description": "A lightweight, performant infrastructure-as-code library and CLI for deploying both server-based (EC2) and serverless applications.",
6
6
  "author": "Chris Breuer <chris@stacksjs.com>",
7
7
  "license": "MIT",
@@ -102,8 +102,8 @@
102
102
  },
103
103
  "dependencies": {
104
104
  "@stacksjs/ts-xml": "^0.1.2",
105
- "@ts-cloud/aws-types": "0.16.21",
106
- "@ts-cloud/core": "0.16.21",
105
+ "@ts-cloud/aws-types": "0.16.22",
106
+ "@ts-cloud/core": "0.16.22",
107
107
  "hash-wasm": "^4.12.0"
108
108
  },
109
109
  "devDependencies": {
@@ -1 +0,0 @@
1
- import{H,no}from"./chunk-148x1zq8.js";import"./chunk-9vmtm7nq.js";import"./chunk-mx9ppkmn.js";export{H as ACMClient,no as ACMDnsValidator};
@@ -1,2 +0,0 @@
1
- import{createRequire as g}from"node:module";var d=Object.defineProperty;var e=(a)=>a;function f(a,b){this[a]=e.bind(null,b)}var Td=(a,b)=>{for(var c in b)d(a,c,{get:b[c],enumerable:!0,configurable:!0,set:f.bind(b,c)})};var di=g(import.meta.url);
2
- export{Td,di};
@@ -1 +0,0 @@
1
- import{Vn}from"./chunk-290bzm2m.js";import"./chunk-egn33pr9.js";import"./chunk-tq172j2x.js";import"./chunk-6kx50dyc.js";import"./chunk-2mv692y4.js";import"./chunk-vjkyj3xy.js";import"./chunk-e55fdn0r.js";import"./chunk-mx9ppkmn.js";import"./chunk-mxvekmdx.js";export{Vn as resolveDashboardData};
@@ -1 +0,0 @@
1
- import{ue}from"./chunk-k7wh1wr5.js";import"./chunk-mx9ppkmn.js";export{ue as RDSClient};
@@ -1 +0,0 @@
1
- import{yd,tc,Sd,io,oo,so,ys}from"./chunk-ys5n5c84.js";import"./chunk-mxvekmdx.js";export{yd as MANAGEMENT_DASHBOARD_SITE,ys as buildManagementDashboardArtifact,tc as dashboardCredentialsFile,oo as ensureManagementDashboard,so as managementDashboardSiteNames,Sd as resolveDashboardAuth,io as resolveUiSource};
@@ -1 +0,0 @@
1
- import{dc,oe,uc,Ed,pp,pi,mp,gp,Fs,fp,hp,yp,Sp,bp,vp,Tp,pc,mc,js,Vs,vo,Ye,A,zs,gc,V,Cr,C,wd,mi,Hs,qs,U,To,Ep,wp,Cp,Ap,l,s,Ip,Rp,E,Ws,Gs,Ks,Pp,Np,Pe,Js,Eo,Cd,Dp,kp,Le,vt,Xs,fc,hc,_p,yc,Sc,bc,Qs,vc,Ut,wo,gi,Co,fi,Me,Ad,Ao,Io,Ys,Zs,ea,ta,ra,na,Se,B,S,x,Ze,D,Id,Tt,pe,Bt,xp,Rd,be,Ro,Ue,Ft,hi,ve,Po,Ne,Pd,yi,Te,Ee,ee,Si,G,jt,Et,we,t,No,$p,Tc,ia,Op,Lp,Mp,Up,oa,Bp,Fp,jp,Vp,zp,Hp,qp,Wp,Gp,Kp,Jp,Xp,Nd,Dd,kd,_d,xd,$d,Od,Vt,Ec,wc,Ar,bi,Qp,Cc,Yp,Zp,nn,em,tm,rm,nm,im,om,Ld,Md,Ud,Bd,Fd,Do,sm,sa,jd,Vd,zd,Ac,Ce,am,Hd,wt,ko,Ir,qd,Ic,Wd,Gd,Kd,Rc,De,cm,lm,dm,um,Jd,pm,Ae,mm,gm,fm,Pc,Nc,hm,Dc,kc,ym,Sm,bm,vm,Tm,Xd,aa,Em,wm,Cm,Am,Im,Qd,Yd,Rm,Pm,Nm,Dm,km,_m,xm,$m,Om,_c,ca,Lm,Mm,Um,Bm,xc,$c,Oc,Fm,Lc,jm,Vm,zm,Hm,Mc,qm,Wm,Gm,Km,Jm,Xm,Qm,Ym,Zd,eu,tu,ru,Uc,Zm,eg,tg,rg,ng,ig,og,sg,ag,nu,iu,ou,su,cg,lg,Bc,dg,Fc,jc,Vc,zc,ug,pg,mg,gg,et,vi,fg,hg,yg,Sg,bg,vg,Tg,Eg,au,wg,Cg,Hc,qc,Ag,Ig,cu,Rg,Pg,Ng,Dg,kg,_g,xg,$g,Og,Lg,Mg,Ug,Bg,Fg,jg,Vg,zg,Hg,qg,Wg,Gg,Wc,Kg,Gc,Jg,Kc,Xg,Jc,Qg,Xc,Yg,on,Zg,Qc,ef,_o,tf,Yc,rf,Zc,nf,el,of,tl,sf,rl,af,sn,cf,nl,lf,il,df,ol,uf,sl,pf,al,mf,cl,gf,ll,ff,dl,hf,ul,yf,pl,Sf,ml,bf,gl,vf,fl,Tf,hl,Ef,yl,wf,Sl,Cf,bl,Af,vl,If,Tl,Rf,El,Pf,wl,Nf,Cl,Df,Al,kf,Il,_f,Rl,xf,lu,du,uu,pu,Pl,$f,Nl,Of,Dl,Lf,kl,Mf,Ti,mu,gu,xo,la,an,fu,$o,zt,da,ua,hu,yu,_l,Su,pa,xl,Uf,Bf,ma,ga,fa,$l,Oo,Ol,Ll,ha,Ml,Ul,Bl,bu,vu,Tu,Ff,Eu,wu,jf,Cu,Fl,Au,Iu,Ru,Vf,Pu,Ei,ya,Nu,zf,Du,Lo,Mo,Sa,jl,Hf,Vl,qf,zl,Wf,Hl,Gf,ql,Kf}from"./chunk-mxvekmdx.js";export{Yc as ABTestManager,Ue as AI,Wd as AWSAPIError,Kc as AWSConfigManager,$p as AWS_PSEUDO_PARAMETERS,et as AWS_REGIONS,Po as ApiGateway,No as Arn,ee as AssetHasher,Te as Auth,Wc as BackupManager,Dl as BatchProcessingManager,Qc as BlueGreenManager,Cl as BounceComplaintHandler,pl as BuildOptimizationManager,Me as CDN,ga as CHAIN_HEADER,Xs as CLOUDFRONT_FAILOVER_STATUS_CODES,Pg as COMMON_CROSS_ACCOUNT_ROLES,hi as Cache,_o as CanaryManager,ll as CertificateManager,wt as CloudError,Tc as CloudFormationBuilder,zd as CloudFormationClient,Hd as CloudFrontClient,Jc as CloudTrailManager,su as CommandHistory,we as Communication,S as Compute,ko as ConfigurationError,ml as ContainerRegistryManager,Ir as CredentialError,Fc as CrossRegionReferenceManager,Dd as DASHBOARD_ENTRY,kd as DASHBOARD_PORT_BASE,_d as DASHBOARD_PORT_SPAN,Nd as DASHBOARD_STATE_DIR,fc as DEFAULT_FAILOVER_STATUS_CODES,Oo as DEFAULT_RECURSION_LIMITS,Ae as DEFAULT_SERVICE_LIMITS,pc as DEFAULT_STATE_DIR,Ad as DEFAULT_STORAGE_FAILOVER_STATUS_CODES,ma as DEPTH_HEADER,Nl as DLQMonitoringManager,Se as DNS,El as DNSSECManager,Ft as Database,sl as DatabaseUserManager,De as DebugLogger,Cd as DependencyGraph,Ee as Deployment,qd as DeploymentError,Gc as DisasterRecoveryManager,D as Email,lu as EmailAdvanced,Al as EmailAnalyticsManager,du as EmailHandlers,Rl as EmailTemplateManager,Gd as ErrorCodes,Io as FAILOVER_REPLICA_POLICY_SID,Pl as FIFOQueueManager,Pc as FileCache,Ze as FileSystem,t as Fn,jc as GlobalResourceManager,Xc as GuardDutyManager,Xd as HashCache,zl as HealthCheckManager,ul as ImageScanningManager,Bt as JobLoader,Nu as LARAVEL_SERVERLESS_BUILD_STEPS,yl as LambdaConcurrencyManager,vl as LambdaDLQManager,Sl as LambdaDestinationsManager,fl as LambdaLayersManager,bl as LambdaVPCManager,hl as LambdaVersionsManager,rl as LogsManager,fu as MANAGED_NODE_VERSIONS,Ec as MANAGEMENT_DASHBOARD_SITE_PREFIX,Ne as Messaging,tl as MetricsManager,nl as MigrationManager,xc as MockCloudFormation,Oc as MockDynamoDB,$c as MockS3,yi as Monitoring,Hc as MultiAccountManager,Bc as MultiRegionManager,eu as MultiStepProgress,x as Network,Hl as NetworkSecurityManager,Sc as ORIGIN_CONNECTION_ATTEMPTS,bc as ORIGIN_CONNECTION_TIMEOUT,hc as ORIGIN_GROUP_ALLOWED_METHODS,_p as ORIGIN_GROUP_ID_SUFFIX,yc as ORIGIN_GROUP_SELECTION_CRITERIA,qc as OrganizationManager,Du as PHP_DEFAULT_EXCLUDES,hu as PHP_LAYER_EXTENSIONS,G as ParameterStore,ol as PerformanceManager,ve as Permissions,Tt as Phone,uu as PhoneAdvanced,Id as PhoneHandlers,Lc as PreviewEnvironmentManager,Mc as PreviewNotificationService,Zd as ProgressBar,Zc as ProgressiveDeploymentManager,Ap as Pseudo,pe as Queue,kl as QueueManagementManager,vp as QueuePresets,cu as RECOMMENDED_ACCOUNT_STRUCTURES,Rg as RECOMMENDED_SCPS,nu as REPL,ou as REPLCommandBuilder,iu as REPLContext,Qd as RateLimiter,Tp as RealtimePresets,ha as RecursionGuard,Et as Redirects,Vc as RegionPairManager,vt as Registry,il as ReplicaManager,ql as ResourceManagementManager,wl as Route53ResolverManager,Tl as Route53RoutingManager,Ac as S3Client,Ce as S3Error,be as SMS,mc as STATE_DIR_ENV_VAR,Ao as STORAGE_FAILOVER_METADATA_KEY,jt as Search,Si as Secrets,cl as SecretsManager,al as SecretsRotationManager,B as Security,on as SecurityHubManager,dl as SecurityScanningManager,Il as SenderReputationManager,gl as ServiceMeshManager,Ro as Sftp,pu as SmsAdvanced,Rd as SmsHandlers,tu as Spinner,zc as StackDependencyManager,xp as StacksIntegration,jl as StaticSiteManager,Le as Storage,Vl as StorageAdvancedManager,sn as SyntheticsManager,fa as TRACE_HEADER,ru as TaskList,To as TemplateBuilder,Nc as TemplateCache,Ic as ValidationError,Pd as Workflow,el as XRayManager,rf as abTestManager,Dp as analyzeStackDiff,la as artifactKey,gi as assertOriginGroupMethods,ng as autocomplete,Xg as awsConfigManager,Kg as backupManager,Em as batch,Lf as batchProcessingManager,ef as blueGreenManager,Df as bounceComplaintHandler,Bf as buildBunRuntimeLayerZip,ia as buildCloudFormationTemplate,ra as buildFailoverReplicaPolicyStatement,qs as buildMailEnv,Uf as buildNodeRuntimeLayerZip,Sf as buildOptimizationManager,vc as buildOriginGroup,wo as buildOriginGroups,zf as buildPhpRuntimeLayerZip,ta as buildReplicationConfiguration,ea as buildReplicationRole,tf as canaryManager,km as categorizeChanges,ff as certificateManager,um as checkIAMPermissions,Eu as checkInvocation,mm as checkServiceQuotas,Yd as chunk,hp as clearSigningKeyCache,$m as cloudConfigSchema,Qg as cloudTrailManager,Mo as collectPhpAppEntries,Yp as composePresets,ua as composeServerlessAppTemplate,bf as containerRegistryManager,Fp as createApiBackendPreset,Ru as createCliHandler,sm as createCredentialProvider,Xp as createDashboardSite,qp as createDataPipelinePreset,Rc as createError,oa as createExistingStaticFullStackPreset,Bp as createFullStackAppPreset,Vf as createHandlers,Au as createHttpHandler,Vp as createJamstackPreset,Kp as createLaravelPreset,Wp as createMLApiPreset,zp as createMicroservicesPreset,Fm as createMockAWS,Lp as createNodeJsServerPreset,Mp as createNodeJsServerlessPreset,Zp as createPreset,Ed as createPresignedUrl,pp as createPresignedUrlAsync,Iu as createQueueHandler,Hp as createRealtimeAppPreset,am as createS3Client,Jp as createServerlessLaravelPreset,Up as createServerlessNodePreset,Op as createStaticSitePreset,Gp as createTraditionalWebAppPreset,jp as createWordPressPreset,Ti as createZip,ug as crossRegionReferenceManager,pf as databaseUserManager,_c as defaultLocalConfig,Cr as deploymentCoexistenceError,xd as deriveManagementDashboardPort,gc as detectDeploymentTargets,lm as detectMisconfigurations,dc as detectServiceRegion,Pm as diffTemplates,Of as dlqMonitoringManager,Pf as dnssecManager,Jg as drManager,kf as emailAnalyticsManager,xf as emailTemplateManager,Cu as eventToRequest,Cc as extendPreset,$f as fifoQueueManager,Tm as findChangedFiles,_g as formatAccountStructure,Jm as formatBytes,kp as formatDiff,Xm as formatDuration,og as formatFlagSuggestions,cg as formatHistory,lg as formatHistoryStats,Ym as formatKeyValue,Qm as formatList,Km as formatProgressBar,au as formatRegion,wg as formatRegionList,Zm as formatSuggestion,Wm as formatTable,Gm as formatTree,Ud as fromEC2Metadata,Bd as fromECSMetadata,Ld as fromEnvironment,Md as fromSharedCredentials,Fd as fromWebIdentity,$l as functionFingerprint,pa as generateAppImageDockerfile,Wg as generateApprovalConfig,mu as generateBootstrap,zm as generateCleanupWorkflow,Hm as generateCostReportWorkflow,Dg as generateCrossAccountRoleCF,zg as generateDeploymentConfig,Ug as generateDeploymentPipeline,xg as generateDeploymentWorkflow,s as generateLogicalId,Vg as generateManualPipeline,Mg as generateMatrixWorkflow,Hg as generateMultiEnvConfig,Bg as generateMultiEnvPipeline,$g as generateMultiEnvWorkflow,Og as generatePRPreviewWorkflow,Gg as generateParallelConfig,Pu as generatePhpFpmConfig,Su as generatePhpLayerDockerfile,Fg as generatePreviewPipeline,Vm as generatePreviewWorkflow,l as generateResourceName,qg as generateScheduledConfig,jg as generateScheduledPipeline,Lg as generateScheduledWorkflow,Vd as getAccountId,fg as getAllRegions,vg as getClosestRegion,sg as getCommandUsage,tg as getContextualHelp,Do as getCredentials,_m as getDeploymentStrategy,xm as getDiffStats,Nm as getDiffSummary,Kd as getErrorDetails,ca as getLocalConfig,Um as getLocalCredentials,Mm as getLocalEndpoint,Bm as getLocalEnvVars,gm as getQuotaUsageSummary,Ng as getRecommendedStructure,vi as getRegion,Cg as getRegionStats,yg as getRegionsByCompliance,hg as getRegionsByLocation,Sg as getRegionsByPricingTier,Jd as getRequiredPermissions,yp as getSigningKeyCacheSize,Ip as getTimestamp,pg as globalResourceManager,Yg as guardDutyManager,Vt as hasManagementDashboardSite,ym as hashBuffer,Sm as hashDirectory,Dc as hashFile,bm as hashManifest,kc as hashString,Wf as healthCheckManager,yf as imageScanningManager,Ll as inspectInvocation,vu as installRecursionFetch,Bl as invocationContext,eg as isLikelyTypo,Lm as isLocalDevelopment,Ar as isManagementDashboardSiteName,Sp as isNodeCryptoAvailable,Co as isS3RestEndpoint,Vs as isStateDirConfigured,zs as isStatePath,bg as isValidRegion,bp as isWebCryptoAvailable,wf as lambdaConcurrencyManager,If as lambdaDLQManager,Cf as lambdaDestinationsManager,Tf as lambdaLayersManager,Af as lambdaVPCManager,Ef as lambdaVersionsManager,ya as laravelServerlessEnvDefaults,af as logsManager,wd as mailEnabled,Hs as mailFirewallPorts,pi as makeAWSRequest,gp as makeAWSRequestAsync,mp as makeAWSRequestOnce,wc as managementDashboardSiteName,nn as mergeInfrastructure,sf as metricsManager,lf as migrationManager,Ag as multiAccountManager,dg as multiRegionManager,Gf as networkSecurityManager,Ig as organizationManager,Sa as packagePhpApp,an as packageServerlessApp,aa as parallel,wm as parallelMap,Cm as parallelWithRetry,Ol as parseChain,fp as parseJSONResponse,Fs as parseXMLResponse,uf as performanceManager,_l as phpLayerBuildStage,yu as phpLayerPackages,Ei as phpRuntimeLayerAssets,jm as previewManager,qm as previewNotifications,Rm as processInChunks,nf as progressiveDeploymentManager,Ml as propagationHeaders,Mf as queueManagementManager,vm as quickHash,Ul as recursionBlockedResponse,mg as regionPairManager,df as replicaManager,Dm as requiresReplacement,Ff as resetRecursionRuntime,jf as resolveApp,C as resolveAppDatabase,U as resolveCloudProvider,sa as resolveCredentials,$d as resolveDashboardDomain,Od as resolveDashboardDomains,Np as resolveDeployBucketName,V as resolveDeploymentMode,Qs as resolveFailoverStatusCodes,mi as resolveMailService,Qp as resolveManagementDashboardSite,bi as resolveManagementDashboardSites,Ut as resolveOriginConnection,E as resolveProjectStackName,da as resolveQueueNames,zt as resolveQueues,bu as resolveRecursionConfig,jd as resolveRegion,Pe as resolveServerlessAppStackName,Js as resolveServerlessArtifactBucketName,Eo as resolveServerlessAssetBucketName,$o as resolveServerlessRuntime,Ks as resolveSiteBucketName,Gs as resolveSiteResourceName,Ws as resolveSiteStackName,A as resolveStatePath,Pp as resolveStorageBucketName,Ys as resolveStorageFailover,Kf as resourceManagementManager,Fl as responseToResult,Nf as route53ResolverManager,Rf as route53RoutingManager,gu as runBuildHooks,Lo as runPhpBuildHooks,Zs as s3RegionalDomain,Rp as sanitizeName,rg as searchCommands,gf as secretsManager,mf as secretsRotationManager,Zg as securityHubManager,hf as securityScanningManager,_f as senderReputationManager,Am as sequence,vf as serviceMeshManager,js as setStateDir,xo as sha256,Tu as sharedRecursionGuard,xl as sharedRuntimeLoop,oe as signRequest,uc as signRequestAsync,gg as stackDependencyManager,vo as stateDir,Ye as statePath,Hf as staticSiteManager,qf as storageAdvancedManager,na as storageFailoverReplicasFromTemplate,Uc as suggestCommand,ig as suggestFlags,pm as suggestIAMPolicy,fm as suggestQuotaIncrease,Eg as suggestRegionPairs,Tg as suggestRegions,cf as syntheticsManager,hm as templateCache,kg as validateAccountStructure,Om as validateAgainstSchema,ag as validateCommand,cm as validateConfiguration,dm as validateCredentials,fi as validateOriginGroups,Cp as validateResourceLimits,Ep as validateTemplate,wp as validateTemplateSize,im as withCDN,nm as withCache,rm as withDatabase,wu as withInvocation,em as withMonitoring,om as withQueue,tm as withSecurity,Im as withTimeout,of as xrayManager};
@@ -1 +0,0 @@
1
- import{w}from"./chunk-dyh0vndw.js";import"./chunk-mx9ppkmn.js";export{w as CloudFrontClient};
@@ -1,34 +0,0 @@
1
- import{u}from"./chunk-mx9ppkmn.js";import{g}from"./chunk-e55fdn0r.js";import{M}from"./chunk-9vmtm7nq.js";import{di}from"./chunk-2g2zrtjs.js";function S(e,t){let s=[`Action=${e}`,"Version=2010-05-08"];for(let[a,i]of Object.entries(t)){if(i===void 0||i===null)continue;if(Array.isArray(i))i.forEach((n,c)=>{if(typeof n==="object"&&n!==null)for(let[m,l]of Object.entries(n))s.push(`${a}.member.${c+1}.${m}=${encodeURIComponent(String(l))}`);else s.push(`${a}.member.${c+1}=${encodeURIComponent(String(n))}`)});else if(typeof i==="object"){for(let[n,c]of Object.entries(i))if(c!==void 0&&c!==null)s.push(`${a}.${n}=${encodeURIComponent(String(c))}`)}else s.push(`${a}=${encodeURIComponent(String(i))}`)}return s.join("&")}function r(e,t){let s=new RegExp(`<${t}>([^<]*)</${t}>`),a=e.match(s);return a?a[1]:void 0}function o(e,t,s){let a=new RegExp(`<${t}>([\\s\\S]*?)</${t}>`),i=e.match(a);if(!i)return[];let n=[],c=new RegExp(`<${s}>([\\s\\S]*?)</${s}>`,"g"),m;while((m=c.exec(i[1]))!==null)n.push(m[1]);return n}class Y{client;region;constructor(e="us-east-1",t){this.client=new u(void 0,{profile:t}),this.region=e}async request(e,t={}){let s=S(e,t);return await this.client.request({service:"iam",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s})}async createUser(e){let t=await this.request("CreateUser",e);return this.parseUser(t)}async getUser(e={}){let t=await this.request("GetUser",e);return this.parseUser(t)}async listUsers(e={}){let t=await this.request("ListUsers",e),s=this.parseUsers(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{Users:s,IsTruncated:a,Marker:i}}async updateUser(e){await this.request("UpdateUser",e)}async deleteUser(e){await this.request("DeleteUser",e)}parseUser(e){return{UserName:r(e,"UserName")||"",UserId:r(e,"UserId")||"",Arn:r(e,"Arn")||"",Path:r(e,"Path"),CreateDate:r(e,"CreateDate"),PasswordLastUsed:r(e,"PasswordLastUsed")}}parseUsers(e){return o(e,"Users","member").map((s)=>({UserName:r(s,"UserName")||"",UserId:r(s,"UserId")||"",Arn:r(s,"Arn")||"",Path:r(s,"Path"),CreateDate:r(s,"CreateDate"),PasswordLastUsed:r(s,"PasswordLastUsed")}))}async createGroup(e){let t=await this.request("CreateGroup",e);return this.parseGroup(t)}async getGroup(e){let t=await this.request("GetGroup",e),s=this.parseGroup(t),a=this.parseUsers(t),i=r(t,"IsTruncated")==="true",n=r(t,"Marker");return{Group:s,Users:a,IsTruncated:i,Marker:n}}async listGroups(e={}){let t=await this.request("ListGroups",e),s=this.parseGroups(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{Groups:s,IsTruncated:a,Marker:i}}async updateGroup(e){await this.request("UpdateGroup",e)}async deleteGroup(e){await this.request("DeleteGroup",e)}async addUserToGroup(e){await this.request("AddUserToGroup",e)}async removeUserFromGroup(e){await this.request("RemoveUserFromGroup",e)}async listGroupsForUser(e){let t=await this.request("ListGroupsForUser",e),s=this.parseGroups(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{Groups:s,IsTruncated:a,Marker:i}}parseGroup(e){return{GroupName:r(e,"GroupName")||"",GroupId:r(e,"GroupId")||"",Arn:r(e,"Arn")||"",Path:r(e,"Path"),CreateDate:r(e,"CreateDate")}}parseGroups(e){return o(e,"Groups","member").map((s)=>({GroupName:r(s,"GroupName")||"",GroupId:r(s,"GroupId")||"",Arn:r(s,"Arn")||"",Path:r(s,"Path"),CreateDate:r(s,"CreateDate")}))}async createRole(e){let t=await this.request("CreateRole",e);return this.parseRole(t)}async getRole(e){let t=await this.request("GetRole",e);return this.parseRole(t)}async listRoles(e={}){let t=await this.request("ListRoles",e),s=this.parseRoles(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{Roles:s,IsTruncated:a,Marker:i}}async updateRole(e){await this.request("UpdateRole",e)}async updateRoleDescription(e){let t=await this.request("UpdateRoleDescription",e);return this.parseRole(t)}async updateAssumeRolePolicy(e){await this.request("UpdateAssumeRolePolicy",e)}async deleteRole(e){await this.request("DeleteRole",e)}async tagRole(e){await this.request("TagRole",e)}async untagRole(e){await this.request("UntagRole",e)}async listRoleTags(e){let t=await this.request("ListRoleTags",e),s=this.parseTags(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{Tags:s,IsTruncated:a,Marker:i}}parseRole(e){return{RoleName:r(e,"RoleName")||"",RoleId:r(e,"RoleId")||"",Arn:r(e,"Arn")||"",Path:r(e,"Path"),CreateDate:r(e,"CreateDate"),AssumeRolePolicyDocument:r(e,"AssumeRolePolicyDocument"),Description:r(e,"Description"),MaxSessionDuration:r(e,"MaxSessionDuration")?Number.parseInt(r(e,"MaxSessionDuration"),10):void 0}}parseRoles(e){return o(e,"Roles","member").map((s)=>({RoleName:r(s,"RoleName")||"",RoleId:r(s,"RoleId")||"",Arn:r(s,"Arn")||"",Path:r(s,"Path"),CreateDate:r(s,"CreateDate"),AssumeRolePolicyDocument:r(s,"AssumeRolePolicyDocument"),Description:r(s,"Description"),MaxSessionDuration:r(s,"MaxSessionDuration")?Number.parseInt(r(s,"MaxSessionDuration"),10):void 0}))}parseTags(e){return o(e,"Tags","member").map((s)=>({Key:r(s,"Key")||"",Value:r(s,"Value")||""}))}async createPolicy(e){let t=await this.request("CreatePolicy",e);return this.parsePolicy(t)}async getPolicy(e){let t=await this.request("GetPolicy",e);return this.parsePolicy(t)}async getPolicyVersion(e){let t=await this.request("GetPolicyVersion",e);return{VersionId:r(t,"VersionId")||"",IsDefaultVersion:r(t,"IsDefaultVersion")==="true",CreateDate:r(t,"CreateDate"),Document:r(t,"Document")}}async listPolicies(e={}){let t=await this.request("ListPolicies",e),s=this.parsePolicies(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{Policies:s,IsTruncated:a,Marker:i}}async listPolicyVersions(e){let t=await this.request("ListPolicyVersions",e),s=this.parsePolicyVersions(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{Versions:s,IsTruncated:a,Marker:i}}async createPolicyVersion(e){let t=await this.request("CreatePolicyVersion",e);return{VersionId:r(t,"VersionId")||"",IsDefaultVersion:r(t,"IsDefaultVersion")==="true",CreateDate:r(t,"CreateDate")}}async deletePolicyVersion(e){await this.request("DeletePolicyVersion",e)}async setDefaultPolicyVersion(e){await this.request("SetDefaultPolicyVersion",e)}async deletePolicy(e){await this.request("DeletePolicy",e)}async attachUserPolicy(e){await this.request("AttachUserPolicy",e)}async detachUserPolicy(e){await this.request("DetachUserPolicy",e)}async attachGroupPolicy(e){await this.request("AttachGroupPolicy",e)}async detachGroupPolicy(e){await this.request("DetachGroupPolicy",e)}async attachRolePolicy(e){await this.request("AttachRolePolicy",e)}async detachRolePolicy(e){await this.request("DetachRolePolicy",e)}async listAttachedUserPolicies(e){let t=await this.request("ListAttachedUserPolicies",e),s=this.parseAttachedPolicies(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{AttachedPolicies:s,IsTruncated:a,Marker:i}}async listAttachedGroupPolicies(e){let t=await this.request("ListAttachedGroupPolicies",e),s=this.parseAttachedPolicies(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{AttachedPolicies:s,IsTruncated:a,Marker:i}}async listAttachedRolePolicies(e){let t=await this.request("ListAttachedRolePolicies",e),s=this.parseAttachedPolicies(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{AttachedPolicies:s,IsTruncated:a,Marker:i}}parsePolicy(e){return{PolicyName:r(e,"PolicyName")||"",PolicyId:r(e,"PolicyId")||"",Arn:r(e,"Arn")||"",Path:r(e,"Path"),DefaultVersionId:r(e,"DefaultVersionId"),AttachmentCount:r(e,"AttachmentCount")?Number.parseInt(r(e,"AttachmentCount"),10):void 0,PermissionsBoundaryUsageCount:r(e,"PermissionsBoundaryUsageCount")?Number.parseInt(r(e,"PermissionsBoundaryUsageCount"),10):void 0,IsAttachable:r(e,"IsAttachable")==="true",Description:r(e,"Description"),CreateDate:r(e,"CreateDate"),UpdateDate:r(e,"UpdateDate")}}parsePolicies(e){return o(e,"Policies","member").map((s)=>({PolicyName:r(s,"PolicyName")||"",PolicyId:r(s,"PolicyId")||"",Arn:r(s,"Arn")||"",Path:r(s,"Path"),DefaultVersionId:r(s,"DefaultVersionId"),AttachmentCount:r(s,"AttachmentCount")?Number.parseInt(r(s,"AttachmentCount"),10):void 0,PermissionsBoundaryUsageCount:r(s,"PermissionsBoundaryUsageCount")?Number.parseInt(r(s,"PermissionsBoundaryUsageCount"),10):void 0,IsAttachable:r(s,"IsAttachable")==="true",Description:r(s,"Description"),CreateDate:r(s,"CreateDate"),UpdateDate:r(s,"UpdateDate")}))}parsePolicyVersions(e){return o(e,"Versions","member").map((s)=>({VersionId:r(s,"VersionId")||"",IsDefaultVersion:r(s,"IsDefaultVersion")==="true",CreateDate:r(s,"CreateDate")}))}parseAttachedPolicies(e){return o(e,"AttachedPolicies","member").map((s)=>({PolicyName:r(s,"PolicyName")||"",PolicyArn:r(s,"PolicyArn")||""}))}async putUserPolicy(e){await this.request("PutUserPolicy",e)}async getUserPolicy(e){let t=await this.request("GetUserPolicy",e);return{UserName:r(t,"UserName")||"",PolicyName:r(t,"PolicyName")||"",PolicyDocument:decodeURIComponent(r(t,"PolicyDocument")||"")}}async deleteUserPolicy(e){await this.request("DeleteUserPolicy",e)}async listUserPolicies(e){let t=await this.request("ListUserPolicies",e),s=o(t,"PolicyNames","member"),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{PolicyNames:s,IsTruncated:a,Marker:i}}async putGroupPolicy(e){await this.request("PutGroupPolicy",e)}async getGroupPolicy(e){let t=await this.request("GetGroupPolicy",e);return{GroupName:r(t,"GroupName")||"",PolicyName:r(t,"PolicyName")||"",PolicyDocument:decodeURIComponent(r(t,"PolicyDocument")||"")}}async deleteGroupPolicy(e){await this.request("DeleteGroupPolicy",e)}async listGroupPolicies(e){let t=await this.request("ListGroupPolicies",e),s=o(t,"PolicyNames","member"),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{PolicyNames:s,IsTruncated:a,Marker:i}}async putRolePolicy(e){await this.request("PutRolePolicy",e)}async getRolePolicy(e){let t=await this.request("GetRolePolicy",e);return{RoleName:r(t,"RoleName")||"",PolicyName:r(t,"PolicyName")||"",PolicyDocument:decodeURIComponent(r(t,"PolicyDocument")||"")}}async deleteRolePolicy(e){await this.request("DeleteRolePolicy",e)}async listRolePolicies(e){let t=await this.request("ListRolePolicies",e),s=o(t,"PolicyNames","member"),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{PolicyNames:s,IsTruncated:a,Marker:i}}async createAccessKey(e={}){let t=await this.request("CreateAccessKey",e);if(typeof t==="object"){let s=t?.CreateAccessKeyResult?.AccessKey||t?.AccessKey;if(s)return{AccessKey:{UserName:s.UserName||"",AccessKeyId:s.AccessKeyId||"",Status:s.Status||"Active",SecretAccessKey:s.SecretAccessKey||"",CreateDate:s.CreateDate}}}return{AccessKey:{UserName:r(t,"UserName")||"",AccessKeyId:r(t,"AccessKeyId")||"",Status:r(t,"Status")||"Active",SecretAccessKey:r(t,"SecretAccessKey")||"",CreateDate:r(t,"CreateDate")}}}async listAccessKeys(e={}){let t=await this.request("ListAccessKeys",e),s=this.parseAccessKeys(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{AccessKeyMetadata:s,IsTruncated:a,Marker:i}}async updateAccessKey(e){await this.request("UpdateAccessKey",e)}async deleteAccessKey(e){await this.request("DeleteAccessKey",e)}async getAccessKeyLastUsed(e){let t=await this.request("GetAccessKeyLastUsed",e);return{UserName:r(t,"UserName")||"",AccessKeyLastUsed:{LastUsedDate:r(t,"LastUsedDate"),ServiceName:r(t,"ServiceName"),Region:r(t,"Region")}}}parseAccessKeys(e){return o(e,"AccessKeyMetadata","member").map((s)=>({UserName:r(s,"UserName"),AccessKeyId:r(s,"AccessKeyId")||"",Status:r(s,"Status")||"Active",CreateDate:r(s,"CreateDate")}))}async createInstanceProfile(e){let t=await this.request("CreateInstanceProfile",e);return this.parseInstanceProfile(t)}async getInstanceProfile(e){let t=await this.request("GetInstanceProfile",e);return this.parseInstanceProfile(t)}async listInstanceProfiles(e={}){let t=await this.request("ListInstanceProfiles",e),s=this.parseInstanceProfiles(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{InstanceProfiles:s,IsTruncated:a,Marker:i}}async listInstanceProfilesForRole(e){let t=await this.request("ListInstanceProfilesForRole",e),s=this.parseInstanceProfiles(t),a=r(t,"IsTruncated")==="true",i=r(t,"Marker");return{InstanceProfiles:s,IsTruncated:a,Marker:i}}async addRoleToInstanceProfile(e){await this.request("AddRoleToInstanceProfile",e)}async removeRoleFromInstanceProfile(e){await this.request("RemoveRoleFromInstanceProfile",e)}async deleteInstanceProfile(e){await this.request("DeleteInstanceProfile",e)}parseInstanceProfile(e){return{InstanceProfileName:r(e,"InstanceProfileName")||"",InstanceProfileId:r(e,"InstanceProfileId")||"",Arn:r(e,"Arn")||"",Path:r(e,"Path"),CreateDate:r(e,"CreateDate")}}parseInstanceProfiles(e){return o(e,"InstanceProfiles","member").map((s)=>({InstanceProfileName:r(s,"InstanceProfileName")||"",InstanceProfileId:r(s,"InstanceProfileId")||"",Arn:r(s,"Arn")||"",Path:r(s,"Path"),CreateDate:r(s,"CreateDate")}))}async getAccountPasswordPolicy(){let e=await this.request("GetAccountPasswordPolicy");return{MinimumPasswordLength:r(e,"MinimumPasswordLength")?Number.parseInt(r(e,"MinimumPasswordLength"),10):void 0,RequireSymbols:r(e,"RequireSymbols")==="true",RequireNumbers:r(e,"RequireNumbers")==="true",RequireUppercaseCharacters:r(e,"RequireUppercaseCharacters")==="true",RequireLowercaseCharacters:r(e,"RequireLowercaseCharacters")==="true",AllowUsersToChangePassword:r(e,"AllowUsersToChangePassword")==="true",ExpirePasswords:r(e,"ExpirePasswords")==="true",MaxPasswordAge:r(e,"MaxPasswordAge")?Number.parseInt(r(e,"MaxPasswordAge"),10):void 0,PasswordReusePrevention:r(e,"PasswordReusePrevention")?Number.parseInt(r(e,"PasswordReusePrevention"),10):void 0,HardExpiry:r(e,"HardExpiry")==="true"}}async updateAccountPasswordPolicy(e){await this.request("UpdateAccountPasswordPolicy",e)}async deleteAccountPasswordPolicy(){await this.request("DeleteAccountPasswordPolicy")}async getAccountSummary(){let e=await this.request("GetAccountSummary"),t={},s=o(e,"SummaryMap","entry");for(let a of s){let i=r(a,"key"),n=r(a,"value");if(i&&n)t[i]=Number.parseInt(n,10)}return t}async listAccountAliases(){let e=await this.request("ListAccountAliases"),t=o(e,"AccountAliases","member"),s=r(e,"IsTruncated")==="true",a=r(e,"Marker");return{AccountAliases:t,IsTruncated:s,Marker:a}}async createAccountAlias(e){await this.request("CreateAccountAlias",e)}async deleteAccountAlias(e){await this.request("DeleteAccountAlias",e)}async simulatePrincipalPolicy(e){let t=await this.request("SimulatePrincipalPolicy",e);return this.parseSimulationResults(t)}parseSimulationResults(e){let s=o(e,"EvaluationResults","member").map((n)=>{let m=o(n,"MatchedStatements","member").map((l)=>({SourcePolicyId:r(l,"SourcePolicyId"),SourcePolicyType:r(l,"SourcePolicyType")}));return{EvalActionName:r(n,"EvalActionName")||"",EvalResourceName:r(n,"EvalResourceName"),EvalDecision:r(n,"EvalDecision")||"",MatchedStatements:m.length>0?m:void 0}}),a=r(e,"IsTruncated")==="true",i=r(e,"Marker");return{EvaluationResults:s,IsTruncated:a,Marker:i}}}function p(e,t){return(e?.[`${t}Response`]??e)?.[`${t}Result`]}class ye{client;region;constructor(e="us-east-1",t){this.region=e,this.client=new u(t)}async createEmailIdentity(e){return await this.client.request({service:"email",region:this.region,method:"POST",path:"/v2/email/identities",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async getEmailIdentity(e){let t=await this.client.request({service:"email",region:this.region,method:"GET",path:`/v2/email/identities/${encodeURIComponent(e)}`,headers:{"Content-Type":"application/json"}});return{IdentityType:t.IdentityType,IdentityName:e,SendingEnabled:t.VerifiedForSendingStatus,VerificationStatus:t.VerificationStatus,DkimAttributes:t.DkimAttributes,MailFromAttributes:t.MailFromAttributes}}async putEmailIdentityMailFromAttributes(e,t){await this.client.request({service:"email",region:this.region,method:"PUT",path:`/v2/email/identities/${encodeURIComponent(e)}/mail-from`,headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}async listEmailIdentities(e){let t="/v2/email/identities",s=[];if(e?.PageSize)s.push(`PageSize=${e.PageSize}`);if(e?.NextToken)s.push(`NextToken=${encodeURIComponent(e.NextToken)}`);if(s.length>0)t+=`?${s.join("&")}`;let a=await this.client.request({service:"email",region:this.region,method:"GET",path:t,headers:{"Content-Type":"application/json"}});return{EmailIdentities:a.EmailIdentities,NextToken:a.NextToken}}async deleteEmailIdentity(e){await this.client.request({service:"email",region:this.region,method:"DELETE",path:`/v2/email/identities/${encodeURIComponent(e)}`,headers:{"Content-Type":"application/json"}})}async putEmailIdentityDkimAttributes(e){await this.client.request({service:"email",region:this.region,method:"PUT",path:`/v2/email/identities/${encodeURIComponent(e.EmailIdentity)}/dkim`,headers:{"Content-Type":"application/json"},body:JSON.stringify({SigningEnabled:e.SigningEnabled})})}async sendEmail(e){return{MessageId:(await this.client.request({service:"email",region:this.region,method:"POST",path:"/v2/email/outbound-emails",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).MessageId}}async sendBulkEmail(e){return{BulkEmailEntryResults:(await this.client.request({service:"email",region:this.region,method:"POST",path:"/v2/email/outbound-bulk-emails",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).BulkEmailEntryResults}}async createEmailTemplate(e){await this.client.request({service:"email",region:this.region,method:"POST",path:"/v2/email/templates",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async getEmailTemplate(e){return await this.client.request({service:"email",region:this.region,method:"GET",path:`/v2/email/templates/${encodeURIComponent(e)}`,headers:{"Content-Type":"application/json"}})}async deleteEmailTemplate(e){await this.client.request({service:"email",region:this.region,method:"DELETE",path:`/v2/email/templates/${encodeURIComponent(e)}`,headers:{"Content-Type":"application/json"}})}async listEmailTemplates(e){let t="/v2/email/templates",s=[];if(e?.PageSize)s.push(`PageSize=${e.PageSize}`);if(e?.NextToken)s.push(`NextToken=${encodeURIComponent(e.NextToken)}`);if(s.length>0)t+=`?${s.join("&")}`;return await this.client.request({service:"email",region:this.region,method:"GET",path:t,headers:{"Content-Type":"application/json"}})}async getSendStatistics(){let e=await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"Action=GetSendStatistics&Version=2010-12-01"}),t=p(e,"GetSendStatistics")?.SendDataPoints?.member;return{SendDataPoints:t==null?[]:Array.isArray(t)?t:[t]}}async getSendQuota(){let e=await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"Action=GetSendQuota&Version=2010-12-01"}),t=p(e,"GetSendQuota"),s=(a)=>a==null||a===""?void 0:Number(a);return{Max24HourSend:s(t?.Max24HourSend),MaxSendRate:s(t?.MaxSendRate),SentLast24Hours:s(t?.SentLast24Hours)}}async verifyDomain(e){let t=await this.createEmailIdentity({EmailIdentity:e});return{dkimTokens:t.DkimAttributes?.Tokens,verificationStatus:t.DkimAttributes?.Status}}async sendSimpleEmail(e){let t=Array.isArray(e.to)?e.to:[e.to],s=e.replyTo?Array.isArray(e.replyTo)?e.replyTo:[e.replyTo]:void 0,a={};if(e.text)a.Text={Data:e.text};if(e.html)a.Html={Data:e.html};return this.sendEmail({FromEmailAddress:e.from,Destination:{ToAddresses:t},Content:{Simple:{Subject:{Data:e.subject},Body:a}},ReplyToAddresses:s})}async sendTemplatedEmail(e){let t=Array.isArray(e.to)?e.to:[e.to],s=e.replyTo?Array.isArray(e.replyTo)?e.replyTo:[e.replyTo]:void 0;return this.sendEmail({FromEmailAddress:e.from,Destination:{ToAddresses:t},Content:{Template:{TemplateName:e.templateName,TemplateData:JSON.stringify(e.templateData)}},ReplyToAddresses:s})}async getDkimRecords(e){let t=await this.getEmailIdentity(e);if(!t.DkimAttributes?.Tokens)return[];return t.DkimAttributes.Tokens.map((s)=>({name:`${s}._domainkey.${e}`,type:"CNAME",value:`${s}.dkim.amazonses.com`}))}async isDomainVerified(e){try{let t=await this.getEmailIdentity(e);return t.VerificationStatus==="SUCCESS"&&t.SendingEnabled===!0}catch{return!1}}async waitForDomainVerification(e,t=60,s=30000){for(let a=0;a<t;a++){if(await this.isDomainVerified(e))return!0;await new Promise((n)=>setTimeout(n,s))}return!1}buildFormBody(e){return Object.entries(e).filter(([,s])=>s!==void 0).map(([s,a])=>`${encodeURIComponent(s)}=${encodeURIComponent(a)}`).join("&")}async createReceiptRuleSet(e){await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:this.buildFormBody({Action:"CreateReceiptRuleSet",Version:"2010-12-01",RuleSetName:e})})}async deleteReceiptRuleSet(e){await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:this.buildFormBody({Action:"DeleteReceiptRuleSet",Version:"2010-12-01",RuleSetName:e})})}async setActiveReceiptRuleSet(e){await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:this.buildFormBody({Action:"SetActiveReceiptRuleSet",Version:"2010-12-01",RuleSetName:e})})}async listReceiptRuleSets(e){let t={Action:"ListReceiptRuleSets",Version:"2010-12-01"};if(e)t.NextToken=e;let s=await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:this.buildFormBody(t)}),a=s?.ListReceiptRuleSetsResponse?.ListReceiptRuleSetsResult||s?.ListReceiptRuleSetsResult,i=a?.RuleSets?.member;return{RuleSets:Array.isArray(i)?i:i?[i]:[],NextToken:a?.NextToken}}async describeReceiptRuleSet(e){let t=await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:this.buildFormBody({Action:"DescribeReceiptRuleSet",Version:"2010-12-01",RuleSetName:e})}),s=t?.DescribeReceiptRuleSetResponse?.DescribeReceiptRuleSetResult||t?.DescribeReceiptRuleSetResult,a=s?.Rules?.member;return{Metadata:s?.Metadata,Rules:Array.isArray(a)?a:a?[a]:[]}}async createReceiptRule(e){let t={Action:"CreateReceiptRule",Version:"2010-12-01",RuleSetName:e.RuleSetName,"Rule.Name":e.Rule.Name,"Rule.Enabled":e.Rule.Enabled!==!1?"true":"false"};if(e.Rule.TlsPolicy)t["Rule.TlsPolicy"]=e.Rule.TlsPolicy;if(e.Rule.ScanEnabled!==void 0)t["Rule.ScanEnabled"]=e.Rule.ScanEnabled?"true":"false";if(e.After)t.After=e.After;if(e.Rule.Recipients)e.Rule.Recipients.forEach((s,a)=>{t[`Rule.Recipients.member.${a+1}`]=s});e.Rule.Actions.forEach((s,a)=>{let i=a+1;if(s.S3Action){if(t[`Rule.Actions.member.${i}.S3Action.BucketName`]=s.S3Action.BucketName,s.S3Action.ObjectKeyPrefix)t[`Rule.Actions.member.${i}.S3Action.ObjectKeyPrefix`]=s.S3Action.ObjectKeyPrefix;if(s.S3Action.KmsKeyArn)t[`Rule.Actions.member.${i}.S3Action.KmsKeyArn`]=s.S3Action.KmsKeyArn}if(s.LambdaAction)t[`Rule.Actions.member.${i}.LambdaAction.FunctionArn`]=s.LambdaAction.FunctionArn,t[`Rule.Actions.member.${i}.LambdaAction.InvocationType`]=s.LambdaAction.InvocationType||"Event";if(s.SNSAction){if(t[`Rule.Actions.member.${i}.SNSAction.TopicArn`]=s.SNSAction.TopicArn,s.SNSAction.Encoding)t[`Rule.Actions.member.${i}.SNSAction.Encoding`]=s.SNSAction.Encoding}if(s.StopAction){if(t[`Rule.Actions.member.${i}.StopAction.Scope`]=s.StopAction.Scope,s.StopAction.TopicArn)t[`Rule.Actions.member.${i}.StopAction.TopicArn`]=s.StopAction.TopicArn}}),await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:this.buildFormBody(t)})}async deleteReceiptRule(e,t){await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:this.buildFormBody({Action:"DeleteReceiptRule",Version:"2010-12-01",RuleSetName:e,RuleName:t})})}async receiptRuleSetExists(e){try{return await this.describeReceiptRuleSet(e),!0}catch(t){if(t.code==="RuleSetDoesNotExist"||t.statusCode===400)return!1;throw t}}async getActiveReceiptRuleSet(){let e=await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:this.buildFormBody({Action:"DescribeActiveReceiptRuleSet",Version:"2010-12-01"})}),t=e?.DescribeActiveReceiptRuleSetResponse?.DescribeActiveReceiptRuleSetResult||e?.DescribeActiveReceiptRuleSetResult;if(!t?.Metadata)return null;let s=t?.Rules?.member;return{Metadata:t?.Metadata,Rules:Array.isArray(s)?s:s?[s]:[]}}async updateReceiptRule(e){let t={Action:"UpdateReceiptRule",Version:"2010-12-01",RuleSetName:e.RuleSetName,"Rule.Name":e.Rule.Name};if(e.Rule.Enabled!==void 0)t["Rule.Enabled"]=e.Rule.Enabled?"true":"false";if(e.Rule.TlsPolicy)t["Rule.TlsPolicy"]=e.Rule.TlsPolicy;if(e.Rule.ScanEnabled!==void 0)t["Rule.ScanEnabled"]=e.Rule.ScanEnabled?"true":"false";if(e.Rule.Recipients)e.Rule.Recipients.forEach((s,a)=>{t[`Rule.Recipients.member.${a+1}`]=s});e.Rule.Actions.forEach((s,a)=>{let i=a+1;if(s.S3Action){if(t[`Rule.Actions.member.${i}.S3Action.BucketName`]=s.S3Action.BucketName,s.S3Action.ObjectKeyPrefix)t[`Rule.Actions.member.${i}.S3Action.ObjectKeyPrefix`]=s.S3Action.ObjectKeyPrefix;if(s.S3Action.KmsKeyArn)t[`Rule.Actions.member.${i}.S3Action.KmsKeyArn`]=s.S3Action.KmsKeyArn}if(s.LambdaAction)t[`Rule.Actions.member.${i}.LambdaAction.FunctionArn`]=s.LambdaAction.FunctionArn,t[`Rule.Actions.member.${i}.LambdaAction.InvocationType`]=s.LambdaAction.InvocationType||"Event";if(s.SNSAction){if(t[`Rule.Actions.member.${i}.SNSAction.TopicArn`]=s.SNSAction.TopicArn,s.SNSAction.Encoding)t[`Rule.Actions.member.${i}.SNSAction.Encoding`]=s.SNSAction.Encoding}if(s.StopAction){if(t[`Rule.Actions.member.${i}.StopAction.Scope`]=s.StopAction.Scope,s.StopAction.TopicArn)t[`Rule.Actions.member.${i}.StopAction.TopicArn`]=s.StopAction.TopicArn}}),await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:this.buildFormBody(t)})}async sendRawEmail(e){let t=Buffer.from(e.rawMessage).toString("base64"),s={Action:"SendRawEmail",Version:"2010-12-01",Source:e.source,"RawMessage.Data":t};e.destinations.forEach((n,c)=>{s[`Destinations.member.${c+1}`]=n});let a=await this.client.request({service:"ses",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:this.buildFormBody(s)});return{MessageId:(a?.SendRawEmailResponse?.SendRawEmailResult||a?.SendRawEmailResult)?.MessageId}}async getSuppressedDestination(e){try{return(await this.client.request({service:"ses",region:this.region,method:"GET",path:`/v2/email/suppression/addresses/${encodeURIComponent(e)}`}))?.SuppressedDestination||null}catch(t){if(t.message?.includes("404")||t.message?.includes("NotFoundException"))return null;throw t}}async deleteSuppressedDestination(e){await this.client.request({service:"ses",region:this.region,method:"DELETE",path:`/v2/email/suppression/addresses/${encodeURIComponent(e)}`})}}class ac{ses;s3;iam;route53;region;domain;defaultFrom;constructor(e={}){this.region=e.region||"us-east-1",this.domain=e.domain,this.defaultFrom=e.defaultFrom,this.ses=new ye(this.region),this.s3=new g(this.region),this.iam=new Y(this.region),this.route53=new M(this.region)}async send(e){let t=e.from||this.defaultFrom;if(!t)throw Error("From address is required. Set defaultFrom in constructor or provide from in options.");let s=e.fromName?`${e.fromName} <${t}>`:t,a=Array.isArray(e.to)?e.to:[e.to];if(!e.attachments||e.attachments.length===0)return{messageId:(await this.ses.sendSimpleEmail({from:s,to:a,subject:e.subject,text:e.text,html:e.html,replyTo:e.replyTo})).MessageId||""};let i=this.buildRawEmail(e,s,a);return{messageId:(await this.ses.sendEmail({FromEmailAddress:s,Destination:{ToAddresses:a,CcAddresses:e.cc?Array.isArray(e.cc)?e.cc:[e.cc]:void 0,BccAddresses:e.bcc?Array.isArray(e.bcc)?e.bcc:[e.bcc]:void 0},Content:{Raw:{Data:Buffer.from(i).toString("base64")}}})).MessageId||""}}async sendTemplate(e){let t=e.from||this.defaultFrom;if(!t)throw Error("From address is required");let s=e.fromName?`${e.fromName} <${t}>`:t;return{messageId:(await this.ses.sendTemplatedEmail({from:s,to:e.to,templateName:e.templateName,templateData:e.templateData,replyTo:e.replyTo})).MessageId||""}}async sendBulk(e){let t=e.from||this.defaultFrom;if(!t)throw Error("From address is required");let s=e.recipients.map((i)=>({Destination:{ToAddresses:Array.isArray(i.to)?i.to:[i.to]},ReplacementEmailContent:i.templateData?{ReplacementTemplate:{ReplacementTemplateData:JSON.stringify(i.templateData)}}:void 0}));return{results:(await this.ses.sendBulkEmail({FromEmailAddress:t,BulkEmailEntries:s,DefaultContent:{Template:{TemplateName:e.templateName,TemplateData:JSON.stringify(e.defaultTemplateData)}}})).BulkEmailEntryResults?.map((i)=>({status:i.Status||"UNKNOWN",messageId:i.MessageId,error:i.Error}))||[]}}async setupDomain(e){let t;try{t=await this.ses.getEmailIdentity(e)}catch{let a=await this.ses.createEmailIdentity({EmailIdentity:e});t={VerificationStatus:a.DkimAttributes?.Status,DkimAttributes:a.DkimAttributes,SendingEnabled:a.VerifiedForSendingStatus}}try{await this.ses.putEmailIdentityDkimAttributes({EmailIdentity:e,SigningEnabled:!0})}catch{}try{await this.ses.putEmailIdentityMailFromAttributes(e,{MailFromDomain:`mail.${e}`,BehaviorOnMxFailure:"USE_DEFAULT_VALUE"})}catch{}let s=await this.ses.getDkimRecords(e);return{domainVerified:t.SendingEnabled===!0,dkimStatus:t.DkimAttributes?.Status||"UNKNOWN",dkimTokens:t.DkimAttributes?.Tokens,mailFromStatus:t.MailFromAttributes?.MailFromDomainStatus}}async getDnsRecords(e){let t=[],s=await this.ses.getDkimRecords(e);for(let a of s)t.push({type:a.type,name:a.name,value:a.value,ttl:1800});return t.push({type:"MX",name:e,value:`inbound-smtp.${this.region}.amazonaws.com`,priority:10,ttl:3600}),t.push({type:"MX",name:`mail.${e}`,value:`feedback-smtp.${this.region}.amazonses.com`,priority:10,ttl:3600}),t.push({type:"TXT",name:`mail.${e}`,value:"v=spf1 include:amazonses.com ~all",ttl:3600}),t.push({type:"TXT",name:`_dmarc.${e}`,value:`v=DMARC1;p=quarantine;pct=25;rua=mailto:dmarcreports@${e}`,ttl:3600}),t}async isDomainReady(e){try{let t=await this.ses.getEmailIdentity(e);return t.SendingEnabled===!0&&t.DkimAttributes?.Status==="SUCCESS"}catch{return!1}}async setupReceiving(e){let t={Version:"2012-10-17",Statement:[{Sid:"AllowSESPuts",Effect:"Allow",Principal:{Service:"ses.amazonaws.com"},Action:"s3:PutObject",Resource:`arn:aws:s3:::${e.bucketName}/*`,Condition:{StringEquals:{"AWS:SourceAccount":e.accountId}}}]};await this.s3.putBucketPolicy(e.bucketName,t);try{await this.ses.createReceiptRuleSet(e.ruleSetName)}catch(a){if(!a.message?.includes("already exists")&&a.code!=="AlreadyExists")throw a}let s=[{S3Action:{BucketName:e.bucketName,ObjectKeyPrefix:e.prefix||"inbox/"}}];if(e.lambdaArn)s.push({LambdaAction:{FunctionArn:e.lambdaArn,InvocationType:"Event"}});try{await this.ses.createReceiptRule({RuleSetName:e.ruleSetName,Rule:{Name:e.ruleName,Enabled:!0,TlsPolicy:"Optional",Recipients:e.recipients||[e.domain],ScanEnabled:e.scanEnabled!==!1,Actions:s}})}catch(a){if(a.message?.includes("already exists"))await this.ses.deleteReceiptRule(e.ruleSetName,e.ruleName),await this.ses.createReceiptRule({RuleSetName:e.ruleSetName,Rule:{Name:e.ruleName,Enabled:!0,TlsPolicy:"Optional",Recipients:e.recipients||[e.domain],ScanEnabled:e.scanEnabled!==!1,Actions:s}});else throw a}await this.ses.setActiveReceiptRuleSet(e.ruleSetName)}async getIncomingEmails(e){return(await this.s3.list({bucket:e.bucket,prefix:e.prefix||"incoming/",maxKeys:e.maxResults||100})).map((s)=>({key:s.Key||"",lastModified:s.LastModified||"",size:s.Size||0}))}async readEmail(e){return await this.s3.getObject(e.bucket,e.key)}async createSmtpCredentials(e){let t=`ses-smtp-${e.username.replace(/[^a-zA-Z0-9]/g,"-")}`,{AWSClient:s}=await import("./chunk-nqb1faqj.js"),a=new s,i=(d,P)=>{let A={Action:d,Version:"2010-05-08",...P};return Object.entries(A).map(([h,R])=>`${encodeURIComponent(h)}=${encodeURIComponent(R)}`).join("&")};try{await a.request({service:"iam",region:"us-east-1",method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i("CreateUser",{UserName:t})})}catch(d){if(!d.message?.includes("EntityAlreadyExists"))throw d}let n={Version:"2012-10-17",Statement:[{Effect:"Allow",Action:"ses:SendRawEmail",Resource:"*",Condition:{StringLike:{"ses:FromAddress":`*@${e.domain}`}}}]},c=`ses-smtp-policy-${e.domain.replace(/\./g,"-")}`;try{await a.request({service:"iam",region:"us-east-1",method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i("PutUserPolicy",{UserName:t,PolicyName:c,PolicyDocument:JSON.stringify(n)})})}catch{}let l=(await a.request({service:"iam",region:"us-east-1",method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i("CreateAccessKey",{UserName:t})}))?.CreateAccessKeyResult?.AccessKey;if(!l?.AccessKeyId||!l?.SecretAccessKey)throw Error("Failed to create access key");let y=this.deriveSmtpPassword(l.SecretAccessKey);return{username:l.AccessKeyId,password:y,server:`email-smtp.${this.region}.amazonaws.com`,port:587}}deriveSmtpPassword(e){let t=di("node:crypto"),s="SendRawEmail",a=Buffer.from([4]),i=t.createHmac("sha256",`AWS4${e}`).update("11111111").digest();return i=t.createHmac("sha256",i).update(this.region).digest(),i=t.createHmac("sha256",i).update("ses").digest(),i=t.createHmac("sha256",i).update("aws4_request").digest(),i=t.createHmac("sha256",i).update("SendRawEmail").digest(),Buffer.concat([a,i]).toString("base64")}async createTemplate(e){await this.ses.createEmailTemplate({TemplateName:e.name,TemplateContent:{Subject:e.subject,Text:e.text,Html:e.html}})}async getTemplate(e){try{let t=await this.ses.getEmailTemplate(e);return{name:t.TemplateName||e,subject:t.TemplateContent?.Subject,text:t.TemplateContent?.Text,html:t.TemplateContent?.Html}}catch{return null}}async deleteTemplate(e){await this.ses.deleteEmailTemplate(e)}async listTemplates(){return(await this.ses.listEmailTemplates()).TemplatesMetadata?.map((t)=>({name:t.TemplateName||"",createdAt:t.CreatedTimestamp}))||[]}async deploy(e){let t=`${e.appName}-${e.environment}-email-rules`,s=`${e.appName}-inbound-email`,a=e.storage?.bucketName||`${e.appName}-${e.environment}-email`,i=await this.setupDomain(e.domain);if(!(await this.s3.listBuckets()).Buckets?.some((l)=>l.Name===a))await this.s3.createBucket(a);await this.setupReceiving({domain:e.domain,ruleSetName:t,ruleName:s,bucketName:a,prefix:e.storage?.prefix||"inbox/",accountId:e.accountId,recipients:e.catchAll?[e.domain]:e.mailboxes,scanEnabled:!0});let m=await this.getDnsRecords(e.domain);return{success:!0,domainVerified:i.domainVerified,dkimStatus:i.dkimStatus,receiptRuleSet:t,storageBucket:a,dnsRecords:m}}async undeploy(e){let t=`${e.appName}-${e.environment}-email-rules`,s=`${e.appName}-inbound-email`,a=`${e.appName}-${e.environment}-email`;try{await this.ses.deleteReceiptRule(t,s)}catch{}try{await this.ses.deleteReceiptRuleSet(t)}catch{}if(e.deleteBucket)try{await this.s3.emptyAndDeleteBucket(a)}catch{}}async getSendingStats(){let e=await this.ses.getSendQuota();return{sentLast24Hours:e.SentLast24Hours||0,maxSendRate:e.MaxSendRate||0,max24HourSend:e.Max24HourSend||0}}buildRawEmail(e,t,s){let a=`----=_Part_${Date.now()}_${Math.random().toString(36).substring(2)}`,i="";if(i+=`From: ${t}\r
2
- `,i+=`To: ${s.join(", ")}\r
3
- `,e.cc){let n=Array.isArray(e.cc)?e.cc:[e.cc];i+=`Cc: ${n.join(", ")}\r
4
- `}if(i+=`Subject: ${e.subject}\r
5
- `,i+=`MIME-Version: 1.0\r
6
- `,i+=`Content-Type: multipart/mixed; boundary="${a}"\r
7
- `,i+=`\r
8
- `,e.text||e.html)if(i+=`--${a}\r
9
- `,e.html&&e.text){let n=`----=_Alt_${Date.now()}`;i+=`Content-Type: multipart/alternative; boundary="${n}"\r
10
- `,i+=`\r
11
- `,i+=`--${n}\r
12
- `,i+=`Content-Type: text/plain; charset="UTF-8"\r
13
- `,i+=`\r
14
- `,i+=`${e.text}\r
15
- `,i+=`--${n}\r
16
- `,i+=`Content-Type: text/html; charset="UTF-8"\r
17
- `,i+=`\r
18
- `,i+=`${e.html}\r
19
- `,i+=`--${n}--\r
20
- `}else if(e.html)i+=`Content-Type: text/html; charset="UTF-8"\r
21
- `,i+=`\r
22
- `,i+=`${e.html}\r
23
- `;else i+=`Content-Type: text/plain; charset="UTF-8"\r
24
- `,i+=`\r
25
- `,i+=`${e.text}\r
26
- `;if(e.attachments)for(let n of e.attachments)i+=`--${a}\r
27
- `,i+=`Content-Type: ${n.contentType||"application/octet-stream"}; name="${n.filename}"\r
28
- `,i+=`Content-Transfer-Encoding: base64\r
29
- `,i+=`Content-Disposition: attachment; filename="${n.filename}"\r
30
- `,i+=`\r
31
- `,i+=`${n.content}\r
32
- `;return i+=`--${a}--\r
33
- `,i}}var up=new ac;
34
- export{Y,ye,ac,up};
@@ -1 +0,0 @@
1
- import{Sr,cc,lc,bt,br,vr,Tr,Er,en}from"./chunk-z1dtdw3j.js";import"./chunk-0trtkv9g.js";import"./chunk-mxvekmdx.js";export{br as AwsSecretsManagerConfigurationBackend,vr as AwsSsmConfigurationBackend,Er as ConfigurationService,Sr as ConfigurationStore,Tr as ExternalConfigurationBackend,bt as LocalEncryptedConfigurationBackend,cc as parseDotenv,lc as serializeDotenv,en as synchronizeConfiguredConfiguration};
@@ -1 +0,0 @@
1
- import{K}from"./chunk-90102shh.js";import"./chunk-mx9ppkmn.js";export{K as EC2Client};
@@ -1,2 +0,0 @@
1
- import{u}from"./chunk-mx9ppkmn.js";class F{client;region;constructor(e="us-east-1",i){this.region=e,this.client=new u}async createQueue(e){let t={Action:"CreateQueue",QueueName:e.fifo&&!e.queueName.endsWith(".fifo")?`${e.queueName}.fifo`:e.queueName,Version:"2012-11-05"},s=1;if(e.visibilityTimeout!==void 0)t[`Attribute.${s}.Name`]="VisibilityTimeout",t[`Attribute.${s}.Value`]=e.visibilityTimeout.toString(),s++;if(e.messageRetentionPeriod!==void 0)t[`Attribute.${s}.Name`]="MessageRetentionPeriod",t[`Attribute.${s}.Value`]=e.messageRetentionPeriod.toString(),s++;if(e.delaySeconds!==void 0)t[`Attribute.${s}.Name`]="DelaySeconds",t[`Attribute.${s}.Value`]=e.delaySeconds.toString(),s++;if(e.maxMessageSize!==void 0)t[`Attribute.${s}.Name`]="MaximumMessageSize",t[`Attribute.${s}.Value`]=e.maxMessageSize.toString(),s++;if(e.receiveMessageWaitTime!==void 0)t[`Attribute.${s}.Name`]="ReceiveMessageWaitTimeSeconds",t[`Attribute.${s}.Value`]=e.receiveMessageWaitTime.toString(),s++;if(e.fifo){if(t[`Attribute.${s}.Name`]="FifoQueue",t[`Attribute.${s}.Value`]="true",s++,e.contentBasedDeduplication)t[`Attribute.${s}.Name`]="ContentBasedDeduplication",t[`Attribute.${s}.Value`]="true",s++}if(e.deadLetterTargetArn&&e.maxReceiveCount)t[`Attribute.${s}.Name`]="RedrivePolicy",t[`Attribute.${s}.Value`]=JSON.stringify({deadLetterTargetArn:e.deadLetterTargetArn,maxReceiveCount:e.maxReceiveCount}),s++;if(e.tags&&Object.keys(e.tags).length>0){let a=1;for(let[n,g]of Object.entries(e.tags))t[`Tag.${a}.Key`]=n,t[`Tag.${a}.Value`]=g,a++}let r=await this.client.request({service:"sqs",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()});return{QueueUrl:r.QueueUrl||r.CreateQueueResult?.QueueUrl}}async listQueues(e){let i={Action:"ListQueues",Version:"2012-11-05"};if(e)i.QueueNamePrefix=e;let t=await this.client.request({service:"sqs",region:this.region,method:"POST",path:"/",body:new URLSearchParams(i).toString()}),s=[];if(t.QueueUrl)s.push(t.QueueUrl);else if(t.ListQueuesResult?.QueueUrl)if(Array.isArray(t.ListQueuesResult.QueueUrl))s.push(...t.ListQueuesResult.QueueUrl);else s.push(t.ListQueuesResult.QueueUrl);return{QueueUrls:s}}async getQueueAttributes(e){let i={Action:"GetQueueAttributes",QueueUrl:e,Version:"2012-11-05","AttributeName.1":"All"},t=await this.client.request({service:"sqs",region:this.region,method:"POST",path:"/",body:new URLSearchParams(i).toString()});return{Attributes:t.Attributes||t.GetQueueAttributesResult?.Attributes||{}}}async getQueueUrl(e){let i={Action:"GetQueueUrl",QueueName:e,Version:"2012-11-05"},t=await this.client.request({service:"sqs",region:this.region,method:"POST",path:"/",body:new URLSearchParams(i).toString()});return{QueueUrl:t.QueueUrl||t.GetQueueUrlResult?.QueueUrl}}async deleteQueue(e){let i={Action:"DeleteQueue",QueueUrl:e,Version:"2012-11-05"};await this.client.request({service:"sqs",region:this.region,method:"POST",path:"/",body:new URLSearchParams(i).toString()})}async purgeQueue(e){let i={Action:"PurgeQueue",QueueUrl:e,Version:"2012-11-05"};await this.client.request({service:"sqs",region:this.region,method:"POST",path:"/",body:new URLSearchParams(i).toString()})}async sendMessage(e){let i={Action:"SendMessage",QueueUrl:e.queueUrl,MessageBody:e.messageBody,Version:"2012-11-05"};if(e.delaySeconds!==void 0)i.DelaySeconds=e.delaySeconds;if(e.messageGroupId)i.MessageGroupId=e.messageGroupId;if(e.messageDeduplicationId)i.MessageDeduplicationId=e.messageDeduplicationId;let t=await this.client.request({service:"sqs",region:this.region,method:"POST",path:"/",body:new URLSearchParams(i).toString()});return{MessageId:t.MessageId||t.SendMessageResult?.MessageId}}async receiveMessages(e){let i={Action:"ReceiveMessage",QueueUrl:e.queueUrl,Version:"2012-11-05"};if(e.maxMessages!==void 0)i.MaxNumberOfMessages=e.maxMessages;if(e.visibilityTimeout!==void 0)i.VisibilityTimeout=e.visibilityTimeout;if(e.waitTimeSeconds!==void 0)i.WaitTimeSeconds=e.waitTimeSeconds;let t=await this.client.request({service:"sqs",region:this.region,method:"POST",path:"/",body:new URLSearchParams(i).toString()}),s=[],r=t.Message||t.ReceiveMessageResult?.Message;if(r)if(Array.isArray(r))s.push(...r.map((a)=>({MessageId:a.MessageId,ReceiptHandle:a.ReceiptHandle,Body:a.Body})));else s.push({MessageId:r.MessageId,ReceiptHandle:r.ReceiptHandle,Body:r.Body});return{Messages:s}}async deleteMessage(e,i){let t={Action:"DeleteMessage",QueueUrl:e,ReceiptHandle:i,Version:"2012-11-05"};await this.client.request({service:"sqs",region:this.region,method:"POST",path:"/",body:new URLSearchParams(t).toString()})}}
2
- export{F};
@@ -1 +0,0 @@
1
- import{Kl,Jl,Xl,Ql,Lu,Mu}from"./chunk-0f1qpmd6.js";import"./chunk-148x1zq8.js";import"./chunk-dyh0vndw.js";import"./chunk-vjkyj3xy.js";import"./chunk-9vmtm7nq.js";import"./chunk-e55fdn0r.js";import"./chunk-mx9ppkmn.js";export{Lu as deleteStaticSite,Jl as deployStaticSite,Mu as deployStaticSiteFull,Kl as generateStaticSiteTemplate,Ql as invalidateCache,Xl as uploadStaticFiles};
@@ -1 +0,0 @@
1
- import{g}from"./chunk-e55fdn0r.js";import"./chunk-mx9ppkmn.js";export{g as S3Client};
@@ -1 +0,0 @@
1
- import{Wn}from"./chunk-gfr2215x.js";import"./chunk-90102shh.js";import"./chunk-ys5n5c84.js";import"./chunk-vjkyj3xy.js";import"./chunk-t10e32an.js";import"./chunk-e55fdn0r.js";import"./chunk-mx9ppkmn.js";import"./chunk-mxvekmdx.js";export{Wn as resolveServerDashboardData};
@@ -1 +0,0 @@
1
- import{Is,lp,dp,Rs}from"./chunk-rbtt23vx.js";import"./chunk-t10e32an.js";import"./chunk-mxvekmdx.js";export{lp as getComputeDeployHistory,Rs as restoreDatabaseBackup,Is as rollbackComputeSite,dp as runComputeRecipe};
@@ -1 +0,0 @@
1
- import{F}from"./chunk-egn33pr9.js";import"./chunk-mx9ppkmn.js";export{F as SQSClient};
@@ -1 +0,0 @@
1
- import{Ou}from"./chunk-djjj62c0.js";import"./chunk-1j8b1d58.js";import"./chunk-2mv692y4.js";import"./chunk-mx9ppkmn.js";import"./chunk-mxvekmdx.js";export{Ou as buildAndPushServerlessImage};
@@ -1 +0,0 @@
1
- import{ui,u,N,Us}from"./chunk-mx9ppkmn.js";export{u as AWSClient,N as buildQueryParams,Us as detectCredentialSource,ui as resolveS3Endpoint};
@@ -1 +0,0 @@
1
- import{v}from"./chunk-vjkyj3xy.js";import"./chunk-mx9ppkmn.js";export{v as CloudFormationClient};
@@ -1 +0,0 @@
1
- import{st}from"./chunk-5a7sxtwn.js";import"./chunk-mx9ppkmn.js";export{st as STSClient};
@@ -1 +0,0 @@
1
- import{Uu,Bu,Fu,ju}from"./chunk-apnhhfkj.js";import"./chunk-e55fdn0r.js";import"./chunk-mx9ppkmn.js";import"./chunk-mxvekmdx.js";export{ju as deleteFailoverReplicaBuckets,Uu as ensureFailoverReplicaBuckets,Bu as grantFailoverReplicaAccess,Fu as seedFailoverReplicas};
@@ -1 +0,0 @@
1
- import{Xo}from"./chunk-h1rb8qvt.js";export{Xo as encodeDashboardPayload};
@@ -1,2 +0,0 @@
1
- import{u}from"./chunk-mx9ppkmn.js";class v{client;region;constructor(e="us-east-1",t){this.region=e,this.client=new u(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 S=await this.describeStackEvents(e);console.log("[waitForStack] Stack events (most recent first):");for(let k of S.StackEvents.slice(0,15))if(k.ResourceStatus.includes("FAILED")||k.ResourceStatusReason){if(console.log(` ${k.LogicalResourceId}: ${k.ResourceStatus} - ${k.ResourceStatusReason||"No reason provided"}`),k.ResourceStatus.includes("FAILED")&&k.ResourceStatusReason&&!o)o=k.ResourceStatusReason}}catch{}let l=o||n.StackStatusReason||"Check CloudFormation console for details.";throw Error(`Stack creation/update failed - stack is being deleted. Reason: ${l}`)}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 k=[...(await this.describeStackEvents(e)).StackEvents||[]].reverse();for(let d of k){let g=`${d.LogicalResourceId}-${d.ResourceStatus}-${d.Timestamp}`;if(!n.has(g))n.add(g),s({resourceId:d.LogicalResourceId,resourceType:d.ResourceType,status:d.ResourceStatus,reason:d.ResourceStatusReason,timestamp:d.Timestamp})}}catch{}let o=await this.describeStacks({stackName:e});if(o.Stacks.length===0){if(t==="stack-delete-complete")return;await new Promise((S)=>setTimeout(S,2000)),c++;continue}let l=o.Stacks[0];if(m.includes(l.StackStatus))return;if(l.StackStatus==="DELETE_FAILED"&&t==="stack-delete-complete"){let S=Error("Stack deletion failed - may have resources that need to be retained");throw S.code="DELETE_FAILED",S.stackStatus=l.StackStatus,S.statusReason=l.StackStatusReason,S}if(r.includes(l.StackStatus))throw Error(`Stack reached failure status: ${l.StackStatus}`);await new Promise((S)=>setTimeout(S,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((l)=>setTimeout(l,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{v};
@@ -1 +0,0 @@
1
- import{ft,bd,Ss,ao,ip,bs,vs,co,Ot,op,vd,sp,ap,j,Ts,cp}from"./chunk-tq172j2x.js";import"./chunk-6kx50dyc.js";import"./chunk-2mv692y4.js";import"./chunk-vjkyj3xy.js";import"./chunk-e55fdn0r.js";import"./chunk-mx9ppkmn.js";import"./chunk-mxvekmdx.js";export{ao as assertEnvWithinLimit,Ss as buildFunctionEnv,ip as deployServerlessApp,sp as getCommandRecord,bd as infraEnvFromOutputs,vd as listCommandHistory,bs as redeployServerlessApp,ft as resolveServerlessFunctions,cp as restoreServerlessDatabase,vs as rollbackServerlessApp,op as runAndRecordCommand,ap as runDbQuery,Ot as runRemoteCommand,Ts as scaleServerlessDatabase,j as serverlessInfo,co as setMaintenance};
@@ -1 +0,0 @@
1
- import{ku,Wl,ba,va,Gl,_u,xu,Ht,cn,qt,wi,$u,ln,Uo}from"./chunk-x63yz8xg.js";import{Ke,ms,ec,ri,gs,rp}from"./chunk-ngyqqy6d.js";import{md,Ji,gd,fd,hd,gr,np,Xi}from"./chunk-8jbkphmg.js";import{ma,ga,fa,$l,Oo,Ol,Ll,ha,Ml,Ul}from"./chunk-mxvekmdx.js";export{ga as CHAIN_HEADER,cn as DEFAULT_ATTACK_MODE_HOURS,md as DEFAULT_DDOS_THRESHOLDS,Oo as DEFAULT_RECURSION_LIMITS,ma as DEPTH_HEADER,Ht as MAX_CONTROL_HOURS,qt as ProtectionControlStore,ku as RATE_LIMIT_KEY_SEPARATOR,Gl as RateLimiter,ha as RecursionGuard,fa as TRACE_HEADER,ln as applyControlsToDdos,$u as applyControlsToRateLimits,Xi as applyMitigationFactor,xu as defaultRateLimitRules,wi as describePosture,Ke as escapeSecLang,$l as functionFingerprint,Wl as globMatches,ec as globToRegex,Ll as inspectInvocation,ms as isSafePattern,Ji as isValidCidr,Uo as mergeControlsIntoConfig,Ol as parseChain,np as planMitigation,Ml as propagationHeaders,_u as rateLimitHeaders,va as rateLimitKey,Ul as recursionBlockedResponse,gr as renderDdosInstallScript,hd as renderNftablesRuleset,fd as renderSysctlFile,ri as renderWafConfig,gs as renderWafInstallScript,ba as ruleMatches,gd as sysctlHardening,rp as wafEventTelemetry};
@@ -1 +0,0 @@
1
- import{R}from"./chunk-6kx50dyc.js";import"./chunk-mx9ppkmn.js";export{R as LambdaClient};
@@ -1 +0,0 @@
1
- import{Vu,Gr,ji,ne,zu,Oa,Yl,Zo,Hu,qu,Wu,La,Vi,es,Ma,Kr,ur,Gu,Yn,Ku,Ua,Zl,ed,ts,Ba,Fa,pr,zi,mr,ja,rs,Zn,td,Hi,Va,za,qi,rd,Ha,qa,Wa,Ga,ns,nd,id,Ju,od,Ka,Wi,sd,ad,is,kt,os,ss,as,Ja,cd,Xa,cs,Xu,mt,Qu,Qa,_t,Ya,Yu,Za,ld,Zu,Q,dd,ls,ep,Gi,ei,ti,ds,ud,pd,tp,us,ps}from"./chunk-e24bscb0.js";import"./chunk-0trtkv9g.js";import"./chunk-mxvekmdx.js";export{is as AnomalyConfigStore,ud as AwsSpendTransport,pd as ComputeSpendTransport,ts as CounterTracker,Ua as DEFAULT_METER_MAPPINGS,La as DEFAULT_PRICE_BOOK,zi as DEFAULT_THRESHOLDS,kt as DETECTABLE_SIGNALS,ji as ENFORCEMENT_ACTIONS,qi as ENFORCEMENT_DESCRIPTIONS,ne as ENFORCEMENT_SEVERITY,cd as FOCUS_VERSION,Gr as METERS,Vu as METER_KEYS,zu as MICRO_CENTS,td as MIN_PROJECTION_CONFIDENCE,ld as RecordingSpendTransport,sd as SENSITIVITY_THRESHOLDS,ti as SPEND_CYCLE_SECONDS,Qa as SPEND_GATE_SETTING,ep as SPEND_LEASE_SETTING,ss as SignalSource,Ya as SpendCapError,_t as SpendGate,Gi as SpendLoopLease,ls as SpendNotificationRouter,ei as SpendRunner,mt as SpendService,mr as SpendStore,Zu as URGENT_SPEND_EVENTS,rd as USER_VISIBLE_ACTIONS,Fa as aggregateDeltas,Wi as anomalyOptionsForSignal,Yu as assertSpendAllows,ur as budgetWindow,tp as compositeSpendTransport,Za as createEnforcementHandlers,od as detectAnomalies,Ka as detectLatestAnomaly,Va as evaluateBudget,Ju as ewma,Zl as findMapping,Yl as findPriceEntry,Q as formatCents,Zn as formatTimeToExhaustion,Hi as governingLimitCents,us as handleSpendRequest,Yn as hourBucket,Ku as hourBucketsBetween,Ga as isOperationAllowed,Vi as isValidTimeZone,Ja as lookbackHoursForSignal,ns as median,nd as medianAbsoluteDeviation,za as mergeDecisions,Wu as mergePriceBooks,Ba as meterTelemetry,as as optionsForSignal,rs as percentOfLimit,Ha as planEnforcement,Gu as previousBudgetWindow,Zo as priceUsage,Hu as priceUsageLines,ja as projectSpend,id as robustZScore,qu as roundCents,ad as routeMatches,qa as runEnforcement,pr as scopeKey,os as signalDefinition,dd as spendNotificationText,ps as spendOpenApiPaths,ds as startSpendLoop,Xu as streamFocusJsonl,Wa as strongestActiveAction,Oa as tieredMicroCents,cs as toFocusJsonl,Xa as toFocusRecords,ed as usageDeltaKey,Kr as utcInstantOfLocal,Qu as zeroFill,Ma as zoneOffsetMs,es as zonedParts};
@@ -1 +0,0 @@
1
- import{ac,up}from"./chunk-840arz58.js";import"./chunk-9vmtm7nq.js";import"./chunk-e55fdn0r.js";import"./chunk-mx9ppkmn.js";export{ac as EmailClient,up as email};
@@ -1 +0,0 @@
1
- import{Zi,es,ts,rs,_a,Oa}from"./chunk-hyeeqga9.js";import"./chunk-31tvc877.js";import"./chunk-e8e1h2h9.js";import"./chunk-9wmer0zx.js";import"./chunk-ptq9v346.js";import"./chunk-9asn5fpt.js";import"./chunk-zx8ecz8b.js";export{_a as deleteStaticSite,es as deployStaticSite,Oa as deployStaticSiteFull,Zi as generateStaticSiteTemplate,rs as invalidateCache,ts as uploadStaticFiles};
@@ -1 +0,0 @@
1
- import{Sn,Dh}from"./chunk-d46p0h6t.js";import"./chunk-9wmer0zx.js";import"./chunk-9asn5fpt.js";import"./chunk-zx8ecz8b.js";export{Sn as EmailClient,Dh as email};
@@ -1 +0,0 @@
1
- import{br,n,l,Wh}from"./chunk-zx8ecz8b.js";export{n as AWSClient,l as buildQueryParams,Wh as detectCredentialSource,br as resolveS3Endpoint};
@@ -1,5 +0,0 @@
1
- import{mo,qr,$d,Pi,So,Co}from"./chunk-v2p7c7s4.js";import{_e}from"./chunk-5far81q7.js";import{execFileSync as C}from"node:child_process";import{mkdirSync as S,mkdtempSync as U,rmSync as L,writeFileSync as d}from"node:fs";import{tmpdir as O}from"node:os";import{dirname as j,join as s}from"node:path";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 I(t,e){return`${r[e]}${t}${r.reset}`}function pn(t){console.log(`${r.green}✓${r.reset} ${t}`)}function hu(t){console.error(`${r.red}✗${r.reset} ${t}`)}function ns(t){console.warn(`${r.yellow}⚠${r.reset} ${t}`)}function P(t){console.log(`${r.blue}ℹ${r.reset} ${t}`)}function v(t){console.log(`${r.cyan}→${r.reset} ${t}`)}function is(t){console.log(`
2
- ${r.bright}${r.cyan}${t}${r.reset}
3
- `)}var F=!!(process.env.CI||process.env.GITHUB_ACTIONS||process.env.BUILDKITE||process.env.CIRCLECI||process.env.GITLAB_CI);function fu(t,e="cyan"){let n=t.split(`
4
- `),i=Math.max(...n.map((l)=>l.length)),a="─".repeat(i+2);console.log(I(`┌${a}┐`,e)),n.forEach((l)=>{console.log(I(`│ ${l.padEnd(i)} │`,e))}),console.log(I(`└${a}┘`,e))}function A(t,e){for(let n of e){let i=s(t,n.name);S(j(i),{recursive:!0}),d(i,n.data,n.mode?{mode:n.mode}:void 0)}}async function xa(t){let{app:e,projectRoot:n,region:i,repository:a}=t,l=e.architecture??"x86_64",R=l==="arm64"?"linux/arm64":"linux/amd64",E=e.kind==="php",c=t.onStep??(()=>{}),p=U(s(O(),"tscloud-img-"));try{let f=s(p,"app");S(f,{recursive:!0});let y,w;if(E){So({projectRoot:n,app:e,skipBuild:t.skipBuild,onStep:c}),c("staging application tree");let o=Co(n);A(f,o),A(s(p,"runtime"),Pi().map((g)=>({name:g.path,data:g.contents,mode:g.mode})));let b=e.handlers?.http??"public/index.php";y={http:b,queue:e.handlers?.queue??b,cli:e.handlers?.cli??b},w=mo(o.map((g)=>`${g.name}:${g.data.length}`).join("|"))}else{c("bundling application");let o=await qr({projectRoot:n,app:e,skipBuild:t.skipBuild,onStep:c});d(s(f,"index.mjs"),o.bundle),y=o.handlers,w=o.sha256}let k=w.slice(0,16);d(s(p,"Dockerfile"),$d({kind:e.kind??"node",phpVersion:e.phpVersion,architecture:l}));let x=new _e(i),u;try{u=(await x.describeRepositories({repositoryNames:[a]})).repositories?.[0]?.repositoryUri??""}catch{u=""}if(!u)c(`creating ECR repository ${a}`),u=(await x.createRepository({repositoryName:a,imageScanningConfiguration:{scanOnPush:!0}})).repository?.repositoryUri??"";if(!u)throw Error(`could not resolve ECR repository URI for ${a}`);let m=`${u}:${k}`;c("docker build"),C("docker",["build","--platform",R,"--provenance=false","--sbom=false","-t",m,p],{stdio:"inherit"}),c("ecr auth + push");let h=(await x.getAuthorizationToken()).authorizationData?.[0];if(!h?.authorizationToken||!h.proxyEndpoint)throw Error("failed to get an ECR authorization token");let T=h.proxyEndpoint.replace(/^https?:\/\//,""),B=s(p,".docker");return S(B,{recursive:!0}),d(s(B,"config.json"),JSON.stringify({auths:{[T]:{auth:h.authorizationToken}}})),C("docker",["push",m],{stdio:"inherit",env:{...process.env,DOCKER_CONFIG:B}}),P(`Image: ${m}`),{imageUri:m,tag:k,handlers:y}}finally{L(p,{recursive:!0,force:!0})}}
5
- export{pn,hu,ns,P,v,is,fu,xa};