@typed-assistant/builder 0.0.12 → 0.0.14
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.
- package/package.json +6 -4
- package/src/appProcess.tsx +5 -2
- package/src/setupWebserver.tsx +12 -20
- package/src/webserver/Terminal.tsx +1 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typed-assistant/builder",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"exports": {
|
|
5
5
|
"./appProcess": "./src/appProcess.tsx",
|
|
6
6
|
"./bunInstall": "./src/bunInstall.tsx",
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
"ansi-to-html": "^0.7.2",
|
|
12
12
|
"elysia": "^0.8.9",
|
|
13
13
|
"@mdi/svg": "^7.3.67",
|
|
14
|
-
"ignore": "^5.3.0"
|
|
14
|
+
"ignore": "^5.3.0",
|
|
15
|
+
"react": "^18",
|
|
16
|
+
"react-dom": "^18"
|
|
15
17
|
},
|
|
16
18
|
"devDependencies": {
|
|
17
19
|
"@types/node": "^20.10.6",
|
|
@@ -21,8 +23,8 @@
|
|
|
21
23
|
"typescript": "^5.3.3",
|
|
22
24
|
"@typed-assistant/eslint-config": "0.0.4",
|
|
23
25
|
"@typed-assistant/typescript-config": "0.0.4",
|
|
24
|
-
"@typed-assistant/
|
|
25
|
-
"@typed-assistant/
|
|
26
|
+
"@typed-assistant/utils": "0.0.7",
|
|
27
|
+
"@typed-assistant/logger": "0.0.5"
|
|
26
28
|
},
|
|
27
29
|
"peerDependencies": {
|
|
28
30
|
"home-assistant-js-websocket": "^8.2.0"
|
package/src/appProcess.tsx
CHANGED
|
@@ -82,7 +82,10 @@ export async function setupWatcher(
|
|
|
82
82
|
},
|
|
83
83
|
)
|
|
84
84
|
|
|
85
|
-
startWebappServer({
|
|
85
|
+
startWebappServer({
|
|
86
|
+
basePath: addonInfo?.ingress_entry ?? "",
|
|
87
|
+
getSubprocesses: () => subprocesses,
|
|
88
|
+
})
|
|
86
89
|
|
|
87
90
|
return subprocesses
|
|
88
91
|
}
|
|
@@ -123,6 +126,6 @@ const getAddonInfo = async () => {
|
|
|
123
126
|
log("🔍 Getting addon info...")
|
|
124
127
|
|
|
125
128
|
return withErrorHandling(getSupervisorAPI)<{
|
|
126
|
-
|
|
129
|
+
ingress_entry: string
|
|
127
130
|
}>("/addons/self/info")
|
|
128
131
|
}
|
package/src/setupWebserver.tsx
CHANGED
|
@@ -41,8 +41,10 @@ const subscribers = new Map<number, (message: string) => void>()
|
|
|
41
41
|
let lastMessage = ""
|
|
42
42
|
|
|
43
43
|
export const startWebappServer = async ({
|
|
44
|
+
basePath,
|
|
44
45
|
getSubprocesses,
|
|
45
46
|
}: {
|
|
47
|
+
basePath: string
|
|
46
48
|
getSubprocesses: () => {
|
|
47
49
|
app: Subprocess<"ignore", "pipe", "pipe">
|
|
48
50
|
}
|
|
@@ -51,7 +53,7 @@ export const startWebappServer = async ({
|
|
|
51
53
|
entrypoints: [tsEntryPoint],
|
|
52
54
|
outdir: "./build",
|
|
53
55
|
define: {
|
|
54
|
-
"process.env.BASE_PATH": "
|
|
56
|
+
"process.env.BASE_PATH": `"${basePath}"`,
|
|
55
57
|
},
|
|
56
58
|
})
|
|
57
59
|
if (!buildResult.success) {
|
|
@@ -79,29 +81,14 @@ export const startWebappServer = async ({
|
|
|
79
81
|
)
|
|
80
82
|
|
|
81
83
|
const server = new Elysia()
|
|
82
|
-
.get("/", ({ request }) => {
|
|
83
|
-
getIngressPath(request)
|
|
84
|
-
return new Response(
|
|
85
|
-
`
|
|
86
|
-
<html>
|
|
87
|
-
<meta charset="UTF-8">
|
|
88
|
-
<body>
|
|
89
|
-
<a href="${getIngressPath(request)}/log.txt">Logs</a>
|
|
90
|
-
<a href="${getIngressPath(request)}/terminal">Terminal</a>
|
|
91
|
-
</body>
|
|
92
|
-
</html>
|
|
93
|
-
`,
|
|
94
|
-
{ headers: { "content-type": "text/html" } },
|
|
95
|
-
)
|
|
96
|
-
})
|
|
97
|
-
.get("/terminal", Bun.file(terminalHtmlUrl))
|
|
98
84
|
.get(
|
|
99
|
-
"/
|
|
85
|
+
"/",
|
|
100
86
|
() =>
|
|
101
87
|
new Response(indexHtml, {
|
|
102
88
|
headers: { "content-type": "text/html" },
|
|
103
89
|
}),
|
|
104
90
|
)
|
|
91
|
+
.get("/terminal", Bun.file(terminalHtmlUrl))
|
|
105
92
|
.get("/log.txt", Bun.file("./log.txt"))
|
|
106
93
|
.ws("/ws", {
|
|
107
94
|
async open(ws) {
|
|
@@ -115,12 +102,17 @@ export const startWebappServer = async ({
|
|
|
115
102
|
},
|
|
116
103
|
})
|
|
117
104
|
|
|
118
|
-
server.get(`/assets/${basename(cssOutputFile)}`, Bun.file(cssOutputFile)
|
|
105
|
+
server.get(`/assets/${basename(cssOutputFile)}`, Bun.file(cssOutputFile), {
|
|
106
|
+
headers: { "content-type": "text/css" },
|
|
107
|
+
})
|
|
119
108
|
buildResult.outputs.forEach((output) => {
|
|
120
|
-
server.get(`/assets/${basename(output.path)}`, Bun.file(output.path)
|
|
109
|
+
server.get(`/assets/${basename(output.path)}`, Bun.file(output.path), {
|
|
110
|
+
headers: { "content-type": "text/javascript" },
|
|
111
|
+
})
|
|
121
112
|
})
|
|
122
113
|
|
|
123
114
|
server.listen(8099)
|
|
115
|
+
log("🌐 Web server listening on port 8099")
|
|
124
116
|
|
|
125
117
|
// eslint-disable-next-line no-constant-condition
|
|
126
118
|
while (true) {
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import { useEffect, useState } from "react"
|
|
2
2
|
|
|
3
|
-
const basePath = process.env.BASE_PATH
|
|
4
|
-
console.log("😅😅😅 ~ basePath:", basePath)
|
|
5
|
-
|
|
6
3
|
const getWS = () => {
|
|
7
4
|
const url = new URL(window.location.href)
|
|
8
|
-
|
|
9
|
-
url.pathname = url.pathname.replace(
|
|
10
|
-
`/${endPathname[endPathname.length - 1]}`,
|
|
11
|
-
"/ws",
|
|
12
|
-
)
|
|
5
|
+
url.pathname = `${process.env.BASE_PATH}/ws`
|
|
13
6
|
url.protocol = "ws:"
|
|
14
7
|
const ws = new WebSocket(url)
|
|
15
8
|
|