@stacksjs/ts-cloud 0.16.39 → 0.16.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/dist/aws/ec2-launch.test.d.ts +1 -0
  2. package/dist/aws/ec2.d.ts +47 -0
  3. package/dist/aws/index.js +1 -1
  4. package/dist/bin/chunk-040x6j9v.js +1 -0
  5. package/dist/bin/chunk-2b9e10db.js +1 -0
  6. package/dist/bin/chunk-2tvtr5fy.js +1 -0
  7. package/dist/bin/{chunk-r0yapyqc.js → chunk-35x7z78g.js} +1 -1
  8. package/dist/bin/chunk-45a8yv3j.js +6 -0
  9. package/dist/bin/{chunk-4bp4k1x2.js → chunk-4azcshw6.js} +2 -2
  10. package/dist/bin/{chunk-55cckkb2.js → chunk-4yym8xm4.js} +5 -5
  11. package/dist/bin/chunk-5dqnj5n9.js +1 -0
  12. package/dist/bin/chunk-5khcwxhn.js +1 -0
  13. package/dist/bin/{chunk-zmp0mksb.js → chunk-5nmt4s5w.js} +2 -2
  14. package/dist/bin/{chunk-8zn63v9h.js → chunk-5wx26yjy.js} +3 -3
  15. package/dist/bin/chunk-6kt12934.js +1 -0
  16. package/dist/bin/{chunk-0ynfqf9t.js → chunk-7593hjcq.js} +1 -1
  17. package/dist/bin/chunk-7nsjehvx.js +1 -0
  18. package/dist/bin/{chunk-wga7gj0h.js → chunk-7p2va3nj.js} +1 -1
  19. package/dist/bin/chunk-89hvgp5e.js +1 -0
  20. package/dist/bin/{chunk-hjq05rxh.js → chunk-8e4ck7cg.js} +5 -5
  21. package/dist/bin/{chunk-sqmays54.js → chunk-9eqpnanr.js} +1 -1
  22. package/dist/bin/{chunk-d8x60kvn.js → chunk-a06d7cyt.js} +2 -2
  23. package/dist/bin/chunk-aptdpa3m.js +1 -0
  24. package/dist/bin/chunk-bb08ms5q.js +1 -0
  25. package/dist/bin/chunk-c23r6gjb.js +1 -0
  26. package/dist/bin/chunk-cxcgqqdb.js +1 -0
  27. package/dist/bin/{chunk-q8hp4dfy.js → chunk-ddwp5np9.js} +94 -94
  28. package/dist/bin/{chunk-dmwfnbg0.js → chunk-dkf2kcsc.js} +6 -6
  29. package/dist/bin/{chunk-85k5gvnc.js → chunk-e8jwnsee.js} +3 -3
  30. package/dist/bin/{chunk-aykdp1wv.js → chunk-eaet154r.js} +2 -2
  31. package/dist/bin/chunk-ecd4swb7.js +2 -0
  32. package/dist/bin/{chunk-gc8p1tdr.js → chunk-f64jvh96.js} +2 -2
  33. package/dist/bin/{chunk-0c1fv0xt.js → chunk-f7jpzyhr.js} +5 -5
  34. package/dist/bin/{chunk-4h60xsat.js → chunk-f8689v5g.js} +3 -3
  35. package/dist/bin/chunk-fhq31xzt.js +1 -0
  36. package/dist/bin/{chunk-c7z8et78.js → chunk-fkzp9sg5.js} +1 -1
  37. package/dist/bin/chunk-gj26v5hg.js +1 -0
  38. package/dist/bin/{chunk-5wqjqh6c.js → chunk-gn03w47w.js} +23 -23
  39. package/dist/bin/{chunk-48nz63ab.js → chunk-grwth4nw.js} +3 -3
  40. package/dist/bin/chunk-jrztbsnb.js +1 -0
  41. package/dist/bin/chunk-jv9qp13h.js +1 -0
  42. package/dist/bin/{chunk-cqhtnsby.js → chunk-k0p394bn.js} +5 -5
  43. package/dist/bin/{chunk-mbr9j2fw.js → chunk-k343q24p.js} +6 -6
  44. package/dist/bin/chunk-k9ate69x.js +1 -0
  45. package/dist/bin/chunk-kbwm0sqv.js +2 -0
  46. package/dist/bin/chunk-ky4xdskt.js +1 -0
  47. package/dist/bin/chunk-kzgt05w5.js +1 -0
  48. package/dist/bin/{chunk-x0ywfbk5.js → chunk-kzpzkdpd.js} +1 -1
  49. package/dist/bin/chunk-m8p7mw67.js +1 -0
  50. package/dist/bin/chunk-mh3rgn0e.js +1 -0
  51. package/dist/bin/{chunk-07qwk0sj.js → chunk-n7yefy09.js} +5 -5
  52. package/dist/bin/{chunk-pyr0dc6j.js → chunk-ndf3t76p.js} +63 -63
  53. package/dist/bin/{chunk-7rpj0qhb.js → chunk-nj9x0tb8.js} +2 -2
  54. package/dist/bin/{chunk-tt3m3fda.js → chunk-nmqjmx30.js} +22 -22
  55. package/dist/bin/{chunk-e0kapeev.js → chunk-p8xy9qm7.js} +14 -14
  56. package/dist/bin/chunk-p9baztvr.js +1 -0
  57. package/dist/bin/chunk-pf9dbm3b.js +4 -0
  58. package/dist/bin/{chunk-qxg95ndf.js → chunk-q40k9jvk.js} +2 -2
  59. package/dist/bin/chunk-qgqgdkg0.js +1 -0
  60. package/dist/bin/chunk-s64d5nw2.js +1 -0
  61. package/dist/bin/chunk-s77kny9g.js +1 -0
  62. package/dist/bin/{chunk-ygsdntxq.js → chunk-x6w8jvs1.js} +5 -5
  63. package/dist/bin/{chunk-ehnevjt4.js → chunk-xe9p2q8f.js} +99 -99
  64. package/dist/bin/{chunk-6r5mehaj.js → chunk-xq7ngz6q.js} +4 -4
  65. package/dist/bin/{chunk-w6yx9bhb.js → chunk-zvbc92pc.js} +1 -1
  66. package/dist/bin/cli.js +173 -173
  67. package/dist/bin/dashboard-server.js +1 -1
  68. package/dist/{chunk-yrcv3hrj.js → chunk-0evxayn1.js} +7 -7
  69. package/dist/chunk-1yhrkahz.js +1 -0
  70. package/dist/chunk-27y037yh.js +1 -0
  71. package/dist/chunk-2ns1w1fe.js +1 -0
  72. package/dist/chunk-2vrv31sk.js +37 -0
  73. package/dist/{chunk-n1r9313b.js → chunk-3s8dtcz8.js} +2 -2
  74. package/dist/chunk-3w7q4sjs.js +2 -0
  75. package/dist/{chunk-tbn385ak.js → chunk-5n1y5ehd.js} +94 -94
  76. package/dist/chunk-74yycwrd.js +1 -0
  77. package/dist/{chunk-t52wetq8.js → chunk-7eaech9q.js} +1 -1
  78. package/dist/{chunk-2n4ktft4.js → chunk-97gre81w.js} +1 -1
  79. package/dist/{chunk-zvyrpmvd.js → chunk-9e4afej1.js} +1 -1
  80. package/dist/{chunk-3cyszqzh.js → chunk-9mv07nz0.js} +2 -2
  81. package/dist/{chunk-kpjhfgbh.js → chunk-bfbahave.js} +4 -4
  82. package/dist/{chunk-xr7ew64s.js → chunk-bwtxb2hf.js} +3 -3
  83. package/dist/{chunk-dg834141.js → chunk-cgcthvq9.js} +5 -5
  84. package/dist/{chunk-ffjgw5m6.js → chunk-ckqjqw4w.js} +108 -108
  85. package/dist/chunk-e9z4gzmg.js +1 -0
  86. package/dist/chunk-fwcf0n8f.js +4 -0
  87. package/dist/{chunk-q08s698e.js → chunk-jaswfk6g.js} +71 -71
  88. package/dist/{chunk-ffba3270.js → chunk-jbtnyhrh.js} +2 -2
  89. package/dist/{chunk-gcqq9m4b.js → chunk-kexwq2h0.js} +4 -4
  90. package/dist/{chunk-p4rknh9f.js → chunk-mxprxjd4.js} +1 -1
  91. package/dist/{chunk-c45ay9fx.js → chunk-my61jkg1.js} +5 -5
  92. package/dist/{chunk-kkeb1dk1.js → chunk-qbbap3bt.js} +1 -1
  93. package/dist/{chunk-jsnhb1p4.js → chunk-qg03hfb6.js} +19 -19
  94. package/dist/{chunk-bx3jmgd0.js → chunk-r3m1fjd4.js} +2 -2
  95. package/dist/{chunk-nzmangkw.js → chunk-v6hysd5c.js} +5 -5
  96. package/dist/{chunk-kyn6a4zf.js → chunk-varjr6np.js} +1 -1
  97. package/dist/chunk-vd2jqt9w.js +1 -0
  98. package/dist/{chunk-n8g8t8hf.js → chunk-w78e5n94.js} +3 -3
  99. package/dist/{chunk-0rvnerbw.js → chunk-ype3pqh5.js} +5 -5
  100. package/dist/{chunk-qhtgfjhd.js → chunk-yt6m703r.js} +23 -23
  101. package/dist/deploy/index.js +1 -1
  102. package/dist/dns/index.js +1 -1
  103. package/dist/drivers/index.js +1 -1
  104. package/dist/index.d.ts +1 -0
  105. package/dist/index.js +42 -42
  106. package/dist/operations/index.js +1 -1
  107. package/dist/protection/index.js +1 -1
  108. package/dist/r2/index.d.ts +8 -0
  109. package/dist/r2/provider.d.ts +303 -0
  110. package/dist/r2/provider.test.d.ts +1 -0
  111. package/dist/r2/reconcile.d.ts +98 -0
  112. package/dist/r2/reconcile.test.d.ts +1 -0
  113. package/dist/r2/test-fetch.d.ts +32 -0
  114. package/dist/spend/index.js +1 -1
  115. package/dist/ui/404.html +1 -1
  116. package/dist/ui/accept-invitation.html +1 -1
  117. package/dist/ui/access-denied.html +1 -1
  118. package/dist/ui/account/automation.html +6 -6
  119. package/dist/ui/account/security.html +2 -2
  120. package/dist/ui/applications/compose.html +6 -6
  121. package/dist/ui/applications/new.html +2 -2
  122. package/dist/ui/data/backups.html +6 -6
  123. package/dist/ui/data/services.html +6 -6
  124. package/dist/ui/data/volumes.html +6 -6
  125. package/dist/ui/index.html +6 -6
  126. package/dist/ui/infrastructure/topology.html +5 -5
  127. package/dist/ui/integrations.html +2 -2
  128. package/dist/ui/operations/alerts.html +6 -6
  129. package/dist/ui/operations/configuration.html +6 -6
  130. package/dist/ui/operations/jobs.html +6 -6
  131. package/dist/ui/operations/maintenance.html +5 -5
  132. package/dist/ui/operations/observability.html +6 -6
  133. package/dist/ui/operations/previews.html +6 -6
  134. package/dist/ui/operations/queue.html +6 -6
  135. package/dist/ui/operations/regions.html +5 -5
  136. package/dist/ui/operations/releases.html +6 -6
  137. package/dist/ui/operations/spend.html +6 -6
  138. package/dist/ui/operations/workloads.html +6 -6
  139. package/dist/ui/security.html +2 -2
  140. package/dist/ui/server/actions.html +6 -6
  141. package/dist/ui/server/activity.html +2 -2
  142. package/dist/ui/server/capacity.html +5 -5
  143. package/dist/ui/server/database.html +6 -6
  144. package/dist/ui/server/deployments.html +6 -6
  145. package/dist/ui/server/diagnostics.html +2 -2
  146. package/dist/ui/server/firewall.html +6 -6
  147. package/dist/ui/server/fleet.html +6 -6
  148. package/dist/ui/server/logs.html +6 -6
  149. package/dist/ui/server/metrics.html +6 -6
  150. package/dist/ui/server/security.html +2 -2
  151. package/dist/ui/server/services.html +2 -2
  152. package/dist/ui/server/sites.html +6 -6
  153. package/dist/ui/server/ssh-keys.html +6 -6
  154. package/dist/ui/server/team.html +6 -6
  155. package/dist/ui/server/terminal.html +2 -2
  156. package/dist/ui/serverless/alarms.html +6 -6
  157. package/dist/ui/serverless/assets.html +2 -2
  158. package/dist/ui/serverless/cost.html +2 -2
  159. package/dist/ui/serverless/data.html +6 -6
  160. package/dist/ui/serverless/deployments.html +2 -2
  161. package/dist/ui/serverless/firewall.html +1 -1
  162. package/dist/ui/serverless/functions.html +6 -6
  163. package/dist/ui/serverless/logs.html +6 -6
  164. package/dist/ui/serverless/metrics.html +1 -1
  165. package/dist/ui/serverless/queues.html +6 -6
  166. package/dist/ui/serverless/secrets.html +6 -6
  167. package/dist/ui/serverless/traces.html +5 -5
  168. package/dist/ui/serverless.html +6 -6
  169. package/package.json +3 -3
  170. package/dist/bin/chunk-0c5vn8rp.js +0 -1
  171. package/dist/bin/chunk-1wf1s8db.js +0 -1
  172. package/dist/bin/chunk-4dtrry0t.js +0 -1
  173. package/dist/bin/chunk-6kcxf3b2.js +0 -1
  174. package/dist/bin/chunk-6ksbfg6t.js +0 -1
  175. package/dist/bin/chunk-7rkg1yph.js +0 -1
  176. package/dist/bin/chunk-989j6ezd.js +0 -1
  177. package/dist/bin/chunk-bgdvhp6m.js +0 -1
  178. package/dist/bin/chunk-cvc9bxd4.js +0 -2
  179. package/dist/bin/chunk-czzrfhn7.js +0 -1
  180. package/dist/bin/chunk-d5arnf2f.js +0 -1
  181. package/dist/bin/chunk-dnmb3sr0.js +0 -4
  182. package/dist/bin/chunk-e06m9m6z.js +0 -1
  183. package/dist/bin/chunk-e51ajfyr.js +0 -1
  184. package/dist/bin/chunk-e6mfcw0v.js +0 -6
  185. package/dist/bin/chunk-fh5bjm3d.js +0 -1
  186. package/dist/bin/chunk-fw6hbyeg.js +0 -1
  187. package/dist/bin/chunk-h7gfd2yq.js +0 -1
  188. package/dist/bin/chunk-jxnw879g.js +0 -1
  189. package/dist/bin/chunk-k3yq569a.js +0 -1
  190. package/dist/bin/chunk-nhrwct94.js +0 -1
  191. package/dist/bin/chunk-pa4fymr0.js +0 -1
  192. package/dist/bin/chunk-s9xven24.js +0 -1
  193. package/dist/bin/chunk-w8jfw39t.js +0 -2
  194. package/dist/bin/chunk-wgv9nv0z.js +0 -1
  195. package/dist/bin/chunk-y5980ycr.js +0 -1
  196. package/dist/bin/chunk-y5ez6ba7.js +0 -1
  197. package/dist/bin/chunk-ya71t2ed.js +0 -1
  198. package/dist/bin/chunk-zb1nh252.js +0 -1
  199. package/dist/chunk-1ty76ybd.js +0 -1
  200. package/dist/chunk-2mypcz4a.js +0 -1
  201. package/dist/chunk-5vk7nss8.js +0 -2
  202. package/dist/chunk-fe5sbczg.js +0 -1
  203. package/dist/chunk-gtc1gvfj.js +0 -1
  204. package/dist/chunk-j1aq97br.js +0 -4
  205. package/dist/chunk-j5t1amn0.js +0 -1
  206. package/dist/chunk-s20830hg.js +0 -1
  207. package/dist/chunk-v83qx041.js +0 -37
