@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typed-assistant/builder",
3
- "version": "0.0.29",
3
+ "version": "0.0.31",
4
4
  "exports": {
5
5
  "./appProcess": "./src/appProcess.tsx",
6
6
  "./bunInstall": "./src/bunInstall.tsx",
@@ -21,25 +21,34 @@ const cssOutputFile = join(
21
21
  const convert = new Convert()
22
22
  const decoder = new TextDecoder()
23
23
 
24
- const readers = new Map<
25
- ReadableStream<Uint8Array>,
26
- ReadableStreamDefaultReader<Uint8Array>
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 = (stream: ReadableStream<Uint8Array>) => {
30
- const cachedReader = readers.get(stream)
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<number, (message: string) => void>()
42
- const logSubscribers = new Map<number, () => void>()
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
- // const stderrReader = getReader(getSubprocesses().app.stderr)
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 newLocal = decoder.decode(value)
175
- const convertedMessage = convert.toHtml(newLocal)
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))