@stacksjs/ts-cloud 0.16.73 → 0.16.74

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 (135) hide show
  1. package/dist/aws/index.js +1 -1
  2. package/dist/bin/{chunk-kcgs4z6p.js → chunk-0sswdcvq.js} +1 -1
  3. package/dist/bin/{chunk-whecvra8.js → chunk-10z6s9nj.js} +2 -2
  4. package/dist/bin/{chunk-maes42nn.js → chunk-11xdxrp3.js} +75 -75
  5. package/dist/bin/chunk-1pj60edk.js +1 -0
  6. package/dist/bin/chunk-1qcztara.js +1 -0
  7. package/dist/bin/{chunk-s5gyhgw1.js → chunk-28a6yey5.js} +1 -1
  8. package/dist/bin/{chunk-8wvtmxpw.js → chunk-47yznk07.js} +1 -1
  9. package/dist/bin/{chunk-0g9ze9v3.js → chunk-613m8vf9.js} +1 -1
  10. package/dist/bin/{chunk-79n440fm.js → chunk-69j7md80.js} +8 -8
  11. package/dist/bin/{chunk-gsp1secn.js → chunk-6gspchrt.js} +1 -1
  12. package/dist/bin/{chunk-jnt0ypm6.js → chunk-8fspkmer.js} +8 -8
  13. package/dist/bin/{chunk-fvj9ktkm.js → chunk-9twr514q.js} +1 -1
  14. package/dist/bin/{chunk-9cqzzkrd.js → chunk-9zbfadg4.js} +1 -1
  15. package/dist/bin/{chunk-1c91h57k.js → chunk-c99xvba1.js} +3 -3
  16. package/dist/bin/{chunk-jk4v9sj1.js → chunk-cs2a075v.js} +4 -4
  17. package/dist/bin/chunk-cvet8kjp.js +1 -0
  18. package/dist/bin/{chunk-xt3jhs2k.js → chunk-e6kfkaxc.js} +1 -1
  19. package/dist/bin/{chunk-0sa000g6.js → chunk-eevqxagd.js} +94 -94
  20. package/dist/bin/{chunk-9362t52n.js → chunk-ekr2rzf6.js} +2 -2
  21. package/dist/bin/chunk-f80asgbh.js +1 -0
  22. package/dist/bin/{chunk-2j2xcq2h.js → chunk-fwcd0ef4.js} +1 -1
  23. package/dist/bin/{chunk-27t4ve22.js → chunk-gghy8mb4.js} +27 -27
  24. package/dist/bin/{chunk-jcbtp3aj.js → chunk-jh4ajbt1.js} +1 -1
  25. package/dist/bin/{chunk-00hq474q.js → chunk-qw5ch629.js} +1 -1
  26. package/dist/bin/{chunk-gwn9pezq.js → chunk-r5cpsqqk.js} +3 -3
  27. package/dist/bin/{chunk-efafd6hw.js → chunk-sfv47z62.js} +6 -6
  28. package/dist/bin/{chunk-8yv9ech5.js → chunk-t6njpv8j.js} +1 -1
  29. package/dist/bin/{chunk-efghc0tr.js → chunk-tvd5w8xq.js} +2 -2
  30. package/dist/bin/{chunk-erdkgb1d.js → chunk-w244mfsx.js} +2 -2
  31. package/dist/bin/{chunk-0k75pjkr.js → chunk-wkwcskhg.js} +1 -1
  32. package/dist/bin/{chunk-z7fnx9gx.js → chunk-yjmydj1w.js} +1 -1
  33. package/dist/bin/chunk-yqqx644v.js +1 -0
  34. package/dist/bin/{chunk-kb0yy9t1.js → chunk-zcq82zv1.js} +2 -2
  35. package/dist/bin/cli.js +212 -212
  36. package/dist/bin/dashboard-server.js +1 -1
  37. package/dist/{chunk-ms84y9kg.js → chunk-1ktv8jxf.js} +1 -1
  38. package/dist/{chunk-e32qtz2d.js → chunk-277enqjc.js} +78 -78
  39. package/dist/{chunk-rkashc9e.js → chunk-2r334egt.js} +1 -1
  40. package/dist/{chunk-2dffxn73.js → chunk-49raybtd.js} +1 -1
  41. package/dist/{chunk-1y1b1jy0.js → chunk-49rt1jbe.js} +1 -1
  42. package/dist/{chunk-ts2n068z.js → chunk-65fwpzeg.js} +14 -14
  43. package/dist/{chunk-vx5n4bhb.js → chunk-7qhcfnqf.js} +1 -1
  44. package/dist/{chunk-nx8dbae2.js → chunk-8ynkxbj6.js} +1 -1
  45. package/dist/{chunk-gssa1974.js → chunk-c2hvf1h5.js} +1 -1
  46. package/dist/chunk-c5pq3x7x.js +1 -0
  47. package/dist/{chunk-pydkxpf9.js → chunk-cfyn21gd.js} +1 -1
  48. package/dist/{chunk-3m5x6nrt.js → chunk-dq9g7cg9.js} +1 -1
  49. package/dist/{chunk-ysv0f0k5.js → chunk-ebb7j388.js} +1 -1
  50. package/dist/{chunk-0cd0mk3e.js → chunk-f4qv0c6w.js} +2 -2
  51. package/dist/{chunk-78xspqp6.js → chunk-fd6gsz34.js} +1 -1
  52. package/dist/chunk-fvad4wm8.js +1 -0
  53. package/dist/chunk-gc8r2gvd.js +1 -0
  54. package/dist/{chunk-3k9kdbsc.js → chunk-ggqxjcbe.js} +1 -1
  55. package/dist/chunk-k0scshn2.js +1 -0
  56. package/dist/{chunk-0nmtzbqn.js → chunk-mqr6s8wa.js} +1 -1
  57. package/dist/{chunk-65dddt6g.js → chunk-qcs3qkdf.js} +1 -1
  58. package/dist/{chunk-f4h7bn7y.js → chunk-s7gv665w.js} +86 -86
  59. package/dist/chunk-sacbxd79.js +1 -0
  60. package/dist/{chunk-v3z51fs0.js → chunk-ssywr12y.js} +1 -1
  61. package/dist/{chunk-1np2k92z.js → chunk-yqzc3a9m.js} +108 -108
  62. package/dist/{chunk-1eg5wsn2.js → chunk-z90dv6jx.js} +5 -5
  63. package/dist/deploy/index.js +1 -1
  64. package/dist/dns/index.js +1 -1
  65. package/dist/drivers/index.js +1 -1
  66. package/dist/index.js +39 -39
  67. package/dist/mail/index.js +1 -1
  68. package/dist/operations/index.js +1 -1
  69. package/dist/protection/index.js +1 -1
  70. package/dist/spend/index.js +1 -1
  71. package/dist/ui/404.html +1 -1
  72. package/dist/ui/accept-invitation.html +1 -1
  73. package/dist/ui/access-denied.html +1 -1
  74. package/dist/ui/account/automation.html +6 -6
  75. package/dist/ui/account/security.html +2 -2
  76. package/dist/ui/applications/compose.html +6 -6
  77. package/dist/ui/applications/new.html +2 -2
  78. package/dist/ui/data/backups.html +6 -6
  79. package/dist/ui/data/services.html +6 -6
  80. package/dist/ui/data/volumes.html +6 -6
  81. package/dist/ui/index.html +6 -6
  82. package/dist/ui/infrastructure/topology.html +6 -6
  83. package/dist/ui/integrations.html +2 -2
  84. package/dist/ui/operations/alerts.html +6 -6
  85. package/dist/ui/operations/configuration.html +6 -6
  86. package/dist/ui/operations/jobs.html +6 -6
  87. package/dist/ui/operations/maintenance.html +6 -6
  88. package/dist/ui/operations/observability.html +6 -6
  89. package/dist/ui/operations/previews.html +6 -6
  90. package/dist/ui/operations/queue.html +6 -6
  91. package/dist/ui/operations/regions.html +6 -6
  92. package/dist/ui/operations/releases.html +6 -6
  93. package/dist/ui/operations/spend.html +6 -6
  94. package/dist/ui/operations/workloads.html +6 -6
  95. package/dist/ui/security.html +2 -2
  96. package/dist/ui/server/actions.html +6 -6
  97. package/dist/ui/server/activity.html +2 -2
  98. package/dist/ui/server/capacity.html +5 -5
  99. package/dist/ui/server/database.html +6 -6
  100. package/dist/ui/server/deployments.html +6 -6
  101. package/dist/ui/server/diagnostics.html +2 -2
  102. package/dist/ui/server/firewall.html +6 -6
  103. package/dist/ui/server/fleet.html +6 -6
  104. package/dist/ui/server/logs.html +6 -6
  105. package/dist/ui/server/metrics.html +6 -6
  106. package/dist/ui/server/security.html +2 -2
  107. package/dist/ui/server/services.html +2 -2
  108. package/dist/ui/server/sites.html +6 -6
  109. package/dist/ui/server/ssh-keys.html +6 -6
  110. package/dist/ui/server/team.html +6 -6
  111. package/dist/ui/server/terminal.html +2 -2
  112. package/dist/ui/serverless/alarms.html +6 -6
  113. package/dist/ui/serverless/assets.html +2 -2
  114. package/dist/ui/serverless/cost.html +2 -2
  115. package/dist/ui/serverless/data.html +6 -6
  116. package/dist/ui/serverless/deployments.html +2 -2
  117. package/dist/ui/serverless/firewall.html +2 -2
  118. package/dist/ui/serverless/functions.html +6 -6
  119. package/dist/ui/serverless/logs.html +6 -6
  120. package/dist/ui/serverless/metrics.html +2 -2
  121. package/dist/ui/serverless/queues.html +5 -5
  122. package/dist/ui/serverless/secrets.html +6 -6
  123. package/dist/ui/serverless/traces.html +6 -6
  124. package/dist/ui/serverless.html +6 -6
  125. package/package.json +3 -3
  126. package/dist/bin/chunk-02kcxvf3.js +0 -1
  127. package/dist/bin/chunk-cq7gxt10.js +0 -1
  128. package/dist/bin/chunk-fy62gtke.js +0 -1
  129. package/dist/bin/chunk-h03hh7qw.js +0 -1
  130. package/dist/bin/chunk-jvwbq6j5.js +0 -1
  131. package/dist/chunk-2b4knhhy.js +0 -1
  132. package/dist/chunk-az9wzy1w.js +0 -1
  133. package/dist/chunk-g96mv4z5.js +0 -1
  134. package/dist/chunk-h3e1qc75.js +0 -1
  135. package/dist/chunk-qy8r2vwh.js +0 -1