@@ -1,5 +1,5 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="muw2r2b6hpfy3w"><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 · Queues</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_1791254623101_33() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="muwwdcvnh74pil"><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 · Queues</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_1791304372124_33() {
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 initialQueues = [{"name":"acme-production-default","short":"default","visible":0,"inFlight":2,"delayed":0,"processed":12830,"oldestSec":0,"concurrency":10,"tries":3,"visTimeout":720,"dlq":0},{"name":"acme-production-emails","short":"emails","visible":4,"inFlight":1,"delayed":0,"processed":9210,"oldestSec":14,"concurrency":5,"tries":3,"visTimeout":720,"dlq":1}];
@@ -176,9 +176,9 @@ target = __stxBundle_63f5dee5d607["target"];
176
176
  typed = __stxBundle_63f5dee5d607["typed"];
177
177
  return { askOp, busy, canRun, cancelOp, confirmDanger, confirmLabel, confirmTok, confirmVerb, dlq, dlqLoaded, dlqMsg, fmtQueue, loadDlq, loadQueues, opOutput, opShown, pending, rows, runOp, target, typed, __stxBundle_63f5dee5d607 };
178
178
  }
179
- window.__stx_latestSetup=__stx_setup_1791254623101_33;
180
- if(window.stx)window.stx._latestSetup=__stx_setup_1791254623101_33;
181
- </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_1791254623101_33"><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">
179
+ window.__stx_latestSetup=__stx_setup_1791304372124_33;
180
+ if(window.stx)window.stx._latestSetup=__stx_setup_1791304372124_33;
181
+ </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_1791304372124_33"><a data-stx-scope="stx_scope_nav_43" 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">
182
182
  (function() {
183
183
  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;
184
184
  var __destroyHooks = [];
@@ -529,6 +529,6 @@ if(window.stx)window.stx._latestSetup=__stx_setup_1791254623101_33;
529
529
 
530
530
 
531
531
  try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
532
- window.stx._scopes['stx_scope_nav_42'] = __scopeRegistration;
532
+ window.stx._scopes['stx_scope_nav_43'] = __scopeRegistration;
533
533
  })();
