@typed-assistant/builder 0.0.29 → 0.0.31
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 +28 -22
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
|
|
|
@@ -167,26 +176,23 @@ export const startWebappServer = async ({
|
|
|
167
176
|
|
|
168
177
|
// eslint-disable-next-line no-constant-condition
|
|
169
178
|
while (true) {
|
|
170
|
-
const stdoutReader = getReader(getSubprocesses().app.stdout)
|
|
171
|
-
|
|
179
|
+
const stdoutReader = getReader("stdout", getSubprocesses().app.stdout)
|
|
180
|
+
const stderrReader = getReader("stderr", getSubprocesses().app.stderr)
|
|
172
181
|
const { value } = await stdoutReader.read()
|
|
182
|
+
const { value: stderrValue } = value
|
|
183
|
+
? { value: undefined }
|
|
184
|
+
: await stderrReader.read()
|
|
173
185
|
|
|
174
|
-
const
|
|
175
|
-
const convertedMessage = convert.toHtml(
|
|
186
|
+
const decodedString = decoder.decode(value ?? stderrValue)
|
|
187
|
+
const convertedMessage = convert.toHtml(decodedString)
|
|
176
188
|
if (convertedMessage !== "") {
|
|
177
189
|
lastMessage = convertedMessage
|
|
178
190
|
}
|
|
179
191
|
if (convertedMessage === "") {
|
|
180
|
-
// const { value } = await stderrReader.read()
|
|
181
|
-
// const newLocal = decoder.decode(value)
|
|
182
|
-
// const convertedMessage = convert.toHtml(newLocal)
|
|
183
|
-
|
|
184
192
|
subscribers.forEach((send) =>
|
|
185
193
|
send(
|
|
186
194
|
"Process is returning an empty string. This was the last non-empty message:\n\n" +
|
|
187
|
-
lastMessage
|
|
188
|
-
"\n\nstderr:\n\n",
|
|
189
|
-
// convertedMessage,
|
|
195
|
+
lastMessage,
|
|
190
196
|
),
|
|
191
197
|
)
|
|
192
198
|
await new Promise((resolve) => setTimeout(resolve, 1000))
|