@@ -1 +1 @@
1
- import{Kp,Jp,Xp,Qp}from"./chunk-8wvtmxpw.js";import"./chunk-zph18vv6.js";import"./chunk-9cj1fm00.js";import"./chunk-27t4ve22.js";import"./chunk-bgjvxdds.js";export{Qp as deleteFailoverReplicaBuckets,Kp as ensureFailoverReplicaBuckets,Jp as grantFailoverReplicaAccess,Xp as seedFailoverReplicas};
1
+ import{Kp,Jp,Xp,Qp}from"./chunk-47yznk07.js";import"./chunk-zph18vv6.js";import"./chunk-9cj1fm00.js";import"./chunk-gghy8mb4.js";import"./chunk-bgjvxdds.js";export{Qp as deleteFailoverReplicaBuckets,Kp as ensureFailoverReplicaBuckets,Jp as grantFailoverReplicaAccess,Xp as seedFailoverReplicas};
@@ -1 +1 @@
1
- import{Or,rl,nl,It,$r,Lr,Mr,Ur,vn}from"./chunk-2j2xcq2h.js";import"./chunk-79n440fm.js";import"./chunk-27t4ve22.js";import"./chunk-bgjvxdds.js";export{$r as AwsSecretsManagerConfigurationBackend,Lr as AwsSsmConfigurationBackend,Ur as ConfigurationService,Or as ConfigurationStore,Mr as ExternalConfigurationBackend,It as LocalEncryptedConfigurationBackend,rl as parseDotenv,nl as serializeDotenv,vn as synchronizeConfiguredConfiguration};
1
+ import{Or,rl,nl,It,$r,Lr,Mr,Ur,vn}from"./chunk-fwcd0ef4.js";import"./chunk-69j7md80.js";import"./chunk-gghy8mb4.js";import"./chunk-bgjvxdds.js";export{$r as AwsSecretsManagerConfigurationBackend,Lr as AwsSsmConfigurationBackend,Ur as ConfigurationService,Or as ConfigurationStore,Mr as ExternalConfigurationBackend,It as LocalEncryptedConfigurationBackend,rl as parseDotenv,nl as serializeDotenv,vn as synchronizeConfiguredConfiguration};
@@ -1,6 +1,6 @@
1
- import{rr}from"./chunk-7v68hpgc.js";var f={};rr(f,{ProgressBar:()=>v,Spinner:()=>s,box:()=>Ee,checkAwsCli:()=>na,checkAwsCredentials:()=>ia,colorize:()=>Wt,colors:()=>C,confirm:()=>d,error:()=>r,formatBytes:()=>Sn,formatDuration:()=>b,getAwsAccountId:()=>oa,getAwsRegions:()=>sa,header:()=>i,info:()=>e,prompt:()=>I,select:()=>Wo,step:()=>u,success:()=>n,table:()=>c,warn:()=>a,warning:()=>_r});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 Wt(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 _r=a;function e(t){console.log(`${C.blue}ℹ${C.reset} ${t}`)}function u(t){console.log(`${C.cyan}→${C.reset} ${t}`)}function i(t){console.log(`
1
+ import{rr}from"./chunk-7v68hpgc.js";var f={};rr(f,{ProgressBar:()=>v,Spinner:()=>s,box:()=>Ee,checkAwsCli:()=>na,checkAwsCredentials:()=>ia,colorize:()=>Wt,colors:()=>C,confirm:()=>d,error:()=>r,formatBytes:()=>Sn,formatDuration:()=>b,getAwsAccountId:()=>oa,getAwsRegions:()=>sa,header:()=>i,info:()=>e,prompt:()=>P,select:()=>Wo,step:()=>u,success:()=>n,table:()=>c,warn:()=>a,warning:()=>_r});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 Wt(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 _r=a;function e(t){console.log(`${C.blue}ℹ${C.reset} ${t}`)}function u(t){console.log(`${C.cyan}→${C.reset} ${t}`)}function i(t){console.log(`
2
2
  ${C.bright}${C.cyan}${t}${C.reset}
3
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(),_r(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,g=`${"█".repeat(o)}${"░".repeat(l)}`;if(process.stdout.write(`\r${C.cyan}${g}${C.reset} ${t}% (${this.current}/${this.total})`),this.current>=this.total)process.stdout.write(`
4
- `)}}async function I(t,o){let l=await import("node:readline"),g=l.createInterface({input:process.stdin,output:process.stdout});return new Promise((p)=>{let h=o?`${C.cyan}?${C.reset} ${t} ${C.gray}(${o})${C.reset}: `:`${C.cyan}?${C.reset} ${t}: `;g.question(h,(m)=>{g.close(),p(m||o||"")})})}async function d(t,o=!1){let l=await I(`${t} (y/n)`,o?"y":"n");return l.toLowerCase()==="y"||l.toLowerCase()==="yes"}async function Wo(t,o){console.log(`${C.cyan}?${C.reset} ${t}`),o.forEach((p,h)=>{console.log(` ${C.gray}${h+1}.${C.reset} ${p}`)});let l=await I("Select","1"),g=Number.parseInt(l)-1;if(g>=0&&g<o.length)return o[g];return o[0]}function c(t,o){let l=t.map((p,h)=>{let m=Math.max(...o.map((w)=>(w[h]||"").length));return Math.max(p.length,m)}),g=t.map((p,h)=>p.padEnd(l[h])).join(" ");console.log(Wt(g,"bright")),console.log(Wt("─".repeat(g.length),"gray")),o.forEach((p)=>{let h=p.map((m,w)=>(m||"").padEnd(l[w])).join(" ");console.log(h)})}function Sn(t){if(t===0)return"0 B";let o=1024,l=["B","KB","MB","GB","TB"],g=Math.floor(Math.log(t)/Math.log(o));return`${Number.parseFloat((t/o**g).toFixed(2))} ${l[g]}`}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),g=o%60;if(l<60)return`${l}m ${g}s`;let p=Math.floor(l/60),h=l%60;return`${p}h ${h}m`}function Ee(t,o="cyan"){let l=t.split(`
4
+ `)}}async function P(t,o){let l=await import("node:readline"),g=l.createInterface({input:process.stdin,output:process.stdout});return new Promise((p)=>{let h=o?`${C.cyan}?${C.reset} ${t} ${C.gray}(${o})${C.reset}: `:`${C.cyan}?${C.reset} ${t}: `;g.question(h,(m)=>{g.close(),p(m||o||"")})})}async function d(t,o=!1){let l=await P(`${t} (y/n)`,o?"y":"n");return l.toLowerCase()==="y"||l.toLowerCase()==="yes"}async function Wo(t,o){console.log(`${C.cyan}?${C.reset} ${t}`),o.forEach((p,h)=>{console.log(` ${C.gray}${h+1}.${C.reset} ${p}`)});let l=await P("Select","1"),g=Number.parseInt(l)-1;if(g>=0&&g<o.length)return o[g];return o[0]}function c(t,o){let l=t.map((p,h)=>{let m=Math.max(...o.map((w)=>(w[h]||"").length));return Math.max(p.length,m)}),g=t.map((p,h)=>p.padEnd(l[h])).join(" ");console.log(Wt(g,"bright")),console.log(Wt("─".repeat(g.length),"gray")),o.forEach((p)=>{let h=p.map((m,w)=>(m||"").padEnd(l[w])).join(" ");console.log(h)})}function Sn(t){if(t===0)return"0 B";let o=1024,l=["B","KB","MB","GB","TB"],g=Math.floor(Math.log(t)/Math.log(o));return`${Number.parseFloat((t/o**g).toFixed(2))} ${l[g]}`}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),g=o%60;if(l<60)return`${l}m ${g}s`;let p=Math.floor(l/60),h=l%60;return`${p}h ${h}m`}function Ee(t,o="cyan"){let l=t.split(`
5
5
  `),g=Math.max(...l.map((h)=>h.length)),p="─".repeat(g+2);console.log(Wt(`┌${p}┐`,o)),l.forEach((h)=>{console.log(Wt(`│ ${h.padEnd(g)} │`,o))}),console.log(Wt(`└${p}┘`,o))}async function na(){return!0}async function ia(){try{let{AWSClient:t}=await import("./chunk-6bnxvtvy.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 oa(){try{let{AWSClient:t}=await import("./chunk-6bnxvtvy.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 sa(){try{let{AWSClient:t}=await import("./chunk-6bnxvtvy.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()}),g=[];if(l.regionInfo){let p=Array.isArray(l.regionInfo)?l.regionInfo:[l.regionInfo];g.push(...p.map((h)=>h.regionName))}return g.length>0?g: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,Wt,n,r,a,_r,e,u,i,s,I,d,Wo,c,Sn,Ee,na,ia,oa,sa,f};
6
+ export{C,Wt,n,r,a,_r,e,u,i,s,P,d,Wo,c,Sn,Ee,na,ia,oa,sa,f};
@@ -1,6 +1,6 @@
1
- import{Ve,R,Zt,Vr,Hi}from"./chunk-27t4ve22.js";import{execSync as D}from"node:child_process";import{randomBytes as M}from"node:crypto";import{chmodSync as j,copyFileSync as x,existsSync as u,mkdirSync as w,readFileSync as U,statSync as N,writeFileSync as m}from"node:fs";import{tmpdir as E}from"node:os";import{basename as P,dirname as v,isAbsolute as O,join as a,resolve as B}from"node:path";import{fileURLToPath as C}from"node:url";function h(e){if(!e||typeof e!=="object")return e;return Object.fromEntries(Object.keys(e).map((r)=>[r,""]))}function A(e){let r=JSON.parse(JSON.stringify(e??{}));if(r.hetzner)delete r.hetzner.apiToken;delete r.aws,delete r.stateDir;for(let t of Object.values(r.sites??{})){if(t?.env)t.env=h(t.env);if(t?.environment)t.environment=h(t.environment)}for(let t of Object.values(r.environments??{}))if(t?.variables)t.variables=h(t.variables);for(let t of Object.values(r.infrastructure?.databases??{}))if(t?.password)t.password="";if(r.infrastructure?.appDatabase?.password)r.infrastructure.appDatabase.password="";if(r.infrastructure?.compute?.database?.password)r.infrastructure.compute.database.password="";if(r.infrastructure?.compute?.managedServices?.vitess?.password)r.infrastructure.compute.managedServices.vitess.password="";return r}function y(e){let r=A(e);return["// Generated by ts-cloud for the management dashboard — do not edit.","//","// This is the project's resolved cloud config, inlined so it needs no","// imports on the box. Credentials are deliberately absent.",`export default ${JSON.stringify(r,null,2)}`,""].join(`
2
- `)}var Zd="dashboard";function Zc(){return Ve("dashboard-credentials.json")}function F(){return M(24).toString("base64url")}function eu(e,r,t){let s=process.env.TS_CLOUD_UI_PASSWORD?.trim();if(s)return{password:s,source:"env"};if(b(process.env.TS_CLOUD_UI_PUBLIC))return{password:void 0,source:"public"};let n=Zc(),i=R(e,"dashboard-credentials.json");try{if(u(i)){let o=JSON.parse(U(i,"utf8"));if(o?.password)return{password:o.password,source:"generated"}}}catch{}let d=F();try{w(v(i),{recursive:!0}),m(i,`${JSON.stringify({username:r,password:d,generatedAt:new Date().toISOString()},null,2)}
1
+ import{ze,I,Zt,Vr,Hi}from"./chunk-gghy8mb4.js";import{execSync as D}from"node:child_process";import{randomBytes as R}from"node:crypto";import{chmodSync as j,copyFileSync as x,existsSync as u,mkdirSync as w,readFileSync as U,statSync as N,writeFileSync as m}from"node:fs";import{tmpdir as E}from"node:os";import{basename as P,dirname as v,isAbsolute as O,join as a,resolve as B}from"node:path";import{fileURLToPath as C}from"node:url";function h(e){if(!e||typeof e!=="object")return e;return Object.fromEntries(Object.keys(e).map((r)=>[r,""]))}function M(e){let r=JSON.parse(JSON.stringify(e??{}));if(r.hetzner)delete r.hetzner.apiToken;delete r.aws,delete r.stateDir;for(let t of Object.values(r.sites??{})){if(t?.env)t.env=h(t.env);if(t?.environment)t.environment=h(t.environment)}for(let t of Object.values(r.environments??{}))if(t?.variables)t.variables=h(t.variables);for(let t of Object.values(r.infrastructure?.databases??{}))if(t?.password)t.password="";if(r.infrastructure?.appDatabase?.password)r.infrastructure.appDatabase.password="";if(r.infrastructure?.compute?.database?.password)r.infrastructure.compute.database.password="";if(r.infrastructure?.compute?.managedServices?.vitess?.password)r.infrastructure.compute.managedServices.vitess.password="";return r}function y(e){let r=M(e);return["// Generated by ts-cloud for the management dashboard — do not edit.","//","// This is the project's resolved cloud config, inlined so it needs no","// imports on the box. Credentials are deliberately absent.",`export default ${JSON.stringify(r,null,2)}`,""].join(`
2
+ `)}var Zd="dashboard";function Zc(){return ze("dashboard-credentials.json")}function F(){return R(24).toString("base64url")}function eu(e,r,t){let s=process.env.TS_CLOUD_UI_PASSWORD?.trim();if(s)return{password:s,source:"env"};if(b(process.env.TS_CLOUD_UI_PUBLIC))return{password:void 0,source:"public"};let n=Zc(),i=I(e,"dashboard-credentials.json");try{if(u(i)){let o=JSON.parse(U(i,"utf8"));if(o?.password)return{password:o.password,source:"generated"}}}catch{}let d=F();try{w(v(i),{recursive:!0}),m(i,`${JSON.stringify({username:r,password:d,generatedAt:new Date().toISOString()},null,2)}
3
3
  `),j(i,384),t.info(`Management dashboard: generated a password for '${r}' and saved it to ${n} (read it there — it is not printed). Set TS_CLOUD_UI_PASSWORD to pin your own, or TS_CLOUD_UI_PUBLIC=1 to serve without auth.`)}catch(o){t.warn(`Management dashboard: could not persist the generated password (${o?.message??o}). Using it for this deploy only — pass: ${d}
4
- This password is now in your deploy log. Set TS_CLOUD_UI_PASSWORD to a value of your own and redeploy once ${n} is writable.`)}return{password:d,source:"generated"}}var I={info:()=>{},warn:()=>{}};function b(e){return e!=null&&e!==""&&e!=="0"&&e.toLowerCase()!=="false"}function J(){return Ve("dashboard-release")}function L(){let e=v(C(import.meta.url));for(let r of[a(e,"..","..","package.json"),a(e,"..","package.json")])try{let t=JSON.parse(U(r,"utf8"));if(t.name==="@stacksjs/ts-cloud"&&t.version)return`^${t.version}`}catch{}return"latest"}function z(){return process.env.TS_CLOUD_UI_VERSION?.trim()||L()}function V(e,r,t){if(!e?.project?.slug)return t.warn("Management dashboard: the cloud config has no project slug — skipping the live dashboard."),null;let s=R(r,"dashboard-release");try{w(s,{recursive:!0}),m(a(s,"cloud.config.ts"),y(e));let n=z();if(n.startsWith("file:")){let d=n.slice(5),o=O(d)?d:B(r,d);if(!u(o)||!N(o).isFile())n=L(),t.warn(`Management dashboard: TS_CLOUD_UI_VERSION points to a missing package file (${o}); using the deploying ts-cloud version ${n} instead.`);else{let c=P(o),l=a(s,c);if(o!==l)x(o,l);n=`file:./${c}`}}let i={name:"ts-cloud-dashboard",private:!0,type:"module",dependencies:{"@stacksjs/ts-cloud":n}};return m(a(s,"package.json"),`${JSON.stringify(i,null,2)}
5
- `),J()}catch(n){return t.warn(`Management dashboard: could not stage the live release (${n?.message??n}) — skipping.`),null}}function Vo(e){if(u(a(e,"packages","ui","pages"))||u(a(e,"packages","ui","package.json")))return{uiRoot:"packages/ui/dist",build:"cd packages/ui && bun install && bun run build"};let r=v(C(import.meta.url)),t=[a(r,"ui"),a(r,"..","ui"),a(r,"..","..","ui"),a(r,"..","dist","ui")];for(let s of t)if(u(a(s,"index.html"))||u(a(s,"serverless.html")))return{uiRoot:s,build:!1};return null}function zo(e,r={}){let t=r.logger??I,s=r.cwd??process.cwd();if(b(process.env.TS_CLOUD_UI_DISABLE))return t.info("Management dashboard: skipped (TS_CLOUD_UI_DISABLE set)."),e;if(e.cloud?.attachTo)return t.info(`Management dashboard: ${e.project.slug} is attached to ${e.cloud.attachTo}; the server owner's dashboard monitors every attached project.`),e;if(Zt(e))return e;let n=e.environments&&Object.keys(e.environments)[0],i=process.env.TS_CLOUD_UI_DOMAIN?.trim()||void 0,d=Number(process.env.TS_CLOUD_UI_PORT)||void 0,o={...e.sites??{}};if(!b(process.env.TS_CLOUD_UI_STATIC)){let g=V(e,s,t);if(!g)return e;let p=Hi(e,n??"production",{uiRoot:g,build:!1,domain:i,port:d,live:!0});if(p.length===0)return t.info("Management dashboard: no domain resolved (set TS_CLOUD_UI_DOMAIN or configure a site domain) — skipping."),e;for(let{name:k,site:_}of p)o[k]=_,t.info(`Management dashboard → https://${_.domain} (sign in with your ts-cloud account; the first deploy prints an admin password once)`);return e.sites=o,e}let c=Vo(s);if(!c)return t.info("Management dashboard: UI not found (no local ui/ or packaged dist/ui) — skipping auto-deploy."),e;let l=process.env.TS_CLOUD_UI_USERNAME?.trim()||"admin",f=eu(s,l,t),S=Hi(e,n??"production",{uiRoot:c.uiRoot,build:c.build,domain:i,username:l,password:f.password,realm:process.env.TS_CLOUD_UI_REALM?.trim()||void 0,live:!1,port:d});if(S.length===0)return t.info("Management dashboard: no domain resolved (set TS_CLOUD_UI_DOMAIN or configure a site domain) — skipping."),e;let T=f.source==="public"?"NO AUTH — TS_CLOUD_UI_PUBLIC is set (dashboard is publicly reachable)":f.source==="env"?"htpasswd-protected (TS_CLOUD_UI_PASSWORD)":`htpasswd-protected (auto-generated — see ${Zc()})`;t.warn("Management dashboard: static mode — one shared password, and no per-site collaborators. Unset TS_CLOUD_UI_STATIC for the live dashboard.");for(let{name:g,site:p}of S)o[g]=p,t.info(`Management dashboard → https://${p.domain} (${T})`);return e.sites=o,e}function Ho(e){return Object.keys(e.sites??{}).filter(Vr)}function Ys(e,r){if(!e?.root)return null;let t=r.cwd??process.cwd(),s=r.logger??I;try{if(typeof e.build==="string"&&e.build.trim())s.info(`Management dashboard: building UI (${e.build})`),D(e.build,{cwd:t,stdio:"inherit"});let n=O(e.root)?e.root:a(t,e.root);if(!u(n))return s.warn(`Management dashboard: build output not found at ${n} — skipping dashboard artifact.`),null;let i=a(E(),`${r.slug}-${r.siteName??Zd}-${r.sha}.tar.gz`);return D(`tar czf "${i}" -C "${n}" .`,{stdio:"inherit"}),i}catch(n){return s.warn(`Management dashboard: failed to build artifact — ${n?.message??n}. Skipping dashboard deploy.`),null}}
4
+ This password is now in your deploy log. Set TS_CLOUD_UI_PASSWORD to a value of your own and redeploy once ${n} is writable.`)}return{password:d,source:"generated"}}var L={info:()=>{},warn:()=>{}};function b(e){return e!=null&&e!==""&&e!=="0"&&e.toLowerCase()!=="false"}function J(){return ze("dashboard-release")}function T(){let e=v(C(import.meta.url));for(let r of[a(e,"..","..","package.json"),a(e,"..","package.json")])try{let t=JSON.parse(U(r,"utf8"));if(t.name==="@stacksjs/ts-cloud"&&t.version)return`^${t.version}`}catch{}return"latest"}function z(){return process.env.TS_CLOUD_UI_VERSION?.trim()||T()}function V(e,r,t){if(!e?.project?.slug)return t.warn("Management dashboard: the cloud config has no project slug — skipping the live dashboard."),null;let s=I(r,"dashboard-release");try{w(s,{recursive:!0}),m(a(s,"cloud.config.ts"),y(e));let n=z();if(n.startsWith("file:")){let d=n.slice(5),o=O(d)?d:B(r,d);if(!u(o)||!N(o).isFile())n=T(),t.warn(`Management dashboard: TS_CLOUD_UI_VERSION points to a missing package file (${o}); using the deploying ts-cloud version ${n} instead.`);else{let c=P(o),l=a(s,c);if(o!==l)x(o,l);n=`file:./${c}`}}let i={name:"ts-cloud-dashboard",private:!0,type:"module",dependencies:{"@stacksjs/ts-cloud":n}};return m(a(s,"package.json"),`${JSON.stringify(i,null,2)}
5
+ `),J()}catch(n){return t.warn(`Management dashboard: could not stage the live release (${n?.message??n}) — skipping.`),null}}function Vo(e){if(u(a(e,"packages","ui","pages"))||u(a(e,"packages","ui","package.json")))return{uiRoot:"packages/ui/dist",build:"cd packages/ui && bun install && bun run build"};let r=v(C(import.meta.url)),t=[a(r,"ui"),a(r,"..","ui"),a(r,"..","..","ui"),a(r,"..","dist","ui")];for(let s of t)if(u(a(s,"index.html"))||u(a(s,"serverless.html")))return{uiRoot:s,build:!1};return null}function zo(e,r={}){let t=r.logger??L,s=r.cwd??process.cwd();if(b(process.env.TS_CLOUD_UI_DISABLE))return t.info("Management dashboard: skipped (TS_CLOUD_UI_DISABLE set)."),e;if(e.cloud?.attachTo)return t.info(`Management dashboard: ${e.project.slug} is attached to ${e.cloud.attachTo}; the server owner's dashboard monitors every attached project.`),e;if(Zt(e))return e;let n=e.environments&&Object.keys(e.environments)[0],i=process.env.TS_CLOUD_UI_DOMAIN?.trim()||void 0,d=Number(process.env.TS_CLOUD_UI_PORT)||void 0,o={...e.sites??{}};if(!b(process.env.TS_CLOUD_UI_STATIC)){let g=V(e,s,t);if(!g)return e;let p=Hi(e,n??"production",{uiRoot:g,build:!1,domain:i,port:d,live:!0});if(p.length===0)return t.info("Management dashboard: no domain resolved (set TS_CLOUD_UI_DOMAIN or configure a site domain) — skipping."),e;for(let{name:A,site:_}of p)o[A]=_,t.info(`Management dashboard → https://${_.domain} (sign in with your ts-cloud account; the first deploy prints an admin password once)`);return e.sites=o,e}let c=Vo(s);if(!c)return t.info("Management dashboard: UI not found (no local ui/ or packaged dist/ui) — skipping auto-deploy."),e;let l=process.env.TS_CLOUD_UI_USERNAME?.trim()||"admin",f=eu(s,l,t),S=Hi(e,n??"production",{uiRoot:c.uiRoot,build:c.build,domain:i,username:l,password:f.password,realm:process.env.TS_CLOUD_UI_REALM?.trim()||void 0,live:!1,port:d});if(S.length===0)return t.info("Management dashboard: no domain resolved (set TS_CLOUD_UI_DOMAIN or configure a site domain) — skipping."),e;let k=f.source==="public"?"NO AUTH — TS_CLOUD_UI_PUBLIC is set (dashboard is publicly reachable)":f.source==="env"?"htpasswd-protected (TS_CLOUD_UI_PASSWORD)":`htpasswd-protected (auto-generated — see ${Zc()})`;t.warn("Management dashboard: static mode — one shared password, and no per-site collaborators. Unset TS_CLOUD_UI_STATIC for the live dashboard.");for(let{name:g,site:p}of S)o[g]=p,t.info(`Management dashboard → https://${p.domain} (${k})`);return e.sites=o,e}function Ho(e){return Object.keys(e.sites??{}).filter(Vr)}function Ys(e,r){if(!e?.root)return null;let t=r.cwd??process.cwd(),s=r.logger??L;try{if(typeof e.build==="string"&&e.build.trim())s.info(`Management dashboard: building UI (${e.build})`),D(e.build,{cwd:t,stdio:"inherit"});let n=O(e.root)?e.root:a(t,e.root);if(!u(n))return s.warn(`Management dashboard: build output not found at ${n} — skipping dashboard artifact.`),null;let i=a(E(),`${r.slug}-${r.siteName??Zd}-${r.sha}.tar.gz`);return D(`tar czf "${i}" -C "${n}" .`,{stdio:"inherit"}),i}catch(n){return s.warn(`Management dashboard: failed to build artifact — ${n?.message??n}. Skipping dashboard deploy.`),null}}
6
6
  export{Zd,Zc,eu,Vo,zo,Ho,Ys};
@@ -0,0 +1 @@
1
+ import{Ps,pm,mm,Ds}from"./chunk-w244mfsx.js";import"./chunk-sfv47z62.js";import"./chunk-gghy8mb4.js";import"./chunk-bgjvxdds.js";export{pm as getComputeDeployHistory,Ds as restoreDatabaseBackup,Ps as rollbackComputeSite,mm as runComputeRecipe};
@@ -1 +1 @@
1
- import{K,jo}from"./chunk-9362t52n.js";import"./chunk-bj94s3a7.js";import"./chunk-9cj1fm00.js";export{K as ACMClient,jo as ACMDnsValidator};
1
+ import{K,jo}from"./chunk-ekr2rzf6.js";import"./chunk-bj94s3a7.js";import"./chunk-9cj1fm00.js";export{K as ACMClient,jo as ACMDnsValidator};