534
534
  </script> <div class="wrap"><div class="crumbs"><a href="/serverless">Serverless</a><span class="sep">/</span> Queues</div><header class="page"><div><h1>Queues</h1><p>SQS queues feeding the queue worker (one job per invocation) with a shared dead-letter queue.</p></div></header><div class="section"><div class="panel"><table @show="rows().length > 0" x-cloak><thead><tr><th scope="col">Queue</th><th scope="col">Visible</th><th scope="col">In-flight</th><th scope="col">Oldest</th><th scope="col">Concurrency</th><th scope="col">Tries</th><th scope="col">Vis. timeout</th><th scope="col">Processed</th><th scope="col">DLQ</th><th scope="col" class="table-actions">Action</th></tr></thead><tbody><template :for="q in rows()"><tr><td x-cloak><b x-cloak>{{ q.short }}</b><div class="mono" style="font-size:11px;color:var(--txt3)" x-cloak>{{ q.name }}</div></td><td x-cloak>{{ q.visible }}</td><td x-cloak>{{ q.inFlight }}</td><td class="mono" x-cloak>{{ q.oldestSec }}s</td><td x-cloak>{{ q.concurrency }}</td><td x-cloak>{{ q.tries }}</td><td class="mono" x-cloak>{{ q.visTimeout }}s</td><td style="color:var(--txt2)" x-cloak>{{ fmtQueue(q.processed) }}</td><td x-cloak><span class="bad pill" @show="q.dlq > 0" x-cloak>{{ q.dlq }}</span><span style="color:var(--txt3)" @show="!q.dlq" x-cloak>0</span></td><td class="table-actions"><button class="btn danger sm" type="button" :aria-label="'Purge queue ' + q.short" @click="askOp('purge-queue:' + q.short, q.short, 'purge the ' + q.short + ' queue')">Purge</button></td></tr></template></tbody></table><div class="empty" @show="rows().length === 0" x-cloak><strong>No queues configured</strong><span>Add a queue definition to the serverless application to process background jobs.</span></div></div></div><div class="section"><h2>Dead-letter queue</h2><div class="panel"><div class="filters"><div class="select-filter"><span>Redrive into</span><select :value="target()" @change="target.set($event.target.value)"><template :for="n in queueNames"><option :value="n">{{ n }}</option></template></select></div><div class="row-actions"><button class="btn ghost sm" type="button" :disabled="busy()" @click="loadDlq()">Refresh</button><button class="btn ghost sm" type="button" :disabled="busy()" @click="askOp('redrive', target(), 'move DLQ messages into ' + target(), 'redrive')">Redrive</button><button class="btn danger sm" type="button" :disabled="busy()" @click="askOp('purge-dlq', 'dead-letter queue', 'permanently purge the dead-letter queue', 'purge')">Purge DLQ</button></div></div><table @show="dlq().length > 0" x-cloak><thead><tr><th scope="col">Message ID</th><th scope="col">Body</th></tr></thead><tbody><template :for="m in dlq()"><tr><td class="mono" style="font-size:11px" x-cloak>{{ m.id }}</td><td class="mono" style="font-size:11px;color:var(--txt2);max-width:640px;overflow:hidden;text-overflow:ellipsis" x-cloak>{{ m.body }}</td></tr></template></tbody></table><div class="compact empty" @show="dlqLoaded() && dlq().length === 0 && !dlqMsg()" x-cloak><strong>No failed messages</strong><span>The dead-letter queue is empty.</span></div><p class="note" @show="dlqMsg() !== ''" x-cloak>{{ dlqMsg() }}</p><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><p class="note">Redrive receives messages from the DLQ and re-sends them to the selected source queue (peeked messages stay put). Purge is irreversible.</p></div></div></div></body></html>
@@ -1,5 +1,5 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="muw2r2b6hpfy3w"><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 · Secrets</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_1791254623102_34() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="muwwdcvnh74pil"><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 · Secrets</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_1791304372126_35() {
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, 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 initialSecrets = [{"key":"APP_KEY","source":"acme/production/app-key","updated":"14d ago"},{"key":"DB_PASSWORD","source":"acme/production/db","updated":"14d ago"},{"key":"STRIPE_SECRET","source":"acme/production/stripe","updated":"3d ago"},{"key":"MAIL_PASSWORD","source":"acme/production/mail","updated":"21d ago"}];
@@ -204,9 +204,9 @@ typed = __stxBundle_3cab4dcb7f42["typed"];
204
204
  value = __stxBundle_3cab4dcb7f42["value"];
205
205
  return { askDelete, askOp, busy, canRun, cancelOp, confirmDanger, confirmLabel, confirmTok, confirmVerb, msg, msgOk, opOutput, opShown, pending, pickSource, refresh, requestSetSecret, rows, runOp, secretId, setSecret, typed, value, __stxBundle_3cab4dcb7f42 };
206
206
  }
207
- window.__stx_latestSetup=__stx_setup_1791254623102_34;
208
- if(window.stx)window.stx._latestSetup=__stx_setup_1791254623102_34;
209
- </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_1791254623102_34"><a data-stx-scope="stx_scope_nav_43" 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">
207
+ window.__stx_latestSetup=__stx_setup_1791304372126_35;
208
+ if(window.stx)window.stx._latestSetup=__stx_setup_1791304372126_35;
209
+ </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_1791304372126_35"><a data-stx-scope="stx_scope_nav_48" 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">
210
210
  (function() {
211
211
  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;
212
212
  var __destroyHooks = [];
@@ -557,6 +557,6 @@ if(window.stx)window.stx._latestSetup=__stx_setup_1791254623102_34;
557
557
 
558
558
 
559
559
  try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
560
- window.stx._scopes['stx_scope_nav_43'] = __scopeRegistration;
560
+ window.stx._scopes['stx_scope_nav_48'] = __scopeRegistration;
561
561
  })();
562
562
  </script> <div class="wrap"><div class="crumbs"><a href="/serverless">Serverless</a><span class="sep">/</span> Secrets</div><header class="page"><div><h1>Secrets</h1><p>Stored in AWS Secrets Manager and injected into the functions at deploy. Values are write-only and never displayed.</p></div></header><div class="section"><div class="panel"><table><thead><tr><th scope="col">Key</th><th scope="col">Secret source</th><th scope="col">Value</th><th scope="col">Updated</th><th scope="col" class="table-actions">Actions</th></tr></thead><tbody><template :for="s in rows()"><tr><td class="mono" x-cloak><b x-cloak>{{ s.key }}</b></td><td class="mono" style="color:var(--txt3)" x-cloak>{{ s.source ?? s.secretId }}</td><td class="mono" style="letter-spacing:2px;color:var(--txt3)">••••••••</td><td style="color:var(--txt3)" x-cloak>{{ s.updated ?? '-' }}</td><td class="table-actions"><div class="row-actions" style="justify-content:flex-end"><button class="btn ghost sm" type="button" :aria-label="'Set value for ' + (s.source ?? s.secretId)" @click="pickSource(s.source ?? s.secretId)">Set value</button><button class="btn danger sm" type="button" :aria-label="'Delete ' + (s.source ?? s.secretId)" @click="askDelete(s.source ?? s.secretId)">Delete</button></div></td></tr></template><tr @show="rows().length === 0" x-cloak><td colspan="5"><div class="compact empty"><strong>No secrets referenced</strong><span>Add secrets under <span class="mono">app.secrets</span> in your cloud config, then set their values here.</span></div></td></tr></tbody></table><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><div class="section"><h2>Set a secret value</h2><div class="panel"><div class="form-grid"><div class="field-block"><label for="secret-id">Secret id (source path)</label><input id="secret-id" :value="secretId()" @input="secretId.set($event.target.value)" placeholder="acme/production/stripe" autocomplete="off"></div><div class="field-block"><label for="secret-value">Value (write-only)</label><input id="secret-value" type="password" :value="value()" @input="value.set($event.target.value)" placeholder="new secret value" autocomplete="off"></div><div class="form-actions"><button class="btn" type="button" :disabled="busy()" @click="requestSetSecret()">Save secret</button><span class="msg" :class="{ ok: msgOk(), bad: msg() && !msgOk() }" x-cloak>{{ msg() }}</span></div></div><p class="note">Setting a value creates the Secrets Manager entry if it does not exist. The new value is injected into the functions on the next <span class="mono">cloud deploy:serverless</span>.</p></div></div></div></body></html>
