treesap 0.1.12 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/README.md +56 -0
  2. package/dist/app.d.ts +28 -0
  3. package/dist/app.d.ts.map +1 -0
  4. package/dist/app.js +184 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/context.d.ts +36 -0
  7. package/dist/context.d.ts.map +1 -0
  8. package/dist/context.js +95 -0
  9. package/dist/context.js.map +1 -0
  10. package/dist/index.d.ts +5 -7
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +5 -9
  13. package/dist/index.js.map +1 -1
  14. package/dist/middleware/cors.d.ts +11 -0
  15. package/dist/middleware/cors.d.ts.map +1 -0
  16. package/dist/middleware/cors.js +34 -0
  17. package/dist/middleware/cors.js.map +1 -0
  18. package/dist/middleware/serve-static.d.ts +6 -0
  19. package/dist/middleware/serve-static.d.ts.map +1 -0
  20. package/dist/middleware/serve-static.js +68 -0
  21. package/dist/middleware/serve-static.js.map +1 -0
  22. package/dist/node.d.ts +8 -0
  23. package/dist/node.d.ts.map +1 -0
  24. package/dist/node.js +52 -0
  25. package/dist/node.js.map +1 -0
  26. package/dist/path.d.ts +10 -0
  27. package/dist/path.d.ts.map +1 -0
  28. package/dist/path.js +45 -0
  29. package/dist/path.js.map +1 -0
  30. package/dist/vite.d.ts +31 -0
  31. package/dist/vite.d.ts.map +1 -0
  32. package/dist/vite.js +278 -0
  33. package/dist/vite.js.map +1 -0
  34. package/package.json +33 -40
  35. package/dist/cli.d.ts +0 -3
  36. package/dist/cli.d.ts.map +0 -1
  37. package/dist/cli.js +0 -137
  38. package/dist/cli.js.map +0 -1
  39. package/dist/components/BaseHead.d.ts +0 -5
  40. package/dist/components/BaseHead.d.ts.map +0 -1
  41. package/dist/components/BaseHead.js +0 -161
  42. package/dist/components/BaseHead.js.map +0 -1
  43. package/dist/components/ChatInput.d.ts +0 -7
  44. package/dist/components/ChatInput.d.ts.map +0 -1
  45. package/dist/components/ChatInput.js +0 -11
  46. package/dist/components/ChatInput.js.map +0 -1
  47. package/dist/components/Sidebar.d.ts +0 -8
  48. package/dist/components/Sidebar.d.ts.map +0 -1
  49. package/dist/components/Sidebar.js +0 -7
  50. package/dist/components/Sidebar.js.map +0 -1
  51. package/dist/components/SimpleLivePreview.d.ts +0 -7
  52. package/dist/components/SimpleLivePreview.d.ts.map +0 -1
  53. package/dist/components/SimpleLivePreview.js +0 -7
  54. package/dist/components/SimpleLivePreview.js.map +0 -1
  55. package/dist/components/Terminal.d.ts +0 -7
  56. package/dist/components/Terminal.d.ts.map +0 -1
  57. package/dist/components/Terminal.js +0 -14
  58. package/dist/components/Terminal.js.map +0 -1
  59. package/dist/components/VoiceRecorder.d.ts +0 -4
  60. package/dist/components/VoiceRecorder.d.ts.map +0 -1
  61. package/dist/components/VoiceRecorder.js +0 -5
  62. package/dist/components/VoiceRecorder.js.map +0 -1
  63. package/dist/components/icons/GeminiLogo.d.ts +0 -7
  64. package/dist/components/icons/GeminiLogo.d.ts.map +0 -1
  65. package/dist/components/icons/GeminiLogo.js +0 -5
  66. package/dist/components/icons/GeminiLogo.js.map +0 -1
  67. package/dist/components/icons/OllamaLogo.d.ts +0 -2
  68. package/dist/components/icons/OllamaLogo.d.ts.map +0 -1
  69. package/dist/components/icons/OllamaLogo.js +0 -5
  70. package/dist/components/icons/OllamaLogo.js.map +0 -1
  71. package/dist/layouts/Layout.d.ts +0 -9
  72. package/dist/layouts/Layout.d.ts.map +0 -1
  73. package/dist/layouts/Layout.js +0 -9
  74. package/dist/layouts/Layout.js.map +0 -1
  75. package/dist/layouts/NotFoundLayout.d.ts +0 -2
  76. package/dist/layouts/NotFoundLayout.d.ts.map +0 -1
  77. package/dist/layouts/NotFoundLayout.js +0 -6
  78. package/dist/layouts/NotFoundLayout.js.map +0 -1
  79. package/dist/pages/Code.d.ts +0 -7
  80. package/dist/pages/Code.d.ts.map +0 -1
  81. package/dist/pages/Code.js +0 -8
  82. package/dist/pages/Code.js.map +0 -1
  83. package/dist/pages/Home.d.ts +0 -7
  84. package/dist/pages/Home.d.ts.map +0 -1
  85. package/dist/pages/Home.js +0 -8
  86. package/dist/pages/Home.js.map +0 -1
  87. package/dist/pages/Welcome.d.ts +0 -2
  88. package/dist/pages/Welcome.d.ts.map +0 -1
  89. package/dist/pages/Welcome.js +0 -6
  90. package/dist/pages/Welcome.js.map +0 -1
  91. package/dist/server.d.ts +0 -11
  92. package/dist/server.d.ts.map +0 -1
  93. package/dist/server.js +0 -434
  94. package/dist/server.js.map +0 -1
  95. package/dist/services/dev-server.d.ts +0 -29
  96. package/dist/services/dev-server.d.ts.map +0 -1
  97. package/dist/services/dev-server.js +0 -201
  98. package/dist/services/dev-server.js.map +0 -1
  99. package/dist/services/terminal.d.ts +0 -46
  100. package/dist/services/terminal.d.ts.map +0 -1
  101. package/dist/services/terminal.js +0 -264
  102. package/dist/services/terminal.js.map +0 -1
  103. package/dist/services/websocket.d.ts +0 -48
  104. package/dist/services/websocket.d.ts.map +0 -1
  105. package/dist/services/websocket.js +0 -332
  106. package/dist/services/websocket.js.map +0 -1
  107. package/dist/static/components/ChatInput.js +0 -237
  108. package/dist/static/components/Sidebar.js +0 -225
  109. package/dist/static/components/SimpleLivePreview.js +0 -305
  110. package/dist/static/components/Terminal.js +0 -461
  111. package/dist/static/components/TerminalTabs.js +0 -383
  112. package/dist/static/favicon.svg +0 -14
  113. package/dist/static/signals/LivePreviewSignal.js +0 -71
  114. package/dist/static/signals/SidebarSignal.js +0 -123
  115. package/dist/static/signals/TerminalSignal.js +0 -273
  116. package/dist/static/styles/main.css +0 -1761
  117. package/src/cli.ts +0 -155
  118. package/src/components/BaseHead.ts +0 -164
  119. package/src/components/ChatInput.tsx +0 -56
  120. package/src/components/Sidebar.tsx +0 -99
  121. package/src/components/SimpleLivePreview.tsx +0 -40
  122. package/src/components/Terminal.tsx +0 -40
  123. package/src/components/VoiceRecorder.tsx +0 -33
  124. package/src/components/icons/GeminiLogo.tsx +0 -10
  125. package/src/components/icons/OllamaLogo.tsx +0 -5
  126. package/src/index.tsx +0 -12
  127. package/src/layouts/Layout.tsx +0 -41
  128. package/src/layouts/NotFoundLayout.tsx +0 -15
  129. package/src/pages/Code.tsx +0 -34
  130. package/src/pages/Welcome.tsx +0 -56
  131. package/src/server.tsx +0 -519
  132. package/src/services/dev-server.ts +0 -234
  133. package/src/services/terminal.ts +0 -325
  134. package/src/services/websocket.ts +0 -405
  135. package/src/static/components/ChatInput.js +0 -237
  136. package/src/static/components/Sidebar.js +0 -225
  137. package/src/static/components/SimpleLivePreview.js +0 -305
  138. package/src/static/components/Terminal.js +0 -461
  139. package/src/static/components/TerminalTabs.js +0 -383
  140. package/src/static/favicon.svg +0 -14
  141. package/src/static/signals/LivePreviewSignal.js +0 -71
  142. package/src/static/signals/SidebarSignal.js +0 -123
  143. package/src/static/signals/TerminalSignal.js +0 -273
  144. package/src/static/styles/main.css +0 -1761
  145. package/src/styles/input.css +0 -3
  146. package/tailwind.config.ts +0 -22
  147. package/tsconfig.json +0 -37
