diffsplain 0.2.1 → 0.4.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.
- package/README.md +12 -4
- package/dist/assets/{index-d0QMfM_f.js → index-CwEmcR7p.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +2 -1
- package/scripts/build-diff-data.mjs +34 -7
- package/scripts/cli-args.mjs +22 -3
- package/scripts/coding-agents.mjs +45 -6
- package/scripts/doctor.mjs +119 -0
- package/scripts/generate-summaries.mjs +333 -94
- package/scripts/present.mjs +20 -3
- package/scripts/serve-built.mjs +28 -0
package/scripts/serve-built.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { createServer } from 'node:http';
|
|
4
|
+
import { watchFile, unwatchFile } from 'node:fs';
|
|
4
5
|
import { readFile, stat } from 'node:fs/promises';
|
|
5
6
|
import { Readable } from 'node:stream';
|
|
6
7
|
import { dirname, extname, resolve, sep } from 'node:path';
|
|
@@ -109,6 +110,17 @@ async function send(nodeResponse, response) {
|
|
|
109
110
|
const server = createServer(async (request, response) => {
|
|
110
111
|
try {
|
|
111
112
|
const webRequest = nodeRequest(request);
|
|
113
|
+
if (new URL(webRequest.url).pathname === '/events') {
|
|
114
|
+
response.writeHead(200, {
|
|
115
|
+
'content-type': 'text/event-stream',
|
|
116
|
+
'cache-control': 'no-store',
|
|
117
|
+
connection: 'keep-alive',
|
|
118
|
+
});
|
|
119
|
+
response.write('event: ready\ndata: {}\n\n');
|
|
120
|
+
eventClients.add(response);
|
|
121
|
+
request.once('close', () => eventClients.delete(response));
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
112
124
|
await send(response, await fetchAsset(webRequest));
|
|
113
125
|
} catch (error) {
|
|
114
126
|
console.error(error);
|
|
@@ -117,6 +129,19 @@ const server = createServer(async (request, response) => {
|
|
|
117
129
|
}
|
|
118
130
|
});
|
|
119
131
|
|
|
132
|
+
const eventClients = new Set();
|
|
133
|
+
watchFile(output, { interval: 100 }, (current, previous) => {
|
|
134
|
+
if (
|
|
135
|
+
current.mtimeMs === previous.mtimeMs &&
|
|
136
|
+
current.size === previous.size
|
|
137
|
+
) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
for (const client of eventClients) {
|
|
141
|
+
client.write('event: update\ndata: {}\n\n');
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
|
|
120
145
|
let selectedPort = Number(portValue);
|
|
121
146
|
|
|
122
147
|
function listen() {
|
|
@@ -149,6 +174,9 @@ let closing = false;
|
|
|
149
174
|
function close() {
|
|
150
175
|
if (closing) return;
|
|
151
176
|
closing = true;
|
|
177
|
+
unwatchFile(output);
|
|
178
|
+
for (const client of eventClients) client.end();
|
|
179
|
+
eventClients.clear();
|
|
152
180
|
server.close(() => {
|
|
153
181
|
process.exitCode = 0;
|
|
154
182
|
});
|