@@ -1,5 +1,5 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="muw2r2b6hpfy3w"><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_1791254623100_32() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="muwwdcvnh74pil"><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_1791304372067_32() {
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_1791254623100_32;
46
- if(window.stx)window.stx._latestSetup=__stx_setup_1791254623100_32;
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_1791254623100_32"><a data-stx-scope="stx_scope_nav_49" 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_1791304372067_32;
46
+ if(window.stx)window.stx._latestSetup=__stx_setup_1791304372067_32;
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_1791304372067_32"><a data-stx-scope="stx_scope_nav_49" 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="muw2r2b6hpfy3w"><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_1791254623667_36() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="muwwdcvnh74pil"><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_1791304372651_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_1791254623667_36;
184
- if(window.stx)window.stx._latestSetup=__stx_setup_1791254623667_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_1791254623667_36"><a data-stx-scope="stx_scope_nav_51" 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_1791304372651_36;
184
+ if(window.stx)window.stx._latestSetup=__stx_setup_1791304372651_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_1791304372651_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_1791254623667_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_51'] = __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.39",
4
+ "version": "0.16.41",
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.39",
106
- "@ts-cloud/core": "0.16.39",
105
+ "@ts-cloud/aws-types": "0.16.41",
106
+ "@ts-cloud/core": "0.16.41",
107
107
  "hash-wasm": "^4.12.0"
108
108
  },