@@ -1,7 +0,0 @@
1
- interface TerminalProps {
2
- previewPort?: number;
3
- workingDirectory?: string;
4
- }
5
- export declare function Code({ previewPort, workingDirectory }: TerminalProps): import("hono/jsx/jsx-dev-runtime").JSX.Element;
6
- export {};
7
- //# sourceMappingURL=Code.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Code.d.ts","sourceRoot":"","sources":["../../src/pages/Code.tsx"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,IAAI,CAAC,EAAE,WAAkB,EAAE,gBAAgB,EAAE,EAAE,aAAa,kDAwB3E"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "hono/jsx/jsx-runtime";
2
- import Layout from "../layouts/Layout.js";
3
- import { Sidebar } from "../components/Sidebar.js";
4
- import { SimpleLivePreview } from "../components/SimpleLivePreview.js";
5
- export function Code({ previewPort = 1234, workingDirectory }) {
6
- return (_jsx(Layout, { title: "Code Editor", children: _jsxs("div", { id: "code-container", class: "h-screen flex bg-[#1e1e1e] relative", children: [_jsx("button", { type: "button", id: "mobile-sidebar-toggle", class: "fixed top-4 left-4 z-60 p-3 bg-[#2d2d30] border border-[#3c3c3c] rounded-lg shadow-xl hover:bg-[#3c3c3c] transition-all md:hidden", title: "Toggle Sidebar", children: _jsx("iconify-icon", { icon: "tabler:menu-2", width: "20", height: "20", class: "text-[#cccccc]" }) }), _jsx(Sidebar, { id: "sidebar", previewPort: previewPort, workingDirectory: workingDirectory }), _jsx("div", { class: "flex-1 md:flex-1", children: _jsx(SimpleLivePreview, { id: "live-preview", previewPort: previewPort }) })] }) }));
7
- }
8
- //# sourceMappingURL=Code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Code.js","sourceRoot":"","sources":["../../src/pages/Code.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAOvE,MAAM,UAAU,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE,gBAAgB,EAAiB;IAC1E,OAAO,CACL,KAAC,MAAM,IAAC,KAAK,EAAC,aAAa,YACzB,eAAK,EAAE,EAAC,gBAAgB,EAAC,KAAK,EAAC,qCAAqC,aAElE,iBACE,IAAI,EAAC,QAAQ,EACb,EAAE,EAAC,uBAAuB,EAC1B,KAAK,EAAC,mIAAmI,EACzI,KAAK,EAAC,gBAAgB,YAEtB,uBAAc,IAAI,EAAC,eAAe,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,gBAAgB,GAAgB,GACzF,EAGT,KAAC,OAAO,IAAC,EAAE,EAAC,SAAS,EAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,GAAI,EAGtF,cAAK,KAAK,EAAC,kBAAkB,YAC3B,KAAC,iBAAiB,IAAC,EAAE,EAAC,cAAc,EAAC,WAAW,EAAE,WAAW,GAAI,GAC7D,IACF,GACC,CACV,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- interface TerminalProps {
2
- previewPort?: number;
3
- workingDirectory?: string;
4
- }
5
- export declare function Home({ previewPort, workingDirectory }: TerminalProps): import("hono/jsx/jsx-dev-runtime").JSX.Element;
6
- export {};
7
- //# sourceMappingURL=Home.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Home.d.ts","sourceRoot":"","sources":["../../src/pages/Home.tsx"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,IAAI,CAAC,EAAE,WAAkB,EAAE,gBAAgB,EAAE,EAAE,aAAa,kDAiB3E"}
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "hono/jsx/jsx-runtime";
2
- import Layout from "../layouts/Layout.js";
3
- import { Terminal as TerminalComponent } from "../components/Terminal.js";
4
- import { SimpleLivePreview } from "../components/SimpleLivePreview.js";
5
- export function Home({ previewPort = 1234, workingDirectory }) {
6
- return (_jsx(Layout, { title: "Terminal", children: _jsxs("div", { id: "terminal-container", class: "h-screen flex", children: [_jsx("div", { id: "terminal-pane", class: "w-2/5 border-r border-gray-200 transition-all duration-300", children: _jsx(TerminalComponent, { id: "terminal", sessionId: "shared-terminal-session" }) }), _jsx(SimpleLivePreview, { id: "live-preview", previewPort: previewPort })] }) }));
7
- }
8
- //# sourceMappingURL=Home.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Home.js","sourceRoot":"","sources":["../../src/pages/Home.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAOvE,MAAM,UAAU,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,EAAE,gBAAgB,EAAiB;IAC1E,OAAO,CACL,KAAC,MAAM,IAAC,KAAK,EAAC,UAAU,YACtB,eAAK,EAAE,EAAC,oBAAoB,EAAC,KAAK,EAAC,eAAe,aAEhD,cAAK,EAAE,EAAC,eAAe,EAAC,KAAK,EAAC,4DAA4D,YACxF,KAAC,iBAAiB,IAChB,EAAE,EAAC,UAAU,EACb,SAAS,EAAC,yBAAyB,GACnC,GACE,EAGN,KAAC,iBAAiB,IAAC,EAAE,EAAC,cAAc,EAAC,WAAW,EAAE,WAAW,GAAI,IAC7D,GACC,CACV,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function Welcome(): import("hono/jsx/jsx-dev-runtime").JSX.Element;
2
- //# sourceMappingURL=Welcome.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Welcome.d.ts","sourceRoot":"","sources":["../../src/pages/Welcome.tsx"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,mDAqDtB"}
@@ -1,6 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "hono/jsx/jsx-runtime";
2
- import Layout from "../layouts/Layout.js";
3
- export function Welcome() {
4
- return (_jsx(Layout, { title: "Welcome to Treesap", children: _jsxs("div", { class: "h-screen flex flex-col items-center justify-center bg-[#1e1e1e] text-white p-8", children: [_jsx("div", { class: "text-center mb-12", children: _jsxs("div", { class: "flex items-center justify-center mb-4", children: [_jsx("div", { class: "w-12 h-12 bg-gradient-to-br from-green-400 to-green-600 rounded-lg flex items-center justify-center mr-4", children: _jsx("span", { class: "text-2xl", children: "\uD83C\uDF33" }) }), _jsxs("div", { class: "text-left", children: [_jsx("h1", { class: "text-3xl font-semibold text-white", children: "Treesap" }), _jsx("p", { class: "text-gray-400 text-sm", children: "Free \u2022 Development Environment" })] })] }) }), _jsxs("div", { class: "flex gap-8 mb-16", children: [_jsxs("a", { href: "/code", class: "flex flex-col items-center p-6 bg-[#2a2a2a] hover:bg-[#3a3a3a] rounded-lg transition-colors group min-w-[140px]", children: [_jsx("div", { class: "w-8 h-8 mb-3 text-gray-300 group-hover:text-white transition-colors", children: _jsx("iconify-icon", { icon: "tabler:folder-open", width: "32", height: "32" }) }), _jsx("span", { class: "text-gray-300 group-hover:text-white transition-colors", children: "Open project" })] }), _jsxs("button", { class: "flex flex-col items-center p-6 bg-[#2a2a2a] hover:bg-[#3a3a3a] rounded-lg transition-colors group min-w-[140px] opacity-50 cursor-not-allowed", disabled: true, children: [_jsx("div", { class: "w-8 h-8 mb-3 text-gray-500", children: _jsx("iconify-icon", { icon: "tabler:git-branch", width: "32", height: "32" }) }), _jsx("span", { class: "text-gray-500", children: "Clone repo" })] }), _jsxs("button", { class: "flex flex-col items-center p-6 bg-[#2a2a2a] hover:bg-[#3a3a3a] rounded-lg transition-colors group min-w-[140px] opacity-50 cursor-not-allowed", disabled: true, children: [_jsx("div", { class: "w-8 h-8 mb-3 text-gray-500", children: _jsx("iconify-icon", { icon: "tabler:terminal", width: "32", height: "32" }) }), _jsx("span", { class: "text-gray-500", children: "Connect via SSH" })] })] })] }) }));
5
- }
6
- //# sourceMappingURL=Welcome.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Welcome.js","sourceRoot":"","sources":["../../src/pages/Welcome.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAE1C,MAAM,UAAU,OAAO;IACrB,OAAO,CACL,KAAC,MAAM,IAAC,KAAK,EAAC,oBAAoB,YAChC,eAAK,KAAK,EAAC,gFAAgF,aAEzF,cAAK,KAAK,EAAC,mBAAmB,YAC5B,eAAK,KAAK,EAAC,uCAAuC,aAChD,cAAK,KAAK,EAAC,0GAA0G,YACnH,eAAM,KAAK,EAAC,UAAU,6BAAU,GAC5B,EACN,eAAK,KAAK,EAAC,WAAW,aACpB,aAAI,KAAK,EAAC,mCAAmC,wBAAa,EAC1D,YAAG,KAAK,EAAC,uBAAuB,oDAAmC,IAC/D,IACF,GACF,EAGN,eAAK,KAAK,EAAC,kBAAkB,aAC3B,aACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,iHAAiH,aAEvH,cAAK,KAAK,EAAC,qEAAqE,YAC9E,uBAAc,IAAI,EAAC,oBAAoB,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,GAAgB,GAC1E,EACN,eAAM,KAAK,EAAC,wDAAwD,6BAAoB,IACtF,EAEJ,kBACE,KAAK,EAAC,+IAA+I,EACrJ,QAAQ,mBAER,cAAK,KAAK,EAAC,4BAA4B,YACrC,uBAAc,IAAI,EAAC,mBAAmB,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,GAAgB,GACzE,EACN,eAAM,KAAK,EAAC,eAAe,2BAAkB,IACtC,EAET,kBACE,KAAK,EAAC,+IAA+I,EACrJ,QAAQ,mBAER,cAAK,KAAK,EAAC,4BAA4B,YACrC,uBAAc,IAAI,EAAC,iBAAiB,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,GAAgB,GACvE,EACN,eAAM,KAAK,EAAC,eAAe,gCAAuB,IAC3C,IACL,IAEF,GACC,CACV,CAAC;AACJ,CAAC"}
package/dist/server.d.ts DELETED
@@ -1,11 +0,0 @@
1
- export interface TreesapConfig {
2
- port?: number;
3
- projectRoot?: string;
4
- previewPort?: number;
5
- devCommand?: string;
6
- devPort?: number;
7
- }
8
- export declare function startServer(config?: TreesapConfig & {
9
- autoStartDev?: boolean;
10
- }): Promise<void>;
11
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,MAAM,GAAE,aAAa,GAAG;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,iBAgfxF"}
package/dist/server.js DELETED
@@ -1,434 +0,0 @@
1
- import { jsx as _jsx } from "hono/jsx/jsx-runtime";
2
- import { Hono } from "hono";
3
- import { serveStatic } from "@hono/node-server/serve-static";
4
- import NotFoundLayout from "./layouts/NotFoundLayout.js";
5
- import { Welcome } from "./pages/Welcome.js";
6
- import { Code } from "./pages/Code.js";
7
- import { DevServerManager } from "./services/dev-server.js";
8
- import { TerminalService } from "./services/terminal.js";
9
- import { WebSocketTerminalService } from "./services/websocket.js";
10
- import * as path from 'node:path';
11
- import process from "node:process";
12
- import { fileURLToPath } from 'node:url';
13
- export async function startServer(config = {}) {
14
- const { port = 1234, projectRoot = process.cwd(), previewPort = 5173, devCommand, devPort, autoStartDev = false } = config;
15
- // Change the current working directory to the project root
16
- process.chdir(projectRoot);
17
- // Initialize dev server manager if dev command is provided
18
- let devServerManager = null;
19
- if (devCommand) {
20
- devServerManager = new DevServerManager(devCommand, devPort);
21
- devServerManager.setupGracefulShutdown();
22
- // Auto-start dev server if enabled
23
- if (autoStartDev) {
24
- devServerManager.start().catch(error => {
25
- console.error("Failed to auto-start dev server:", error);
26
- });
27
- }
28
- }
29
- const app = new Hono();
30
- // Resolve module static directory (so consumers can see bundled assets)
31
- const moduleDir = path.dirname(fileURLToPath(import.meta.url));
32
- const moduleStaticRoot = path.join(moduleDir, 'static');
33
- // Welcome page (default)
34
- app.get("/", (c) => {
35
- // Additional cache prevention headers
36
- c.header('Cache-Control', 'no-cache, no-store, must-revalidate, private');
37
- c.header('Pragma', 'no-cache');
38
- c.header('Expires', '0');
39
- return c.html(_jsx(Welcome, {}));
40
- });
41
- // Code page
42
- app.get("/code", (c) => {
43
- // Additional cache prevention headers
44
- c.header('Cache-Control', 'no-cache, no-store, must-revalidate, private');
45
- c.header('Pragma', 'no-cache');
46
- c.header('Expires', '0');
47
- return c.html(_jsx(Code, { previewPort: previewPort }));
48
- });
49
- // Claude page
50
- app.get("/claude", (c) => {
51
- // Additional cache prevention headers
52
- c.header('Cache-Control', 'no-cache, no-store, must-revalidate, private');
53
- c.header('Pragma', 'no-cache');
54
- c.header('Expires', '0');
55
- return c.html(_jsx(Code, { previewPort: previewPort, workingDirectory: projectRoot }));
56
- });
57
- // Dev server management endpoints
58
- app.get("/api/dev-status", (c) => {
59
- if (!devServerManager) {
60
- return c.json({ error: "No dev server configured" }, 400);
61
- }
62
- return c.json(devServerManager.getStatus());
63
- });
64
- app.post("/api/dev-restart", async (c) => {
65
- if (!devServerManager) {
66
- return c.json({ error: "No dev server configured" }, 400);
67
- }
68
- try {
69
- await devServerManager.restart();
70
- return c.json({ success: true, message: "Dev server restarted" });
71
- }
72
- catch (error) {
73
- return c.json({
74
- error: "Failed to restart dev server",
75
- details: error instanceof Error ? error.message : String(error)
76
- }, 500);
77
- }
78
- });
79
- app.post("/api/dev-start", async (c) => {
80
- if (!devServerManager) {
81
- return c.json({ error: "No dev server configured" }, 400);
82
- }
83
- try {
84
- await devServerManager.start();
85
- return c.json({ success: true, message: "Dev server started" });
86
- }
87
- catch (error) {
88
- return c.json({
89
- error: "Failed to start dev server",
90
- details: error instanceof Error ? error.message : String(error)
91
- }, 500);
92
- }
93
- });
94
- app.post("/api/dev-stop", async (c) => {
95
- if (!devServerManager) {
96
- return c.json({ error: "No dev server configured" }, 400);
97
- }
98
- try {
99
- await devServerManager.stop();
100
- return c.json({ success: true, message: "Dev server stopped" });
101
- }
102
- catch (error) {
103
- return c.json({
104
- error: "Failed to stop dev server",
105
- details: error instanceof Error ? error.message : String(error)
106
- }, 500);
107
- }
108
- });
109
- app.get("/api/dev-logs", (c) => {
110
- if (!devServerManager) {
111
- return c.json({ error: "No dev server configured" }, 400);
112
- }
113
- const logs = devServerManager.getLogs();
114
- return c.json({ logs });
115
- });
116
- // List active terminal sessions with WebSocket client info
117
- app.get("/api/terminal/sessions", (c) => {
118
- const sessions = TerminalService.getAllSessions();
119
- const wsActiveSessions = WebSocketTerminalService.getActiveSessions();
120
- return c.json({
121
- sessions: sessions.map(session => {
122
- const wsInfo = wsActiveSessions.find(ws => ws.sessionId === session.id);
123
- return {
124
- id: session.id,
125
- createdAt: session.createdAt,
126
- lastActivity: session.lastActivity,
127
- connectedClients: wsInfo ? wsInfo.clientCount : 0
128
- };
129
- }),
130
- totalConnectedClients: WebSocketTerminalService.getConnectedClients()
131
- });
132
- });
133
- // Get specific terminal session status
134
- app.get("/api/terminal/sessions/:sessionId/status", (c) => {
135
- const sessionId = c.req.param('sessionId');
136
- const session = TerminalService.getSession(sessionId);
137
- if (!session) {
138
- return c.json({ error: "Session not found" }, 404);
139
- }
140
- const clients = WebSocketTerminalService.getSessionClients(sessionId);
141
- return c.json({
142
- id: session.id,
143
- createdAt: session.createdAt,
144
- lastActivity: session.lastActivity,
145
- connectedClients: clients.length,
146
- clientIds: clients
147
- });
148
- });
149
- // Send command to terminal via API
150
- app.post("/api/terminal/sessions/:sessionId/command", async (c) => {
151
- const sessionId = c.req.param('sessionId');
152
- const body = await c.req.json();
153
- const { command } = body;
154
- if (!command) {
155
- return c.json({ error: "Command is required" }, 400);
156
- }
157
- // Get or create terminal session
158
- let session = TerminalService.getSession(sessionId);
159
- if (!session) {
160
- session = TerminalService.createSession(sessionId);
161
- }
162
- const success = WebSocketTerminalService.sendCommandToSession(sessionId, command);
163
- if (success) {
164
- return c.json({
165
- success: true,
166
- message: `Command sent to session ${sessionId}`,
167
- connectedClients: WebSocketTerminalService.getSessionClients(sessionId).length
168
- });
169
- }
170
- else {
171
- return c.json({ error: "Failed to send command to terminal" }, 500);
172
- }
173
- });
174
- // Get recent output from terminal session (for API clients)
175
- app.get("/api/terminal/sessions/:sessionId/output", async (c) => {
176
- const sessionId = c.req.param('sessionId');
177
- const session = TerminalService.getSession(sessionId);
178
- if (!session) {
179
- return c.json({ error: "Session not found" }, 404);
180
- }
181
- // Note: This is a basic implementation. For production, you'd want to
182
- // store recent output history in the TerminalService
183
- return c.json({
184
- sessionId,
185
- message: "Output streaming available via WebSocket connection",
186
- connectedClients: WebSocketTerminalService.getSessionClients(sessionId).length,
187
- websocketUrl: `ws://${c.req.header('host')}/terminal/ws`
188
- });
189
- });
190
- // Terminal endpoints
191
- app.post("/terminal/execute/:sessionId", async (c) => {
192
- const sessionId = c.req.param('sessionId');
193
- const body = await c.req.json();
194
- const { command } = body;
195
- if (!command) {
196
- return c.json({ error: "Command is required" }, 400);
197
- }
198
- // Get or create terminal session
199
- let session = TerminalService.getSession(sessionId);
200
- if (!session) {
201
- session = TerminalService.createSession(sessionId);
202
- }
203
- const success = TerminalService.executeCommand(sessionId, command);
204
- if (success) {
205
- return c.json({ success: true });
206
- }
207
- else {
208
- return c.json({ error: "Failed to execute command" }, 500);
209
- }
210
- });
211
- app.post("/terminal/input/:sessionId", async (c) => {
212
- const sessionId = c.req.param('sessionId');
213
- const body = await c.req.json();
214
- const { input } = body;
215
- if (input === undefined) {
216
- return c.json({ error: "Input is required" }, 400);
217
- }
218
- // Get or create terminal session
219
- let session = TerminalService.getSession(sessionId);
220
- if (!session) {
221
- session = TerminalService.createSession(sessionId);
222
- }
223
- // Send input directly to PTY
224
- try {
225
- session.lastActivity = new Date();
226
- session.process.write(input);
227
- return c.json({ success: true });
228
- }
229
- catch (error) {
230
- console.error(`Error sending input to session ${sessionId}:`, error);
231
- return c.json({ error: "Failed to send input" }, 500);
232
- }
233
- });
234
- app.get("/terminal/stream/:sessionId", async (c) => {
235
- const sessionId = c.req.param('sessionId');
236
- // Get or create terminal session
237
- let session = TerminalService.getSession(sessionId);
238
- if (!session) {
239
- session = TerminalService.createSession(sessionId);
240
- }
241
- // Set SSE headers
242
- c.header('Content-Type', 'text/event-stream');
243
- c.header('Cache-Control', 'no-cache');
244
- c.header('Connection', 'keep-alive');
245
- c.header('Access-Control-Allow-Origin', '*');
246
- const stream = new ReadableStream({
247
- start(controller) {
248
- const encoder = new TextEncoder();
249
- // Send initial connection event
250
- controller.enqueue(encoder.encode(`data: ${JSON.stringify({ type: 'connected' })}\n\n`));
251
- // Set up output listener
252
- const handleOutput = (data) => {
253
- try {
254
- controller.enqueue(encoder.encode(`data: ${JSON.stringify(data)}\n\n`));
255
- }
256
- catch (error) {
257
- console.error('Error sending terminal output:', error);
258
- // Remove listener on error to prevent memory leaks
259
- session.eventEmitter.removeListener('output', handleOutput);
260
- }
261
- };
262
- session.eventEmitter.on('output', handleOutput);
263
- // Handle client disconnect
264
- const handleDisconnect = () => {
265
- try {
266
- session.eventEmitter.removeListener('output', handleOutput);
267
- }
268
- catch (error) {
269
- console.error('Error removing output listener:', error);
270
- }
271
- };
272
- // Clean up on stream close
273
- return () => {
274
- handleDisconnect();
275
- };
276
- }
277
- });
278
- return new Response(stream, {
279
- headers: {
280
- 'Content-Type': 'text/event-stream',
281
- 'Cache-Control': 'no-cache',
282
- 'Connection': 'keep-alive',
283
- 'Access-Control-Allow-Origin': '*'
284
- }
285
- });
286
- });
287
- // Delete terminal session
288
- app.delete("/terminal/session/:sessionId", async (c) => {
289
- const sessionId = c.req.param('sessionId');
290
- if (!sessionId) {
291
- return c.json({ error: "Session ID is required" }, 400);
292
- }
293
- const success = TerminalService.destroySession(sessionId);
294
- if (success) {
295
- return c.json({ message: `Terminal session ${sessionId} destroyed successfully` });
296
- }
297
- else {
298
- console.log(`Terminal session not found: ${sessionId}`);
299
- return c.json({ error: `Terminal session ${sessionId} not found` }, 404);
300
- }
301
- });
302
- // Claude Code subprocess management
303
- let claudeCodeManager = null;
304
- app.post("/api/claude-start", async (c) => {
305
- try {
306
- if (claudeCodeManager && claudeCodeManager.getStatus().running) {
307
- return c.json({ error: "Claude Code is already running" }, 400);
308
- }
309
- claudeCodeManager = new DevServerManager("claude");
310
- claudeCodeManager.setupGracefulShutdown();
311
- await claudeCodeManager.start();
312
- return c.json({ success: true, message: "Claude Code started" });
313
- }
314
- catch (error) {
315
- return c.json({
316
- error: "Failed to start Claude Code",
317
- details: error instanceof Error ? error.message : String(error)
318
- }, 500);
319
- }
320
- });
321
- app.get("/api/claude-status", (c) => {
322
- if (!claudeCodeManager) {
323
- return c.json({ running: false });
324
- }
325
- return c.json(claudeCodeManager.getStatus());
326
- });
327
- app.post("/api/claude-stop", async (c) => {
328
- if (!claudeCodeManager) {
329
- return c.json({ error: "No Claude Code process running" }, 400);
330
- }
331
- try {
332
- await claudeCodeManager.stop();
333
- claudeCodeManager = null;
334
- return c.json({ success: true, message: "Claude Code stopped" });
335
- }
336
- catch (error) {
337
- return c.json({
338
- error: "Failed to stop Claude Code",
339
- details: error instanceof Error ? error.message : String(error)
340
- }, 500);
341
- }
342
- });
343
- app.post("/api/claude-send", async (c) => {
344
- if (!claudeCodeManager) {
345
- return c.json({ error: "Claude Code process not running" }, 400);
346
- }
347
- try {
348
- const body = await c.req.json();
349
- const { command } = body;
350
- if (!command) {
351
- return c.json({ error: "Command is required" }, 400);
352
- }
353
- // Send command to Claude Code stdin
354
- const success = claudeCodeManager.sendCommand(command);
355
- if (success) {
356
- return c.json({ success: true, message: "Command sent to Claude Code" });
357
- }
358
- else {
359
- return c.json({ error: "Failed to send command - process may not be running" }, 500);
360
- }
361
- }
362
- catch (error) {
363
- return c.json({
364
- error: "Failed to send command to Claude Code",
365
- details: error instanceof Error ? error.message : String(error)
366
- }, 500);
367
- }
368
- });
369
- // Serve static files from the module's bundled static directory
370
- app.get("*", serveStatic({ root: moduleStaticRoot }));
371
- // 404 Handler
372
- app.notFound((c) => c.html(_jsx(NotFoundLayout, {})));
373
- const { serve } = await import('@hono/node-server');
374
- // Start the server and initialize WebSocket
375
- const server = serve({
376
- fetch: app.fetch,
377
- port,
378
- });
379
- // Initialize WebSocket service
380
- WebSocketTerminalService.initialize(server);
381
- // Setup global graceful shutdown for all subprocess managers
382
- const setupGlobalShutdown = () => {
383
- const cleanup = async () => {
384
- console.log('\nšŸ›‘ Shutting down server and all subprocesses...');
385
- // Clean up WebSocket connections
386
- WebSocketTerminalService.cleanup();
387
- // Stop Claude Code process if running
388
- if (claudeCodeManager) {
389
- try {
390
- await claudeCodeManager.stop();
391
- claudeCodeManager = null;
392
- }
393
- catch (error) {
394
- console.error('Error stopping Claude Code process:', error);
395
- }
396
- }
397
- // Stop dev server if running
398
- if (devServerManager) {
399
- try {
400
- await devServerManager.stop();
401
- }
402
- catch (error) {
403
- console.error('Error stopping dev server:', error);
404
- }
405
- }
406
- process.exit(0);
407
- };
408
- // Handle Ctrl+C (SIGINT)
409
- process.on('SIGINT', () => {
410
- cleanup().catch(() => process.exit(1));
411
- });
412
- // Handle termination signal
413
- process.on('SIGTERM', () => {
414
- cleanup().catch(() => process.exit(1));
415
- });
416
- // Handle process exit (synchronous cleanup only)
417
- process.on('exit', () => {
418
- if (claudeCodeManager) {
419
- try {
420
- claudeCodeManager.stop();
421
- }
422
- catch {
423
- // Silently handle cleanup errors during exit
424
- }
425
- }
426
- });
427
- };
428
- setupGlobalShutdown();
429
- // Initialize terminal service cleanup
430
- TerminalService.setupGlobalCleanup();
431
- console.log(`\n🌳 Treesap server running at http://localhost:${port}`);
432
- console.log(`šŸ”Œ WebSocket terminal server available at ws://localhost:${port}/terminal/ws\n`);
433
- }
434
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,cAAc,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAWzC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAqD,EAAE;IACvF,MAAM,EACJ,IAAI,GAAG,IAAI,EACX,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,EAC3B,WAAW,GAAG,IAAI,EAClB,UAAU,EACV,OAAO,EACP,YAAY,GAAG,KAAK,EACrB,GAAG,MAAM,CAAC;IAEX,2DAA2D;IAC3D,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAE3B,2DAA2D;IAC3D,IAAI,gBAAgB,GAA4B,IAAI,CAAC;IACrD,IAAI,UAAU,EAAE,CAAC;QACf,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7D,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;QAEzC,mCAAmC;QACnC,IAAI,YAAY,EAAE,CAAC;YACjB,gBAAgB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACrC,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,wEAAwE;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAExD,yBAAyB;IACzB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAU,EAAE,EAAE;QAC1B,sCAAsC;QACtC,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,8CAA8C,CAAC,CAAC;QAC1E,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC,IAAI,CAAC,KAAC,OAAO,KAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,YAAY;IACZ,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAU,EAAE,EAAE;QAC9B,sCAAsC;QACtC,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,8CAA8C,CAAC,CAAC;QAC1E,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC,IAAI,CAAC,KAAC,IAAI,IAAC,WAAW,EAAE,WAAW,GAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,cAAc;IACd,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAU,EAAE,EAAE;QAChC,sCAAsC;QACtC,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,8CAA8C,CAAC,CAAC;QAC1E,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC,IAAI,CAAC,KAAC,IAAI,IAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,GAAI,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAGH,kCAAkC;IAClC,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAU,EAAE,EAAE;QACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QAChD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;YACjC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,8BAA8B;gBACrC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,4BAA4B;gBACnC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,2BAA2B;gBAClC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAU,EAAE,EAAE;QACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,2DAA2D;IAC3D,GAAG,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAU,EAAE,EAAE;QAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC;QAClD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;QAEtE,OAAO,CAAC,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxE,OAAO;oBACL,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;oBAClC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;iBAClD,CAAC;YACJ,CAAC,CAAC;YACF,qBAAqB,EAAE,wBAAwB,CAAC,mBAAmB,EAAE;SACtE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,GAAG,CAAC,GAAG,CAAC,0CAA0C,EAAE,CAAC,CAAU,EAAE,EAAE;QACjE,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,wBAAwB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAEtE,OAAO,CAAC,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,gBAAgB,EAAE,OAAO,CAAC,MAAM;YAChC,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,mCAAmC;IACnC,GAAG,CAAC,IAAI,CAAC,2CAA2C,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QACzE,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,iCAAiC;QACjC,IAAI,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,wBAAwB,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAElF,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,2BAA2B,SAAS,EAAE;gBAC/C,gBAAgB,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,MAAM;aAC/E,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,EAAE,GAAG,CAAC,CAAC;QACtE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,GAAG,CAAC,GAAG,CAAC,0CAA0C,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QACvE,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QAED,sEAAsE;QACtE,qDAAqD;QACrD,OAAO,CAAC,CAAC,IAAI,CAAC;YACZ,SAAS;YACT,OAAO,EAAE,qDAAqD;YAC9D,gBAAgB,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,MAAM;YAC9E,YAAY,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc;SACzD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,qBAAqB;IACrB,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QAC5D,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,iCAAiC;QACjC,IAAI,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEnE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QAC1D,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEvB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QAED,iCAAiC;QACjC,IAAI,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;YAClC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YACrE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QAC1D,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE3C,iCAAiC;QACjC,IAAI,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QAED,kBAAkB;QAClB,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;QAC9C,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACtC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACrC,CAAC,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;YAChC,KAAK,CAAC,UAAU;gBACd,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;gBAElC,gCAAgC;gBAChC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;gBAEzF,yBAAyB;gBACzB,MAAM,YAAY,GAAG,CAAC,IAAS,EAAE,EAAE;oBACjC,IAAI,CAAC;wBACH,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC1E,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;wBACvD,mDAAmD;wBACnD,OAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC,CAAC;gBAEF,OAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAEjD,2BAA2B;gBAC3B,MAAM,gBAAgB,GAAG,GAAG,EAAE;oBAC5B,IAAI,CAAC;wBACH,OAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;oBAC/D,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC,CAAC;gBAEF,2BAA2B;gBAC3B,OAAO,GAAG,EAAE;oBACV,gBAAgB,EAAE,CAAC;gBACrB,CAAC,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC1B,OAAO,EAAE;gBACP,cAAc,EAAE,mBAAmB;gBACnC,eAAe,EAAE,UAAU;gBAC3B,YAAY,EAAE,YAAY;gBAC1B,6BAA6B,EAAE,GAAG;aACnC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QAC9D,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE3C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAE1D,IAAI,OAAO,EAAE,CAAC;YAEZ,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,SAAS,yBAAyB,EAAE,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,SAAS,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oCAAoC;IACpC,IAAI,iBAAiB,GAA4B,IAAI,CAAC;IAEtD,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;gBAC/D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,GAAG,CAAC,CAAC;YAClE,CAAC;YAED,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACnD,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;YAC1C,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAEhC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,6BAA6B;gBACpC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAU,EAAE,EAAE;QAC3C,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QAChD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC/B,iBAAiB,GAAG,IAAI,CAAC;YACzB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,4BAA4B;gBACnC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QAChD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,GAAG,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;YAEzB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC;YAED,oCAAoC;YACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAEvD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qDAAqD,EAAE,EAAE,GAAG,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,uCAAuC;gBAC9C,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,gEAAgE;IAChE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAGtD,cAAc;IACd,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAC,cAAc,KAAG,CAAC,CAAC,CAAC;IAEzD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAEpD,4CAA4C;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC;QACnB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI;KACL,CAAW,CAAC;IAEb,+BAA+B;IAC/B,wBAAwB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAE5C,6DAA6D;IAC7D,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YAEjE,iCAAiC;YACjC,wBAAwB,CAAC,OAAO,EAAE,CAAC;YAEnC,sCAAsC;YACtC,IAAI,iBAAiB,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC;oBAC/B,iBAAiB,GAAG,IAAI,CAAC;gBAC3B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAED,6BAA6B;YAC7B,IAAI,gBAAgB,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;gBAChC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,yBAAyB;QACzB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,iDAAiD;QACjD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,IAAI,iBAAiB,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBAC3B,CAAC;gBAAC,MAAM,CAAC;oBACP,6CAA6C;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,mBAAmB,EAAE,CAAC;IAEtB,sCAAsC;IACtC,eAAe,CAAC,kBAAkB,EAAE,CAAC;IAErC,OAAO,CAAC,GAAG,CAAC,mDAAmD,IAAI,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,4DAA4D,IAAI,gBAAgB,CAAC,CAAC;AAChG,CAAC"}
@@ -1,29 +0,0 @@
1
- export interface DevServerStatus {
2
- running: boolean;
3
- pid?: number;
4
- startTime?: Date;
5
- port?: number;
6
- command?: string;
7
- logs: string[];
8
- errors: string[];
9
- }
10
- export declare class DevServerManager {
11
- private command;
12
- private port?;
13
- private childProcess;
14
- private status;
15
- private logBuffer;
16
- private errorBuffer;
17
- private maxBufferSize;
18
- constructor(command: string, port?: number | undefined);
19
- start(): Promise<void>;
20
- stop(): Promise<void>;
21
- restart(): Promise<void>;
22
- getStatus(): DevServerStatus;
23
- getLogs(_since?: Date): string[];
24
- sendCommand(command: string): boolean;
25
- private addLog;
26
- private addError;
27
- setupGracefulShutdown(): void;
28
- }
29
- //# sourceMappingURL=dev-server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/services/dev-server.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAOf,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,IAAI,CAAC;IANlD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,aAAa,CAAQ;gBAET,OAAO,EAAE,MAAM,EAAU,IAAI,CAAC,EAAE,MAAM,YAAA;IAUpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+DtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,SAAS,IAAI,eAAe;IAQ5B,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE;IAKhC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAerC,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,QAAQ;IAYhB,qBAAqB,IAAI,IAAI;CA+C9B"}