@stacksjs/ts-cloud 0.16.41 → 0.16.42

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 (126) hide show
  1. package/dist/aws/index.js +1 -1
  2. package/dist/bin/{chunk-cxcgqqdb.js → chunk-04s4mqs2.js} +1 -1
  3. package/dist/bin/chunk-26rf5dy2.js +1 -0
  4. package/dist/bin/{chunk-ky4xdskt.js → chunk-3hkppc7h.js} +1 -1
  5. package/dist/bin/{chunk-f8689v5g.js → chunk-3v2pd05g.js} +1 -1
  6. package/dist/bin/{chunk-45a8yv3j.js → chunk-5amvqed8.js} +3 -3
  7. package/dist/bin/{chunk-5dqnj5n9.js → chunk-5nc1g18b.js} +1 -1
  8. package/dist/bin/chunk-71ep1g7k.js +1 -0
  9. package/dist/bin/chunk-7fh7b8r1.js +1 -0
  10. package/dist/bin/{chunk-8e4ck7cg.js → chunk-8z4wgqkh.js} +1 -1
  11. package/dist/bin/{chunk-aptdpa3m.js → chunk-bj7ashn6.js} +1 -1
  12. package/dist/bin/{chunk-89hvgp5e.js → chunk-ce1qnjs2.js} +1 -1
  13. package/dist/bin/{chunk-x6w8jvs1.js → chunk-cqc4e8md.js} +1 -1
  14. package/dist/bin/{chunk-4azcshw6.js → chunk-dryvqne2.js} +1 -1
  15. package/dist/bin/{chunk-xe9p2q8f.js → chunk-erf79tm2.js} +26 -26
  16. package/dist/bin/{chunk-kzgt05w5.js → chunk-hfnpjy9y.js} +1 -1
  17. package/dist/bin/{chunk-e8jwnsee.js → chunk-jaexpxs8.js} +1 -1
  18. package/dist/bin/{chunk-040x6j9v.js → chunk-jh1vmant.js} +1 -1
  19. package/dist/bin/{chunk-5wx26yjy.js → chunk-kdsgbvep.js} +2 -2
  20. package/dist/bin/{chunk-c23r6gjb.js → chunk-kg3nbcfs.js} +1 -1
  21. package/dist/bin/{chunk-2b9e10db.js → chunk-knzje4ka.js} +1 -1
  22. package/dist/bin/{chunk-eaet154r.js → chunk-mgwmt2et.js} +1 -1
  23. package/dist/bin/chunk-nfb3ew1v.js +1 -0
  24. package/dist/bin/{chunk-ecd4swb7.js → chunk-nk7fqc8z.js} +2 -2
  25. package/dist/bin/{chunk-xq7ngz6q.js → chunk-pnj95hwr.js} +1 -1
  26. package/dist/bin/{chunk-grwth4nw.js → chunk-qj6tr7bw.js} +2 -2
  27. package/dist/bin/{chunk-f7jpzyhr.js → chunk-rsnmb1cd.js} +2 -2
  28. package/dist/bin/{chunk-a06d7cyt.js → chunk-sg8hcdev.js} +1 -1
  29. package/dist/bin/{chunk-ndf3t76p.js → chunk-t80pxn04.js} +17 -17
  30. package/dist/bin/{chunk-ddwp5np9.js → chunk-tf8qxy9k.js} +37 -37
  31. package/dist/bin/{chunk-p8xy9qm7.js → chunk-vjfwnj9z.js} +1 -1
  32. package/dist/bin/{chunk-p9baztvr.js → chunk-vn05n5z6.js} +1 -1
  33. package/dist/bin/{chunk-k0p394bn.js → chunk-xxe9ga9r.js} +1 -1
  34. package/dist/bin/cli.js +211 -211
  35. package/dist/bin/dashboard-server.js +1 -1
  36. package/dist/{chunk-qg03hfb6.js → chunk-13pfck91.js} +1 -1
  37. package/dist/{chunk-5n1y5ehd.js → chunk-bj4kvqwz.js} +97 -97
  38. package/dist/chunk-c9zjh5bx.js +1 -0
  39. package/dist/{chunk-mxprxjd4.js → chunk-ct72f70x.js} +2 -2
  40. package/dist/{chunk-ckqjqw4w.js → chunk-cv5e8c74.js} +61 -61
  41. package/dist/{chunk-yt6m703r.js → chunk-e3evn28t.js} +1 -1
  42. package/dist/{chunk-74yycwrd.js → chunk-epbe0p3n.js} +1 -1
  43. package/dist/{chunk-bfbahave.js → chunk-hc140wnm.js} +1 -1
  44. package/dist/{chunk-v6hysd5c.js → chunk-j1adw51p.js} +2 -2
  45. package/dist/{chunk-jaswfk6g.js → chunk-nqb7yefs.js} +1 -1
  46. package/dist/chunk-pahyn8p3.js +1 -0
  47. package/dist/{chunk-kexwq2h0.js → chunk-qztdtcc8.js} +1 -1
  48. package/dist/{chunk-ype3pqh5.js → chunk-vps4v353.js} +4 -4
  49. package/dist/{chunk-jbtnyhrh.js → chunk-xejwnb6f.js} +1 -1
  50. package/dist/{chunk-3w7q4sjs.js → chunk-zy0crzsb.js} +2 -2
  51. package/dist/deploy/index.js +1 -1
  52. package/dist/dns/index.js +1 -1
  53. package/dist/drivers/index.js +1 -1
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.js +26 -26
  56. package/dist/operations/index.js +1 -1
  57. package/dist/protection/index.js +1 -1
  58. package/dist/spend/index.js +1 -1
  59. package/dist/ui/404.html +1 -1
  60. package/dist/ui/accept-invitation.html +1 -1
  61. package/dist/ui/access-denied.html +1 -1
  62. package/dist/ui/account/automation.html +6 -6
  63. package/dist/ui/account/security.html +2 -2
  64. package/dist/ui/applications/compose.html +6 -6
  65. package/dist/ui/applications/new.html +2 -2
  66. package/dist/ui/data/backups.html +6 -6
  67. package/dist/ui/data/services.html +6 -6
  68. package/dist/ui/data/volumes.html +6 -6
  69. package/dist/ui/index.html +6 -6
  70. package/dist/ui/infrastructure/topology.html +5 -5
  71. package/dist/ui/integrations.html +2 -2
  72. package/dist/ui/operations/alerts.html +6 -6
  73. package/dist/ui/operations/configuration.html +6 -6
  74. package/dist/ui/operations/jobs.html +6 -6
  75. package/dist/ui/operations/maintenance.html +5 -5
  76. package/dist/ui/operations/observability.html +6 -6
  77. package/dist/ui/operations/previews.html +6 -6
  78. package/dist/ui/operations/queue.html +6 -6
  79. package/dist/ui/operations/regions.html +5 -5
  80. package/dist/ui/operations/releases.html +6 -6
  81. package/dist/ui/operations/spend.html +6 -6
  82. package/dist/ui/operations/workloads.html +6 -6
  83. package/dist/ui/security.html +2 -2
  84. package/dist/ui/server/actions.html +6 -6
  85. package/dist/ui/server/activity.html +1 -1
  86. package/dist/ui/server/capacity.html +6 -6
  87. package/dist/ui/server/database.html +6 -6
  88. package/dist/ui/server/deployments.html +6 -6
  89. package/dist/ui/server/diagnostics.html +2 -2
  90. package/dist/ui/server/firewall.html +6 -6
  91. package/dist/ui/server/fleet.html +6 -6
  92. package/dist/ui/server/logs.html +6 -6
  93. package/dist/ui/server/metrics.html +6 -6
  94. package/dist/ui/server/security.html +2 -2
  95. package/dist/ui/server/services.html +2 -2
  96. package/dist/ui/server/sites.html +6 -6
  97. package/dist/ui/server/ssh-keys.html +6 -6
  98. package/dist/ui/server/team.html +6 -6
  99. package/dist/ui/server/terminal.html +2 -2
  100. package/dist/ui/serverless/alarms.html +6 -6
  101. package/dist/ui/serverless/assets.html +1 -1
  102. package/dist/ui/serverless/cost.html +2 -2
  103. package/dist/ui/serverless/data.html +6 -6
  104. package/dist/ui/serverless/deployments.html +2 -2
  105. package/dist/ui/serverless/firewall.html +1 -1
  106. package/dist/ui/serverless/functions.html +6 -6
  107. package/dist/ui/serverless/logs.html +6 -6
  108. package/dist/ui/serverless/metrics.html +2 -2
  109. package/dist/ui/serverless/queues.html +6 -6
  110. package/dist/ui/serverless/secrets.html +6 -6
  111. package/dist/ui/serverless/traces.html +6 -6
  112. package/dist/ui/serverless.html +6 -6
  113. package/dist/workers/bundle.d.ts +27 -0
  114. package/dist/workers/bundle.test.d.ts +1 -0
  115. package/dist/workers/index.d.ts +11 -0
  116. package/dist/workers/provider.d.ts +215 -0
  117. package/dist/workers/provider.test.d.ts +1 -0
  118. package/dist/workers/reconcile.d.ts +99 -0
  119. package/dist/workers/reconcile.test.d.ts +1 -0
  120. package/package.json +3 -3
  121. package/dist/bin/chunk-2tvtr5fy.js +0 -1
  122. package/dist/bin/chunk-6kt12934.js +0 -1
  123. package/dist/bin/chunk-fhq31xzt.js +0 -1
  124. package/dist/bin/chunk-gj26v5hg.js +0 -1
  125. package/dist/chunk-1yhrkahz.js +0 -1
  126. package/dist/chunk-27y037yh.js +0 -1
