@typed-assistant/builder 0.0.30 → 0.0.32
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 +1 -1
- package/src/setupWebserver.tsx +25 -14
- package/src/webserver/App.tsx +2 -2
package/package.json
CHANGED
package/src/setupWebserver.tsx
CHANGED
|
@@ -21,25 +21,34 @@ const cssOutputFile = join(
|
|
|
21
21
|
const convert = new Convert()
|
|
22
22
|
const decoder = new TextDecoder()
|
|
23
23
|
|
|
24
|
-
const readers =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
>
|
|
24
|
+
const readers = {
|
|
25
|
+
stdout: new Map<
|
|
26
|
+
ReadableStream<Uint8Array>,
|
|
27
|
+
ReadableStreamDefaultReader<Uint8Array>
|
|
28
|
+
>(),
|
|
29
|
+
stderr: new Map<
|
|
30
|
+
ReadableStream<Uint8Array>,
|
|
31
|
+
ReadableStreamDefaultReader<Uint8Array>
|
|
32
|
+
>(),
|
|
33
|
+
}
|
|
28
34
|
|
|
29
|
-
const getReader = (
|
|
30
|
-
|
|
35
|
+
const getReader = (
|
|
36
|
+
type: "stdout" | "stderr",
|
|
37
|
+
stream: ReadableStream<Uint8Array>,
|
|
38
|
+
) => {
|
|
39
|
+
const cachedReader = readers[type].get(stream)
|
|
31
40
|
if (!cachedReader) {
|
|
32
|
-
readers.forEach((_reader, cachedStream) => {
|
|
33
|
-
readers.delete(cachedStream)
|
|
41
|
+
readers[type].forEach((_reader, cachedStream) => {
|
|
42
|
+
readers[type].delete(cachedStream)
|
|
34
43
|
})
|
|
35
44
|
}
|
|
36
45
|
const reader = cachedReader ?? stream.getReader()
|
|
37
|
-
readers.set(stream, reader)
|
|
46
|
+
readers[type].set(stream, reader)
|
|
38
47
|
return reader
|
|
39
48
|
}
|
|
40
49
|
|
|
41
|
-
const subscribers = new Map<
|
|
42
|
-
const logSubscribers = new Map<
|
|
50
|
+
const subscribers = new Map<string, (message: string) => void>()
|
|
51
|
+
const logSubscribers = new Map<string, () => void>()
|
|
43
52
|
|
|
44
53
|
let lastMessage = ""
|
|
45
54
|
|
|
@@ -166,11 +175,13 @@ export const startWebappServer = async ({
|
|
|
166
175
|
})
|
|
167
176
|
|
|
168
177
|
// eslint-disable-next-line no-constant-condition
|
|
169
|
-
const stdoutReader = getReader(getSubprocesses().app.stdout)
|
|
170
|
-
const stderrReader = getReader(getSubprocesses().app.stderr)
|
|
171
178
|
while (true) {
|
|
179
|
+
const stdoutReader = getReader("stdout", getSubprocesses().app.stdout)
|
|
180
|
+
const stderrReader = getReader("stderr", getSubprocesses().app.stderr)
|
|
172
181
|
const { value } = await stdoutReader.read()
|
|
173
|
-
const { value: stderrValue } =
|
|
182
|
+
const { value: stderrValue } = value
|
|
183
|
+
? { value: undefined }
|
|
184
|
+
: await stderrReader.read()
|
|
174
185
|
|
|
175
186
|
const decodedString = decoder.decode(value ?? stderrValue)
|
|
176
187
|
const convertedMessage = convert.toHtml(decodedString)
|
package/src/webserver/App.tsx
CHANGED
|
@@ -84,8 +84,8 @@ const Logs = () => {
|
|
|
84
84
|
>
|
|
85
85
|
<pre>
|
|
86
86
|
<ul>
|
|
87
|
-
{logs.map((log) => (
|
|
88
|
-
<li key={log.date + log.time + log.message} className="">
|
|
87
|
+
{logs.map((log, index) => (
|
|
88
|
+
<li key={(log.date ?? index) + log.time + log.message} className="">
|
|
89
89
|
<span className="text-slate-400 mr-2">
|
|
90
90
|
{dateTimeVisibility === "hidden"
|
|
91
91
|
? null
|