109
109
  "devDependencies": {
@@ -1 +0,0 @@
1
- import{ni}from"./chunk-4h60xsat.js";import"./chunk-sqmays54.js";import"./chunk-48nz63ab.js";import"./chunk-wga7gj0h.js";import"./chunk-e6mfcw0v.js";import"./chunk-0ynfqf9t.js";import"./chunk-tt3m3fda.js";import"./chunk-dmwfnbg0.js";import"./chunk-q8hp4dfy.js";import"./chunk-55cckkb2.js";export{ni as resolveDashboardData};
@@ -1 +0,0 @@
1
- import{Q}from"./chunk-dnmb3sr0.js";import"./chunk-dmwfnbg0.js";export{Q as EC2Client};
@@ -1 +0,0 @@
1
- import{W,So}from"./chunk-w8jfw39t.js";import"./chunk-gc8p1tdr.js";import"./chunk-dmwfnbg0.js";export{W as ACMClient,So as ACMDnsValidator};
@@ -1 +0,0 @@
1
- import{Vd,Mc,zd,vo,Co,To,Ps}from"./chunk-cqhtnsby.js";import"./chunk-q8hp4dfy.js";import"./chunk-55cckkb2.js";export{Vd as MANAGEMENT_DASHBOARD_SITE,Ps as buildManagementDashboardArtifact,Mc as dashboardCredentialsFile,Co as ensureManagementDashboard,To as managementDashboardSiteNames,zd as resolveDashboardAuth,vo as resolveUiSource};
@@ -1 +0,0 @@
1
- import{ai}from"./chunk-pyr0dc6j.js";import"./chunk-dnmb3sr0.js";import"./chunk-cqhtnsby.js";import"./chunk-0ynfqf9t.js";import"./chunk-ygsdntxq.js";import"./chunk-tt3m3fda.js";import"./chunk-dmwfnbg0.js";import"./chunk-q8hp4dfy.js";import"./chunk-55cckkb2.js";export{ai as resolveServerDashboardData};
@@ -1 +0,0 @@
1
- import{Ai,qd,Wd,$o,u,D,Qs}from"./chunk-dmwfnbg0.js";export{u as AWSClient,D as buildQueryParams,Wd as canonicalUriFor,$o as coerceXmlValues,Qs as detectCredentialSource,Ai as resolveS3Endpoint,qd as signingNameFor};
@@ -1 +0,0 @@
1
- import{_p}from"./chunk-d8x60kvn.js";import"./chunk-c7z8et78.js";import"./chunk-e6mfcw0v.js";import"./chunk-dmwfnbg0.js";import"./chunk-q8hp4dfy.js";import"./chunk-55cckkb2.js";export{_p as buildAndPushServerlessImage};
@@ -1 +0,0 @@
1
- import{jp,nn,ro,se,Vp,bc,Td,ps,zp,Hp,Gp,Sc,no,ms,vc,on,br,qp,gi,Wp,Cc,Ed,wd,gs,Tc,Ec,Sr,io,vr,wc,fs,fi,Ad,oo,Ac,Rc,so,Rd,Ic,Pc,Dc,Nc,hs,Id,Pd,Kp,Dd,kc,ao,Nd,kd,ys,Lt,bs,Ss,vs,xc,xd,_c,Cs,Jp,ht,Xp,Oc,Mt,$c,Qp,Lc,_d,Yp,ee,Od,Ts,Zp,co,hi,yi,Es,$d,Ld,em,ws,As}from"./chunk-e0kapeev.js";import"./chunk-6r5mehaj.js";import"./chunk-q8hp4dfy.js";import"./chunk-55cckkb2.js";export{ys as AnomalyConfigStore,$d as AwsSpendTransport,Ld as ComputeSpendTransport,gs as CounterTracker,Cc as DEFAULT_METER_MAPPINGS,Sc as DEFAULT_PRICE_BOOK,io as DEFAULT_THRESHOLDS,Lt as DETECTABLE_SIGNALS,ro as ENFORCEMENT_ACTIONS,so as ENFORCEMENT_DESCRIPTIONS,se as ENFORCEMENT_SEVERITY,xd as FOCUS_VERSION,nn as METERS,jp as METER_KEYS,Vp as MICRO_CENTS,Ad as MIN_PROJECTION_CONFIDENCE,_d as RecordingSpendTransport,Nd as SENSITIVITY_THRESHOLDS,yi as SPEND_CYCLE_SECONDS,Oc as SPEND_GATE_SETTING,Zp as SPEND_LEASE_SETTING,Ss as SignalSource,$c as SpendCapError,Mt as SpendGate,co as SpendLoopLease,Ts as SpendNotificationRouter,hi as SpendRunner,ht as SpendService,vr as SpendStore,Yp as URGENT_SPEND_EVENTS,Rd as USER_VISIBLE_ACTIONS,Ec as aggregateDeltas,ao as anomalyOptionsForSignal,Qp as assertSpendAllows,br as budgetWindow,em as compositeSpendTransport,Lc as createEnforcementHandlers,Dd as detectAnomalies,kc as detectLatestAnomaly,Ac as evaluateBudget,Kp as ewma,Ed as findMapping,Td as findPriceEntry,ee as formatCents,fi as formatTimeToExhaustion,oo as governingLimitCents,ws as handleSpendRequest,gi as hourBucket,Wp as hourBucketsBetween,Nc as isOperationAllowed,no as isValidTimeZone,xc as lookbackHoursForSignal,hs as median,Id as medianAbsoluteDeviation,Rc as mergeDecisions,Gp as mergePriceBooks,Tc as meterTelemetry,vs as optionsForSignal,fs as percentOfLimit,Ic as planEnforcement,qp as previousBudgetWindow,ps as priceUsage,zp as priceUsageLines,wc as projectSpend,Pd as robustZScore,Hp as roundCents,kd as routeMatches,Pc as runEnforcement,Sr as scopeKey,bs as signalDefinition,Od as spendNotificationText,As as spendOpenApiPaths,Es as startSpendLoop,Jp as streamFocusJsonl,Dc as strongestActiveAction,bc as tieredMicroCents,Cs as toFocusJsonl,_c as toFocusRecords,wd as usageDeltaKey,on as utcInstantOfLocal,Xp as zeroFill,vc as zoneOffsetMs,ms as zonedParts};
@@ -1,2 +0,0 @@
1
- function _(n,r){return(n?.[`${r}Response`]??n)?.[`${r}Result`]}function k(n){if(n===void 0||n===null||n==="")return[];return Array.isArray(n)?n:[n]}function Xs(n){return n===!0||n==="true"}
2
- export{_,k,Xs};
@@ -1 +0,0 @@
1
- import{lt}from"./chunk-r0yapyqc.js";import"./chunk-dmwfnbg0.js";export{lt as STSClient};
@@ -1 +0,0 @@
1
- import{bt,Hd,Ds,Eo,rm,Ns,ks,wo,Bt,nm,Gd,im,om,z,xs,sm}from"./chunk-48nz63ab.js";import"./chunk-wga7gj0h.js";import"./chunk-e6mfcw0v.js";import"./chunk-0ynfqf9t.js";import"./chunk-tt3m3fda.js";import"./chunk-dmwfnbg0.js";import"./chunk-q8hp4dfy.js";import"./chunk-55cckkb2.js";export{Eo as assertEnvWithinLimit,Ds as buildFunctionEnv,rm as deployServerlessApp,im as getCommandRecord,Hd as infraEnvFromOutputs,Gd as listCommandHistory,Ns as redeployServerlessApp,bt as resolveServerlessFunctions,sm as restoreServerlessDatabase,ks as rollbackServerlessApp,nm as runAndRecordCommand,om as runDbQuery,Bt as runRemoteCommand,xs as scaleServerlessDatabase,z as serverlessInfo,wo as setMaintenance};
@@ -1,4 +0,0 @@
1
- import{u}from"./chunk-dmwfnbg0.js";class Q{client;region;constructor(e="us-east-1"){this.region=e,this.client=new u}async describeInstances(e){let t={Action:"DescribeInstances",Version:"2016-11-15"};if(e?.InstanceIds)e.InstanceIds.forEach((r,a)=>{t[`InstanceId.${a+1}`]=r});if(e?.Filters)e.Filters.forEach((r,a)=>{t[`Filter.${a+1}.Name`]=r.Name,r.Values.forEach((i,c)=>{t[`Filter.${a+1}.Value.${c+1}`]=i})});if(e?.MaxResults)t.MaxResults=String(e.MaxResults);if(e?.NextToken)t.NextToken=e.NextToken;let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()}),n=s.DescribeInstancesResponse||s;return{Reservations:this.parseReservations(n.reservationSet?.item),NextToken:n.nextToken}}async getInstance(e){return(await this.describeInstances({InstanceIds:[e]})).Reservations?.[0]?.Instances?.[0]}async getConsoleOutput(e,t){let s={Action:"GetConsoleOutput",Version:"2016-11-15",InstanceId:e};if(t)s.Latest="true";let n=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(s).toString()}),r=n.GetConsoleOutputResponse||n;return{InstanceId:r.instanceId,Output:r.output,Timestamp:r.timestamp}}async getConsoleOutputDecoded(e,t){let s=await this.getConsoleOutput(e,t?.latest);if(!s.Output)return"No console output available yet";let n=Buffer.from(s.Output,"base64").toString("utf-8");if(t?.tailLines)return n.split(`
2
- `).slice(-t.tailLines).join(`
3
- `);return n}async describeInstanceStatus(e){let t={Action:"DescribeInstanceStatus",Version:"2016-11-15"};if(e?.InstanceIds)e.InstanceIds.forEach((n,r)=>{t[`InstanceId.${r+1}`]=n});if(e?.IncludeAllInstances)t.IncludeAllInstances="true";if(e?.Filters)e.Filters.forEach((n,r)=>{t[`Filter.${r+1}.Name`]=n.Name,n.Values.forEach((a,i)=>{t[`Filter.${r+1}.Value.${i+1}`]=a})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{InstanceStatuses:this.parseArray(s.instanceStatusSet?.item).map((n)=>({InstanceId:n.instanceId,InstanceState:n.instanceState?{Code:Number.parseInt(n.instanceState.code),Name:n.instanceState.name}:void 0,InstanceStatus:n.instanceStatus?{Status:n.instanceStatus.status,Details:this.parseArray(n.instanceStatus.details?.item).map((r)=>({Name:r.name,Status:r.status}))}:void 0,SystemStatus:n.systemStatus?{Status:n.systemStatus.status,Details:this.parseArray(n.systemStatus.details?.item).map((r)=>({Name:r.name,Status:r.status}))}:void 0}))}}async startInstances(e){let t={Action:"StartInstances",Version:"2016-11-15"};e.forEach((n,r)=>{t[`InstanceId.${r+1}`]=n});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{StartingInstances:this.parseArray(s.instancesSet?.item).map((n)=>({InstanceId:n.instanceId,CurrentState:n.currentState?{Name:n.currentState.name}:void 0,PreviousState:n.previousState?{Name:n.previousState.name}:void 0}))}}async stopInstances(e,t){let s={Action:"StopInstances",Version:"2016-11-15"};if(e.forEach((r,a)=>{s[`InstanceId.${a+1}`]=r}),t)s.Force="true";let n=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(s).toString()});return{StoppingInstances:this.parseArray(n.instancesSet?.item).map((r)=>({InstanceId:r.instanceId,CurrentState:r.currentState?{Name:r.currentState.name}:void 0,PreviousState:r.previousState?{Name:r.previousState.name}:void 0}))}}async rebootInstances(e){let t={Action:"RebootInstances",Version:"2016-11-15"};e.forEach((s,n)=>{t[`InstanceId.${n+1}`]=s}),await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()})}async terminateInstances(e){let t={Action:"TerminateInstances",Version:"2016-11-15"};e.forEach((n,r)=>{t[`InstanceId.${r+1}`]=n});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{TerminatingInstances:this.parseArray(s.instancesSet?.item).map((n)=>({InstanceId:n.instanceId,CurrentState:n.currentState?{Name:n.currentState.name}:void 0,PreviousState:n.previousState?{Name:n.previousState.name}:void 0}))}}async createImage(e){let t={Action:"CreateImage",Version:"2016-11-15",InstanceId:e.InstanceId,Name:e.Name};if(e.Description)t.Description=e.Description;if(e.NoReboot!==void 0)t.NoReboot=String(e.NoReboot);if(e.TagSpecifications)e.TagSpecifications.forEach((r,a)=>{t[`TagSpecification.${a+1}.ResourceType`]=r.ResourceType,r.Tags.forEach((i,c)=>{t[`TagSpecification.${a+1}.Tag.${c+1}.Key`]=i.Key,t[`TagSpecification.${a+1}.Tag.${c+1}.Value`]=i.Value})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{ImageId:(s.CreateImageResponse||s).imageId}}async deregisterImage(e){await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({Action:"DeregisterImage",Version:"2016-11-15",ImageId:e}).toString()})}async describeVpcs(e){let t={Action:"DescribeVpcs",Version:"2016-11-15"};if(e?.VpcIds)e.VpcIds.forEach((n,r)=>{t[`VpcId.${r+1}`]=n});if(e?.Filters)e.Filters.forEach((n,r)=>{t[`Filter.${r+1}.Name`]=n.Name,n.Values.forEach((a,i)=>{t[`Filter.${r+1}.Value.${i+1}`]=a})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{Vpcs:this.parseArray(s.vpcSet?.item).map((n)=>({VpcId:n.vpcId,CidrBlock:n.cidrBlock,State:n.state,DhcpOptionsId:n.dhcpOptionsId,InstanceTenancy:n.instanceTenancy,IsDefault:n.isDefault==="true",Tags:this.parseTags(n.tagSet?.item)}))}}async describeSubnets(e){let t={Action:"DescribeSubnets",Version:"2016-11-15"};if(e?.SubnetIds)e.SubnetIds.forEach((n,r)=>{t[`SubnetId.${r+1}`]=n});if(e?.Filters)e.Filters.forEach((n,r)=>{t[`Filter.${r+1}.Name`]=n.Name,n.Values.forEach((a,i)=>{t[`Filter.${r+1}.Value.${i+1}`]=a})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{Subnets:this.parseArray(s.subnetSet?.item).map((n)=>({SubnetId:n.subnetId,VpcId:n.vpcId,CidrBlock:n.cidrBlock,AvailabilityZone:n.availabilityZone,AvailableIpAddressCount:Number.parseInt(n.availableIpAddressCount),State:n.state,MapPublicIpOnLaunch:n.mapPublicIpOnLaunch==="true",Tags:this.parseTags(n.tagSet?.item)}))}}async describeSecurityGroups(e){let t={Action:"DescribeSecurityGroups",Version:"2016-11-15"};if(e?.GroupIds)e.GroupIds.forEach((n,r)=>{t[`GroupId.${r+1}`]=n});if(e?.GroupNames)e.GroupNames.forEach((n,r)=>{t[`GroupName.${r+1}`]=n});if(e?.Filters)e.Filters.forEach((n,r)=>{t[`Filter.${r+1}.Name`]=n.Name,n.Values.forEach((a,i)=>{t[`Filter.${r+1}.Value.${i+1}`]=a})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{SecurityGroups:this.parseArray(s.securityGroupInfo?.item).map((n)=>({GroupId:n.groupId,GroupName:n.groupName,Description:n.groupDescription,VpcId:n.vpcId,IpPermissions:this.parseIpPermissions(n.ipPermissions?.item),IpPermissionsEgress:this.parseIpPermissions(n.ipPermissionsEgress?.item),Tags:this.parseTags(n.tagSet?.item)}))}}async describeInternetGateways(e){let t={Action:"DescribeInternetGateways",Version:"2016-11-15"};if(e?.InternetGatewayIds)e.InternetGatewayIds.forEach((n,r)=>{t[`InternetGatewayId.${r+1}`]=n});if(e?.Filters)e.Filters.forEach((n,r)=>{t[`Filter.${r+1}.Name`]=n.Name,n.Values.forEach((a,i)=>{t[`Filter.${r+1}.Value.${i+1}`]=a})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{InternetGateways:this.parseArray(s.internetGatewaySet?.item).map((n)=>({InternetGatewayId:n.internetGatewayId,Attachments:this.parseArray(n.attachmentSet?.item).map((r)=>({VpcId:r.vpcId,State:r.state})),Tags:this.parseTags(n.tagSet?.item)}))}}async describeAddresses(e){let t={Action:"DescribeAddresses",Version:"2016-11-15"};if(e?.AllocationIds)e.AllocationIds.forEach((n,r)=>{t[`AllocationId.${r+1}`]=n});if(e?.PublicIps)e.PublicIps.forEach((n,r)=>{t[`PublicIp.${r+1}`]=n});if(e?.Filters)e.Filters.forEach((n,r)=>{t[`Filter.${r+1}.Name`]=n.Name,n.Values.forEach((a,i)=>{t[`Filter.${r+1}.Value.${i+1}`]=a})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{Addresses:this.parseArray(s.addressesSet?.item).map((n)=>({PublicIp:n.publicIp,AllocationId:n.allocationId,AssociationId:n.associationId,InstanceId:n.instanceId,NetworkInterfaceId:n.networkInterfaceId,PrivateIpAddress:n.privateIpAddress,Domain:n.domain,Tags:this.parseTags(n.tagSet?.item)}))}}async allocateAddress(e){let t={Action:"AllocateAddress",Version:"2016-11-15"};if(e?.Domain)t.Domain=e.Domain;if(e?.TagSpecifications)e.TagSpecifications.forEach((n,r)=>{t[`TagSpecification.${r+1}.ResourceType`]=n.ResourceType,n.Tags.forEach((a,i)=>{t[`TagSpecification.${r+1}.Tag.${i+1}.Key`]=a.Key,t[`TagSpecification.${r+1}.Tag.${i+1}.Value`]=a.Value})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{AllocationId:s.allocationId,PublicIp:s.publicIp,Domain:s.domain}}async associateAddress(e){let t={Action:"AssociateAddress",Version:"2016-11-15"};if(e.AllocationId)t.AllocationId=e.AllocationId;if(e.PublicIp)t.PublicIp=e.PublicIp;if(e.InstanceId)t.InstanceId=e.InstanceId;if(e.NetworkInterfaceId)t.NetworkInterfaceId=e.NetworkInterfaceId;if(e.PrivateIpAddress)t.PrivateIpAddress=e.PrivateIpAddress;if(e.AllowReassociation)t.AllowReassociation="true";return{AssociationId:(await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()})).associationId}}async createTags(e){let t={Action:"CreateTags",Version:"2016-11-15"};e.Resources.forEach((s,n)=>{t[`ResourceId.${n+1}`]=s}),e.Tags.forEach((s,n)=>{t[`Tag.${n+1}.Key`]=s.Key,t[`Tag.${n+1}.Value`]=s.Value}),await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()})}async waitForInstanceState(e,t,s){let n=s?.maxWaitMs||300000,r=s?.pollIntervalMs||5000,a=Date.now();while(Date.now()-a<n){let i;try{i=await this.getInstance(e)}catch{i=void 0}if(i?.State?.Name===t)return i;await new Promise((c)=>setTimeout(c,r))}return}async createVpc(e){let t={Action:"CreateVpc",Version:"2016-11-15",CidrBlock:e.CidrBlock};if(e.InstanceTenancy)t.InstanceTenancy=e.InstanceTenancy;if(e.TagSpecifications)e.TagSpecifications.forEach((a,i)=>{t[`TagSpecification.${i+1}.ResourceType`]=a.ResourceType,a.Tags.forEach((c,o)=>{t[`TagSpecification.${i+1}.Tag.${o+1}.Key`]=c.Key,t[`TagSpecification.${i+1}.Tag.${o+1}.Value`]=c.Value})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()}),r=(s.CreateVpcResponse||s).vpc;return{Vpc:r?{VpcId:r.vpcId,CidrBlock:r.cidrBlock,State:r.state,DhcpOptionsId:r.dhcpOptionsId,InstanceTenancy:r.instanceTenancy,IsDefault:r.isDefault==="true",Tags:this.parseTags(r.tagSet?.item)}:void 0}}async createSubnet(e){let t={Action:"CreateSubnet",Version:"2016-11-15",VpcId:e.VpcId,CidrBlock:e.CidrBlock};if(e.AvailabilityZone)t.AvailabilityZone=e.AvailabilityZone;if(e.TagSpecifications)e.TagSpecifications.forEach((a,i)=>{t[`TagSpecification.${i+1}.ResourceType`]=a.ResourceType,a.Tags.forEach((c,o)=>{t[`TagSpecification.${i+1}.Tag.${o+1}.Key`]=c.Key,t[`TagSpecification.${i+1}.Tag.${o+1}.Value`]=c.Value})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()}),r=(s.CreateSubnetResponse||s).subnet;return{Subnet:r?{SubnetId:r.subnetId,VpcId:r.vpcId,CidrBlock:r.cidrBlock,AvailabilityZone:r.availabilityZone,AvailableIpAddressCount:r.availableIpAddressCount?Number.parseInt(r.availableIpAddressCount):void 0,State:r.state,MapPublicIpOnLaunch:r.mapPublicIpOnLaunch==="true",Tags:this.parseTags(r.tagSet?.item)}:void 0}}async modifySubnetAttribute(e){let t={Action:"ModifySubnetAttribute",Version:"2016-11-15",SubnetId:e.SubnetId};if(e.MapPublicIpOnLaunch!==void 0)t["MapPublicIpOnLaunch.Value"]=String(e.MapPublicIpOnLaunch.Value);await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()})}async createSecurityGroup(e){let t={Action:"CreateSecurityGroup",Version:"2016-11-15",GroupName:e.GroupName,GroupDescription:e.Description};if(e.VpcId)t.VpcId=e.VpcId;if(e.TagSpecifications)e.TagSpecifications.forEach((r,a)=>{t[`TagSpecification.${a+1}.ResourceType`]=r.ResourceType,r.Tags.forEach((i,c)=>{t[`TagSpecification.${a+1}.Tag.${c+1}.Key`]=i.Key,t[`TagSpecification.${a+1}.Tag.${c+1}.Value`]=i.Value})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()});return{GroupId:(s.CreateSecurityGroupResponse||s).groupId}}async authorizeSecurityGroupIngress(e){let t={Action:"AuthorizeSecurityGroupIngress",Version:"2016-11-15",GroupId:e.GroupId};this.encodeIpPermissions(t,e.IpPermissions),await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()})}async authorizeSecurityGroupEgress(e){let t={Action:"AuthorizeSecurityGroupEgress",Version:"2016-11-15",GroupId:e.GroupId};this.encodeIpPermissions(t,e.IpPermissions),await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()})}async describeRouteTables(e){let t={Action:"DescribeRouteTables",Version:"2016-11-15"};if(e?.RouteTableIds)e.RouteTableIds.forEach((r,a)=>{t[`RouteTableId.${a+1}`]=r});if(e?.Filters)e.Filters.forEach((r,a)=>{t[`Filter.${a+1}.Name`]=r.Name,r.Values.forEach((i,c)=>{t[`Filter.${a+1}.Value.${c+1}`]=i})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()}),n=s.DescribeRouteTablesResponse||s;return{RouteTables:this.parseArray(n.routeTableSet?.item).map((r)=>({RouteTableId:r.routeTableId,VpcId:r.vpcId,Routes:this.parseArray(r.routeSet?.item).map((a)=>({DestinationCidrBlock:a.destinationCidrBlock,GatewayId:a.gatewayId,NatGatewayId:a.natGatewayId,State:a.state})),Associations:this.parseArray(r.associationSet?.item).map((a)=>({RouteTableAssociationId:a.routeTableAssociationId,SubnetId:a.subnetId,Main:a.main==="true"||a.main===!0})),Tags:this.parseTags(r.tagSet?.item)}))}}async deleteVpc(e){let t={Action:"DeleteVpc",Version:"2016-11-15",VpcId:e};await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()})}async deleteSubnet(e){let t={Action:"DeleteSubnet",Version:"2016-11-15",SubnetId:e};await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()})}async deleteSecurityGroup(e){await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({Action:"DeleteSecurityGroup",Version:"2016-11-15",GroupId:e}).toString()})}async describeNetworkInterfaces(e){let t={Action:"DescribeNetworkInterfaces",Version:"2016-11-15"};if(e?.NetworkInterfaceIds)e.NetworkInterfaceIds.forEach((r,a)=>{t[`NetworkInterfaceId.${a+1}`]=r});if(e?.Filters)e.Filters.forEach((r,a)=>{t[`Filter.${a+1}.Name`]=r.Name,r.Values.forEach((i,c)=>{t[`Filter.${a+1}.Value.${c+1}`]=i})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()}),n=s.DescribeNetworkInterfacesResponse||s;return{NetworkInterfaces:this.parseArray(n.networkInterfaceSet?.item).map((r)=>({NetworkInterfaceId:r.networkInterfaceId,SubnetId:r.subnetId,VpcId:r.vpcId,Status:r.status,Attachment:r.attachment?{AttachmentId:r.attachment.attachmentId,InstanceId:r.attachment.instanceId,Status:r.attachment.status}:void 0}))}}async detachNetworkInterface(e,t){let s={Action:"DetachNetworkInterface",Version:"2016-11-15",AttachmentId:e};if(t)s.Force="true";await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(s).toString()})}async deleteNetworkInterface(e){let t={Action:"DeleteNetworkInterface",Version:"2016-11-15",NetworkInterfaceId:e};await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()})}async describeRegions(){let e={Action:"DescribeRegions",Version:"2016-11-15"},t=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(e).toString()}),s=t.DescribeRegionsResponse||t;return{Regions:this.parseArray(s.regionInfo?.item).map((n)=>({RegionName:n.regionName,Endpoint:n.regionEndpoint}))}}async runInstances(e){let t={Action:"RunInstances",Version:"2016-11-15",ImageId:e.ImageId,InstanceType:e.InstanceType,MinCount:String(e.MinCount),MaxCount:String(e.MaxCount)};if(e.SecurityGroupIds)e.SecurityGroupIds.forEach((r,a)=>{t[`SecurityGroupId.${a+1}`]=r});if(e.SubnetId)t.SubnetId=e.SubnetId;if(e.UserData)t.UserData=e.UserData;if(e.IamInstanceProfile){if(e.IamInstanceProfile.Name)t["IamInstanceProfile.Name"]=e.IamInstanceProfile.Name;if(e.IamInstanceProfile.Arn)t["IamInstanceProfile.Arn"]=e.IamInstanceProfile.Arn}if(e.TagSpecifications)e.TagSpecifications.forEach((r,a)=>{t[`TagSpecification.${a+1}.ResourceType`]=r.ResourceType,r.Tags.forEach((i,c)=>{t[`TagSpecification.${a+1}.Tag.${c+1}.Key`]=i.Key,t[`TagSpecification.${a+1}.Tag.${c+1}.Value`]=i.Value})});let s=await this.client.request({service:"ec2",region:this.region,method:"POST",path:"/",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t).toString()}),n=s.RunInstancesResponse||s;return{Instances:this.parseInstances(n.instancesSet?.item||n.instancesSet)}}encodeIpPermissions(e,t){t.forEach((s,n)=>{let r=`IpPermissions.${n+1}`;if(s.IpProtocol!==void 0)e[`${r}.IpProtocol`]=s.IpProtocol;if(s.FromPort!==void 0)e[`${r}.FromPort`]=String(s.FromPort);if(s.ToPort!==void 0)e[`${r}.ToPort`]=String(s.ToPort);if(s.IpRanges)s.IpRanges.forEach((a,i)=>{if(a.CidrIp)e[`${r}.IpRanges.${i+1}.CidrIp`]=a.CidrIp;if(a.Description)e[`${r}.IpRanges.${i+1}.Description`]=a.Description});if(s.Ipv6Ranges)s.Ipv6Ranges.forEach((a,i)=>{if(a.CidrIpv6)e[`${r}.Ipv6Ranges.${i+1}.CidrIpv6`]=a.CidrIpv6;if(a.Description)e[`${r}.Ipv6Ranges.${i+1}.Description`]=a.Description});if(s.UserIdGroupPairs)s.UserIdGroupPairs.forEach((a,i)=>{if(a.GroupId)e[`${r}.Groups.${i+1}.GroupId`]=a.GroupId;if(a.UserId)e[`${r}.Groups.${i+1}.UserId`]=a.UserId;if(a.Description)e[`${r}.Groups.${i+1}.Description`]=a.Description})})}parseArray(e){if(!e)return[];return Array.isArray(e)?e:[e]}parseFirstIpv6Address(e){for(let t of this.parseArray(e))for(let s of this.parseArray(t?.ipv6AddressesSet?.item))if(s?.ipv6Address)return s.ipv6Address;return}parseTags(e){return this.parseArray(e).map((t)=>({Key:t.key,Value:t.value}))}parseReservations(e){return this.parseArray(e).map((t)=>({ReservationId:t.reservationId,Instances:this.parseInstances(t.instancesSet?.item||t.instancesSet)}))}parseInstances(e){return this.parseArray(e).map((t)=>({InstanceId:t.instanceId,ImageId:t.imageId,InstanceType:t.instanceType,State:t.instanceState?{Code:Number.parseInt(t.instanceState.code),Name:t.instanceState.name}:void 0,PrivateIpAddress:t.privateIpAddress,PublicIpAddress:t.ipAddress,Ipv6Address:this.parseFirstIpv6Address(t.networkInterfaceSet?.item),SubnetId:t.subnetId,VpcId:t.vpcId,SecurityGroups:this.parseArray(t.groupSet?.item).map((s)=>({GroupId:s.groupId,GroupName:s.groupName})),Tags:this.parseTags(t.tagSet?.item),LaunchTime:t.launchTime,Placement:t.placement?{AvailabilityZone:t.placement.availabilityZone,Tenancy:t.placement.tenancy}:void 0,Architecture:t.architecture,RootDeviceType:t.rootDeviceType,RootDeviceName:t.rootDeviceName,BlockDeviceMappings:this.parseArray(t.blockDeviceMapping?.item).map((s)=>({DeviceName:s.deviceName,Ebs:s.ebs?{VolumeId:s.ebs.volumeId,Status:s.ebs.status,AttachTime:s.ebs.attachTime,DeleteOnTermination:s.ebs.deleteOnTermination==="true"}:void 0})),IamInstanceProfile:t.iamInstanceProfile?{Arn:t.iamInstanceProfile.arn,Id:t.iamInstanceProfile.id}:void 0}))}parseIpPermissions(e){return this.parseArray(e).map((t)=>({IpProtocol:t.ipProtocol,FromPort:t.fromPort?Number.parseInt(t.fromPort):void 0,ToPort:t.toPort?Number.parseInt(t.toPort):void 0,IpRanges:this.parseArray(t.ipRanges?.item).map((s)=>({CidrIp:s.cidrIp,Description:s.description})),Ipv6Ranges:this.parseArray(t.ipv6Ranges?.item).map((s)=>({CidrIpv6:s.cidrIpv6,Description:s.description})),UserIdGroupPairs:this.parseArray(t.groups?.item).map((s)=>({GroupId:s.groupId,UserId:s.userId,Description:s.description}))}))}}
4
- export{Q};
@@ -1 +0,0 @@
1
- import{Rr,Gc,qc,Tt,Ir,Pr,Dr,Nr,un}from"./chunk-hjq05rxh.js";import"./chunk-6r5mehaj.js";import"./chunk-q8hp4dfy.js";import"./chunk-55cckkb2.js";export{Ir as AwsSecretsManagerConfigurationBackend,Pr as AwsSsmConfigurationBackend,Nr as ConfigurationService,Rr as ConfigurationStore,Dr as ExternalConfigurationBackend,Tt as LocalEncryptedConfigurationBackend,Gc as parseDotenv,qc as serializeDotenv,un as synchronizeConfiguredConfiguration};
@@ -1 +0,0 @@
1
- import{ls}from"./chunk-7rpj0qhb.js";export{ls as encodeDashboardPayload};
@@ -1,6 +0,0 @@
1
- import{Xt}from"./chunk-qxg95ndf.js";var f={};Xt(f,{ProgressBar:()=>v,Spinner:()=>s,box:()=>ve,checkAwsCli:()=>_s,checkAwsCredentials:()=>Os,colorize:()=>jt,colors:()=>C,confirm:()=>d,error:()=>r,formatBytes:()=>an,formatDuration:()=>b,getAwsAccountId:()=>$s,getAwsRegions:()=>Ls,header:()=>i,info:()=>e,prompt:()=>R,select:()=>Ao,step:()=>p,success:()=>n,table:()=>c,warn:()=>a,warning:()=>Er});var C={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 jt(t,o){return`${C[o]}${t}${C.reset}`}function n(t){console.log(`${C.green}✓${C.reset} ${t}`)}function r(t){console.error(`${C.red}✗${C.reset} ${t}`)}function a(t){console.warn(`${C.yellow}⚠${C.reset} ${t}`)}var Er=a;function e(t){console.log(`${C.blue}ℹ${C.reset} ${t}`)}function p(t){console.log(`${C.cyan}→${C.reset} ${t}`)}function i(t){console.log(`
2
- ${C.bright}${C.cyan}${t}${C.reset}
3
- `)}var x=!!(process.env.CI||process.env.GITHUB_ACTIONS||process.env.BUILDKITE||process.env.CIRCLECI||process.env.GITLAB_CI);class s{frames=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];interval=null;currentFrame=0;message;constructor(t){this.message=t}get text(){return this.message}set text(t){if(this.message=t,x&&this.interval)console.log(` ${t}`)}start(){if(x){console.log(` ${this.message}`),this.interval=!0;return}this.interval=setInterval(()=>{process.stdout.write(`\r${C.cyan}${this.frames[this.currentFrame]}${C.reset} ${this.message}`),this.currentFrame=(this.currentFrame+1)%this.frames.length},80)}succeed(t){this.stop(),n(t||this.message)}fail(t){this.stop(),r(t||this.message)}warn(t){this.stop(),Er(t||this.message)}stop(){if(this.interval){if(!x)process.stdout.write("\r");if(typeof this.interval==="object")clearInterval(this.interval);this.interval=null}}}class v{total;current=0;width=40;constructor(t){this.total=t}update(t){this.current=t,this.render()}increment(){this.current++,this.render()}render(){let t=Math.floor(this.current/this.total*100),o=Math.floor(this.current/this.total*this.width),l=this.width-o,u=`${"█".repeat(o)}${"░".repeat(l)}`;if(process.stdout.write(`\r${C.cyan}${u}${C.reset} ${t}% (${this.current}/${this.total})`),this.current>=this.total)process.stdout.write(`
4
- `)}}async function R(t,o){let l=await import("node:readline"),u=l.createInterface({input:process.stdin,output:process.stdout});return new Promise((h)=>{let g=o?`${C.cyan}?${C.reset} ${t} ${C.gray}(${o})${C.reset}: `:`${C.cyan}?${C.reset} ${t}: `;u.question(g,(m)=>{u.close(),h(m||o||"")})})}async function d(t,o=!1){let l=await R(`${t} (y/n)`,o?"y":"n");return l.toLowerCase()==="y"||l.toLowerCase()==="yes"}async function Ao(t,o){console.log(`${C.cyan}?${C.reset} ${t}`),o.forEach((h,g)=>{console.log(` ${C.gray}${g+1}.${C.reset} ${h}`)});let l=await R("Select","1"),u=Number.parseInt(l)-1;if(u>=0&&u<o.length)return o[u];return o[0]}function c(t,o){let l=t.map((h,g)=>{let m=Math.max(...o.map((w)=>(w[g]||"").length));return Math.max(h.length,m)}),u=t.map((h,g)=>h.padEnd(l[g])).join(" ");console.log(jt(u,"bright")),console.log(jt("─".repeat(u.length),"gray")),o.forEach((h)=>{let g=h.map((m,w)=>(m||"").padEnd(l[w])).join(" ");console.log(g)})}function an(t){if(t===0)return"0 B";let o=1024,l=["B","KB","MB","GB","TB"],u=Math.floor(Math.log(t)/Math.log(o));return`${Number.parseFloat((t/o**u).toFixed(2))} ${l[u]}`}function b(t){if(t<1000)return`${t}ms`;let o=Math.floor(t/1000);if(o<60)return`${o}s`;let l=Math.floor(o/60),u=o%60;if(l<60)return`${l}m ${u}s`;let h=Math.floor(l/60),g=l%60;return`${h}h ${g}m`}function ve(t,o="cyan"){let l=t.split(`
5
- `),u=Math.max(...l.map((g)=>g.length)),h="─".repeat(u+2);console.log(jt(`┌${h}┐`,o)),l.forEach((g)=>{console.log(jt(`│ ${g.padEnd(u)} │`,o))}),console.log(jt(`└${h}┘`,o))}async function _s(){return!0}async function Os(){try{let{AWSClient:t}=await import("./chunk-7rkg1yph.js");return await new t().request({service:"sts",region:"us-east-1",method:"POST",path:"/",body:new URLSearchParams({Action:"GetCallerIdentity",Version:"2011-06-15"}).toString()}),!0}catch{return!1}}async function $s(){try{let{AWSClient:t}=await import("./chunk-7rkg1yph.js"),l=await new t().request({service:"sts",region:"us-east-1",method:"POST",path:"/",body:new URLSearchParams({Action:"GetCallerIdentity",Version:"2011-06-15"}).toString()});return l.Account||l.GetCallerIdentityResult?.Account||null}catch{return null}}async function Ls(){try{let{AWSClient:t}=await import("./chunk-7rkg1yph.js"),l=await new t().request({service:"ec2",region:"us-east-1",method:"POST",path:"/",body:new URLSearchParams({Action:"DescribeRegions",Version:"2016-11-15"}).toString()}),u=[];if(l.regionInfo){let h=Array.isArray(l.regionInfo)?l.regionInfo:[l.regionInfo];u.push(...h.map((g)=>g.regionName))}return u.length>0?u:y()}catch{return y()}}function y(){return["us-east-1","us-east-2","us-west-1","us-west-2","eu-west-1","eu-central-1","ap-southeast-1","ap-northeast-1"]}
6
- export{C,jt,n,r,a,Er,e,p,i,s,R,d,Ao,c,an,ve,_s,Os,$s,Ls,f};
@@ -1 +0,0 @@
1
- import{bd,Sd,vd,Cd,Op,$p}from"./chunk-0c1fv0xt.js";import"./chunk-w8jfw39t.js";import"./chunk-5wqjqh6c.js";import"./chunk-0ynfqf9t.js";import"./chunk-gc8p1tdr.js";import"./chunk-tt3m3fda.js";import"./chunk-dmwfnbg0.js";export{Op as deleteStaticSite,Sd as deployStaticSite,$p as deployStaticSiteFull,bd as generateStaticSiteTemplate,Cd as invalidateCache,vd as uploadStaticFiles};
@@ -1 +0,0 @@
1
- import{I}from"./chunk-wga7gj0h.js";import"./chunk-dmwfnbg0.js";export{I as LambdaClient};
@@ -1 +0,0 @@
1
- import{V}from"./chunk-sqmays54.js";import"./chunk-dmwfnbg0.js";export{V as SQSClient};
@@ -1 +0,0 @@
1
- import{g}from"./chunk-tt3m3fda.js";import"./chunk-dmwfnbg0.js";export{g as S3Client};
@@ -1 +0,0 @@
1
- import{Lp,Mp,Up,Fp}from"./chunk-4bp4k1x2.js";import"./chunk-tt3m3fda.js";import"./chunk-dmwfnbg0.js";import"./chunk-q8hp4dfy.js";import"./chunk-55cckkb2.js";export{Fp as deleteFailoverReplicaBuckets,Lp as ensureFailoverReplicaBuckets,Mp as grantFailoverReplicaAccess,Up as seedFailoverReplicas};
@@ -1 +0,0 @@
1
- import{Hc,lm}from"./chunk-8zn63v9h.js";import"./chunk-gc8p1tdr.js";import"./chunk-tt3m3fda.js";import"./chunk-dmwfnbg0.js";export{Hc as EmailClient,lm as email};