@@ -1,5 +1,5 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="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() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mux0m6eu80l39m"><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_1791311502952_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_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">
183
+ window.__stx_latestSetup=__stx_setup_1791311502952_36;
184
+ if(window.stx)window.stx._latestSetup=__stx_setup_1791311502952_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_1791311502952_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">
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_1791304372651_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_53'] = __scopeRegistration;
536
+ window.stx._scopes['stx_scope_nav_51'] = __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>
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Bundle a Worker's entry into the single ES module Cloudflare runs.
3
+ *
4
+ * `Bun.build` does the work, with the settings that match the Workers
5
+ * runtime: `target: 'browser'` (Workers expose web APIs, not Node's), `format:
6
+ * 'esm'` (module Workers export a default handler object), and minified,
7
+ * since the upload is size-capped. `cloudflare:*` imports
8
+ * (`cloudflare:workers`, `cloudflare:sockets`) are provided by the runtime, so
9
+ * they are left as imports rather than resolved.
10
+ *
11
+ * The upload path assumes exactly one module. A build that splits into chunks
12
+ * or emits assets (an imported image, a `.wasm` file) is refused with the list
13
+ * of files rather than uploading half a Worker.
14
+ */
15
+ import type { WorkerModule } from './provider';
16
+ export interface BundledWorker extends WorkerModule {
17
+ /** Size of the module in bytes, as uploaded. */
18
+ size: number;
19
+ }
20
+ /**
21
+ * Bundle `entryAbsolutePath` into one module, named after the entry
22
+ * (`workers/tiles.ts` becomes `tiles.js`).
23
+ *
24
+ * @throws {Error} When the entry does not exist, the build fails (with Bun's
25
+ * messages), or it produces anything other than one JavaScript file
26
+ */
27
+ export declare function bundleWorker(entryAbsolutePath: string): Promise<BundledWorker>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Cloudflare Workers: script uploads and custom domains through the account
3
+ * API, bundling with `Bun.build`, and the deploy-time reconcile for
4
+ * `infrastructure.workers`.
5
+ */
6
+ export type { BundledWorker } from './bundle';
7
+ export { bundleWorker } from './bundle';
8
+ export type { WorkerBinding, WorkerCustomDomain, WorkerModule, WorkerScript, WorkerSettings, WorkersProviderOptions, WorkerUpload, } from './provider';
9
+ export { buildUploadForm, CONTENT_HASH_BINDING, DEFAULT_COMPATIBILITY_DATE, WORKER_MODULE_TYPE, workerContentHash, workerInSync, WorkersApiError, WorkersPermissionError, WorkersProvider, withContentHash, } from './provider';
10
+ export type { ReconcileCloudflareWorkersOptions, WorkersConfigSource, WorkersReconcileSummary, WorkerSummary, } from './reconcile';
11
+ export { reconcileCloudflareWorkers, workerBindings } from './reconcile';
@@ -0,0 +1,215 @@
1
+ /** Name of the `plain_text` binding that carries the upload's content hash. */
2
+ export declare const CONTENT_HASH_BINDING = "TS_CLOUD_CONTENT_HASH";
3
+ /** Compatibility date used when a Worker does not set one. Fixed, so deploys are reproducible. */
4
+ export declare const DEFAULT_COMPATIBILITY_DATE = "2025-09-01";
5
+ /** MIME type Cloudflare requires on an ES module part. */
6
+ export declare const WORKER_MODULE_TYPE = "application/javascript+module";
7
+ type FetchLike = (input: string, init?: RequestInit) => Promise<Response>;
8
+ /** A failed call to the Workers API, with Cloudflare's error codes kept. */
9
+ export declare class WorkersApiError extends Error {
10
+ readonly status: number;
11
+ readonly errors: Array<{
12
+ code: number;
13
+ message: string;
14
+ }>;
15
+ constructor(message: string, status: number, errors?: Array<{
16
+ code: number;
17
+ message: string;
18
+ }>);
19
+ /** Whether Cloudflare reported this error code. */
20
+ hasCode(code: number): boolean;
21
+ }
22
+ /**
23
+ * The API token is missing a permission the call needs.
24
+ *
25
+ * Cloudflare answers these with a bare "Authentication error", which reads
26
+ * like a bad token. This names the permission instead, so the operator knows
27
+ * which box to tick on the token.
28
+ */
29
+ export declare class WorkersPermissionError extends WorkersApiError {
30
+ /** The token permission that would make the call succeed, as the dashboard names it. */
31
+ readonly permission: string;
32
+ constructor(permission: string, detail: string, status: number, errors?: Array<{
33
+ code: number;
34
+ message: string;
35
+ }>);
36
+ }
37
+ /** One binding as the API takes and returns it. Only the types ts-cloud writes are spelled out. */
38
+ export type WorkerBinding = {
39
+ type: 'r2_bucket';
40
+ name: string;
41
+ bucket_name: string;
42
+ jurisdiction?: string;
43
+ } | {
44
+ type: 'plain_text';
45
+ name: string;
46
+ text: string;
47
+ } | {
48
+ type: string;
49
+ name: string;
50
+ [key: string]: unknown;
51
+ };
52
+ /** One module of an upload. */
53
+ export interface WorkerModule {
54
+ /** File name, also the multipart part name, e.g. `worker.js`. */
55
+ name: string;
56
+ content: string;
57
+ type: typeof WORKER_MODULE_TYPE;
58
+ }
59
+ export interface WorkerUpload {
60
+ /** Name of the module the runtime starts from; must be one of `modules`. */
61
+ mainModule: string;
62
+ modules: WorkerModule[];
63
+ bindings?: WorkerBinding[];
64
+ compatibilityDate?: string;
65
+ compatibilityFlags?: string[];
66
+ }
67
+ /** What `GET .../settings` returns that ts-cloud reads. */
68
+ export interface WorkerSettings {
69
+ bindings?: WorkerBinding[];
70
+ compatibility_date?: string;
71
+ compatibility_flags?: string[];
72
+ tags?: string[];
73
+ [key: string]: unknown;
74
+ }
75
+ /** The script object an upload returns. */
76
+ export interface WorkerScript {
77
+ id?: string;
78
+ etag?: string;
79
+ created_on?: string;
80
+ modified_on?: string;
81
+ [key: string]: unknown;
82
+ }
83
+ /** A hostname attached to a Worker, as the domains endpoints return it. */
84
+ export interface WorkerCustomDomain {
85
+ id: string;
86
+ hostname: string;
87
+ service: string;
88
+ zone_id?: string;
89
+ zone_name?: string;
90
+ environment?: string;
91
+ cert_id?: string;
92
+ }
93
+ export interface WorkersProviderOptions {
94
+ /** Account API token with `Workers Scripts: Edit` (plus `Workers Routes: Edit` for custom domains). */
95
+ apiToken: string;
96
+ /** Account the Workers live under. */
97
+ accountId: string;
98
+ /** Override `fetch`, for tests. */
99
+ fetch?: FetchLike;
100
+ }
101
+ /**
102
+ * Cloudflare Workers script and custom-domain management, scoped to one account.
103
+ */
104
+ export declare class WorkersProvider {
105
+ readonly name = "cloudflare-workers";
106
+ private readonly apiToken;
107
+ private readonly accountId;
108
+ private readonly fetchImpl;
109
+ constructor(options: WorkersProviderOptions);
110
+ /**
111
+ * Make an authenticated request against the account-scoped Workers API.
112
+ *
113
+ * @param method - HTTP method
114
+ * @param endpoint - Path below `/accounts/{id}/workers`, starting with a slash
115
+ * @param body - JSON body, or a `FormData` for the multipart upload (whose
116
+ * boundary `fetch` sets, so no Content-Type is sent for it here)
117
+ * @throws {WorkersPermissionError} When the token lacks the permission the call needs
118
+ * @throws {WorkersApiError} When Cloudflare reports any other failure
119
+ */
120
+ private request;
121
+ /** Path of one script, with the name escaped. */
122
+ private scriptPath;
123
+ /**
124
+ * A script's settings: bindings (plain-text ones with their text),
125
+ * compatibility date and flags, tags.
126
+ *
127
+ * @returns The settings, or `null` when no script by that name exists
128
+ */
129
+ getSettings(name: string): Promise<WorkerSettings | null>;
130
+ /** Alias of {@link getSettings}, for symmetry with the other providers' `get*`. */
131
+ getScript(name: string): Promise<WorkerSettings | null>;
132
+ /**
133
+ * Upload (and deploy) an ES module Worker.
134
+ *
135
+ * Bindings are sent as given; `secret_text` bindings already on the script
136
+ * are kept (`keep_bindings`), so secrets set out of band survive a deploy
137
+ * that does not know their values. This is the raw upload;
138
+ * {@link ensureModuleScript} is the idempotent form.
139
+ */
140
+ uploadModuleScript(name: string, upload: WorkerUpload): Promise<WorkerScript>;
141
+ /**
142
+ * Upload a Worker unless the deployed one was built from the same input.
143
+ *
144
+ * Adds the {@link CONTENT_HASH_BINDING} binding to the upload, and compares
145
+ * it (plus every declared binding, so a binding edited in the dashboard is
146
+ * put back) against what `GET .../settings` returns.
147
+ *
148
+ * @returns What happened and the content hash
149
+ */
150
+ ensureModuleScript(name: string, upload: WorkerUpload): Promise<{
151
+ action: 'created' | 'updated' | 'unchanged';
152
+ hash: string;
153
+ }>;
154
+ /**
155
+ * Hostnames attached to Workers in the account, optionally filtered.
156
+ *
157
+ * @param filter - `service` (Worker name), `hostname`, `zone_id` ...
158
+ */
159
+ listCustomDomains(filter?: {
160
+ service?: string;
161
+ hostname?: string;
162
+ zoneId?: string;
163
+ }): Promise<WorkerCustomDomain[]>;
164
+ /**
165
+ * Attach a hostname to a Worker. This is the raw call: Cloudflare will move
166
+ * a hostname that another Worker serves, so callers that must not do that
167
+ * check {@link listCustomDomains} first (as {@link ensureCustomDomain} does).
168
+ */
169
+ attachCustomDomain(hostname: string, options: {
170
+ service: string;
171
+ zoneId?: string;
172
+ environment?: string;
173
+ }): Promise<WorkerCustomDomain>;
174
+ /** Detach a hostname from its Worker, by the domain's id (from {@link listCustomDomains}). */
175
+ detachCustomDomain(domainId: string): Promise<void>;
176
+ /**
177
+ * Attach a hostname unless it is already attached to this Worker.
178
+ *
179
+ * Refuses (throws) when the hostname is attached to a different Worker:
180
+ * moving it would take that Worker's URL down, which a deploy of this one
181
+ * should not do silently.
182
+ *
183
+ * @param existing - Attached domains, when the caller already listed them
184
+ */
185
+ ensureCustomDomain(hostname: string, options: {
186
+ service: string;
187
+ zoneId?: string;
188
+ }, existing?: WorkerCustomDomain[]): Promise<{
189
+ action: 'attached' | 'unchanged';
190
+ domain: WorkerCustomDomain;
191
+ }>;
192
+ }
193
+ /**
194
+ * The multipart body for an upload: a `metadata` part with the JSON settings,
195
+ * then one file part per module.
196
+ *
197
+ * `metadata` is a plain string field, as wrangler sends it; a Blob would give
198
+ * it a filename, which the API could take for a module.
199
+ */
200
+ export declare function buildUploadForm(upload: WorkerUpload): FormData;
201
+ /**
202
+ * SHA-256 over everything an upload deploys, independent of key order and of
203
+ * the content-hash binding itself.
204
+ */
205
+ export declare function workerContentHash(upload: WorkerUpload): string;
206
+ /** The upload with its content-hash binding set (replacing any stale one). */
207
+ export declare function withContentHash(upload: WorkerUpload, hash?: string): WorkerUpload;
208
+ /**
209
+ * Is the deployed script the one `upload` would produce?
210
+ *
211
+ * The hash covers the code and settings; the binding check catches a binding
212
+ * changed in the dashboard since, which leaves the hash binding untouched.
213
+ */
214
+ export declare function workerInSync(settings: WorkerSettings, upload: WorkerUpload, hash: string): boolean;
215
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Make the Cloudflare Workers a config declares exist, run the declared code,
3
+ * and serve their declared hostnames.
4
+ *
5
+ * Runs on every deploy, so it is a reconcile rather than a create. Per Worker:
6
+ * bundle the entry (always, locally: the bundle is what the content hash is
7
+ * taken over), upload only when the hash differs from the deployed one, then
8
+ * attach each custom domain that is not already attached to it.
9
+ *
10
+ * What is NOT done, deliberately:
11
+ *
12
+ * - Nothing is deleted or detached. A Worker or hostname dropped from config
13
+ * stays where it is, because removing either takes a URL down.
14
+ * - A hostname that something else already serves (an R2 bucket's custom
15
+ * domain, another Worker, an ordinary DNS record) is never taken over. The
16
+ * deploy warns with what is in the way and how to remove it, and moves on.
17
+ * Attaching anyway would either fail at Cloudflare or silently move traffic.
18
+ */
19
+ import type { R2Config, WorkerConfig } from '@ts-cloud/core';
20
+ import type { WorkerBinding } from './provider';
21
+ /** What a deploy needs to know about one Worker after the reconcile. */
22
+ export interface WorkerSummary {
23
+ /** Script name in Cloudflare. */
24
+ name: string;
25
+ /**
26
+ * Human-readable changes, e.g. `bundled 12.3 KB`, `uploaded`, `unchanged`,
27
+ * `custom domain tiles.example.com attached`. In a dry run the writes start
28
+ * with `would`.
29
+ */
30
+ changes: string[];
31
+ /**
32
+ * Every declared custom domain and its state: `active` (already attached),
33
+ * `pending` (just attached, certificate still issuing), `not attached` (dry
34
+ * run), `conflict` (something else serves it) or `error`.
35
+ */
36
+ domains: Array<{
37
+ domain: string;
38
+ status?: string;
39
+ }>;
40
+ }
41
+ export interface WorkersReconcileSummary {
42
+ workers: WorkerSummary[];
43
+ /** Problems that did not stop the reconcile: a hostname something else serves, a domain that would not attach. */
44
+ warnings: string[];
45
+ }
46
+ export interface ReconcileCloudflareWorkersOptions {
47
+ /** Account API token with `Workers Scripts: Edit` (plus `Workers Routes: Edit` and `Zone: Read` for custom domains). */
48
+ apiToken?: string;
49
+ /** Account the Workers live under. */
50
+ accountId?: string;
51
+ /** Directory `entry` paths are relative to. @default process.cwd() */
52
+ projectRoot?: string;
53
+ /**
54
+ * Zone id to use for custom domains inside that zone. Domains outside it,
55
+ * or every domain when this is unset, have their zone looked up by apex.
56
+ */
57
+ zoneId?: string;
58
+ /** Progress lines. */
59
+ log?: (message: string) => void;
60
+ /** Bundle and read everything, write nothing, and report what would change. */
61
+ dryRun?: boolean;
62
+ /** Override `fetch` for the Workers, R2 and DNS lookups, for tests. */
63
+ fetch?: (input: string, init?: RequestInit) => Promise<Response>;
64
+ }
65
+ /** Anything carrying a `workers` block (and optionally `r2`), at the top level or under `infrastructure`. */
66
+ export interface WorkersConfigSource {
67
+ infrastructure?: {
68
+ workers?: Record<string, WorkerConfig>;
69
+ r2?: R2Config;
70
+ };
71
+ workers?: Record<string, WorkerConfig>;
72
+ r2?: R2Config;
73
+ }
74
+ /**
75
+ * Reconcile every Worker in `config`'s `workers` block.
76
+ *
77
+ * Skips cleanly (logs and returns an empty summary) when there is no
78
+ * `workers` block, and when the token or account id is missing (with a
79
+ * warning, since a declared Worker that silently never deploys is the worst
80
+ * outcome).
81
+ *
82
+ * A Worker whose entry will not bundle, or whose upload fails (including for
83
+ * a missing token permission, reported as a `WorkersPermissionError`), throws:
84
+ * the release may depend on it. Custom-domain problems are warnings.
85
+ */
86
+ export declare function reconcileCloudflareWorkers(config: WorkersConfigSource, options?: ReconcileCloudflareWorkersOptions): Promise<WorkersReconcileSummary>;
87
+ /**
88
+ * Config bindings to the API's shape: R2 buckets (with the jurisdiction the
89
+ * config's r2 block gives the bucket, if any) and plain-text vars.
90
+ *
91
+ * A name used twice, or the reserved content-hash name, is dropped with a
92
+ * warning rather than letting the upload fail on it.
93
+ */
94
+ export declare function workerBindings(worker: WorkerConfig, ctx: {
95
+ warnings: string[];
96
+ r2Buckets?: R2Config;
97
+ }): WorkerBinding[];
98
+ /** `123 B`, `12.3 KB`, `1.2 MB`. */
99
+ export declare function formatSize(bytes: number): string;
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stacksjs/ts-cloud",
3
3
  "type": "module",
4
- "version": "0.16.41",
4
+ "version": "0.16.42",
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.41",
106
- "@ts-cloud/core": "0.16.41",
105
+ "@ts-cloud/aws-types": "0.16.42",
106
+ "@ts-cloud/core": "0.16.42",
107
107
  "hash-wasm": "^4.12.0"
108
108
  },
109
109
  "devDependencies": {
@@ -1 +0,0 @@
1
- import{di}from"./chunk-ndf3t76p.js";import"./chunk-pf9dbm3b.js";import"./chunk-k0p394bn.js";import"./chunk-7593hjcq.js";import"./chunk-x6w8jvs1.js";import"./chunk-nmqjmx30.js";import"./chunk-dkf2kcsc.js";import"./chunk-ddwp5np9.js";import"./chunk-4yym8xm4.js";export{di as resolveServerDashboardData};
@@ -1 +0,0 @@
1
- import{si}from"./chunk-f8689v5g.js";import"./chunk-9eqpnanr.js";import"./chunk-grwth4nw.js";import"./chunk-7p2va3nj.js";import"./chunk-45a8yv3j.js";import"./chunk-7593hjcq.js";import"./chunk-nmqjmx30.js";import"./chunk-dkf2kcsc.js";import"./chunk-ddwp5np9.js";import"./chunk-4yym8xm4.js";export{si as resolveDashboardData};
@@ -1 +0,0 @@
1
- import{Mp}from"./chunk-a06d7cyt.js";import"./chunk-fkzp9sg5.js";import"./chunk-45a8yv3j.js";import"./chunk-dkf2kcsc.js";import"./chunk-ddwp5np9.js";import"./chunk-4yym8xm4.js";export{Mp as buildAndPushServerlessImage};
@@ -1 +0,0 @@
1
- import{js,um,pm,Vs}from"./chunk-e8jwnsee.js";import"./chunk-x6w8jvs1.js";import"./chunk-ddwp5np9.js";import"./chunk-4yym8xm4.js";export{um as getComputeDeployHistory,Vs as restoreDatabaseBackup,js as rollbackComputeSite,pm as runComputeRecipe};
@@ -1 +0,0 @@
1
- import{W}from"./chunk-mxprxjd4.js";import"./chunk-cgcthvq9.js";export{W as RDSClient};
@@ -1 +0,0 @@
1
- import{Ja}from"./chunk-kexwq2h0.js";import"./chunk-varjr6np.js";import"./chunk-cgcthvq9.js";import"./chunk-5n1y5ehd.js";import"./chunk-my61jkg1.js";export{Ja as buildAndPushServerlessImage};