commit 7c3c495360362f950043ed2a36cf505200a6d0cb
parent 99a74c19f53d5e03d52db2eaf170edb0475ddd48
Author: Sebastian <sebasjm@taler-systems.com>
Date: Wed, 25 Feb 2026 13:58:05 -0300
reload only when server confirmed
Diffstat:
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/packages/web-util/src/live-reload.ts b/packages/web-util/src/live-reload.ts
@@ -7,6 +7,9 @@ function setupLiveReload(): void {
const ws = new WebSocket(
`${protocol}//${window.location.hostname}:${window.location.port}/ws`,
);
+ ws.addEventListener("close", (e) => {
+ window.location.reload();
+ });
ws.addEventListener("message", (message) => {
try {
@@ -16,7 +19,7 @@ function setupLiveReload(): void {
return;
}
if (event.type === "file-updated-done") {
- window.location.reload();
+ ws.close(1000);
return;
}
if (event.type === "file-updated-failed") {
@@ -41,7 +44,7 @@ function setupLiveReload(): void {
return;
}
if (event.type === "file-updated") {
- window.location.reload();
+ ws.close(1000);
return;
}
} catch (e) {
diff --git a/packages/web-util/src/serve.ts b/packages/web-util/src/serve.ts
@@ -19,7 +19,6 @@ const httpServerOptions = {
const logger = new Logger("serve.ts");
-
export async function serve(opts: {
folder: string;
port: number;
@@ -31,14 +30,12 @@ export async function serve(opts: {
appPath?: string;
appSamplePath?: string;
}): Promise<void> {
-
const PATHS = {
WS: "/ws",
EXAMPLE: "/examples",
ROOT: "/",
APP: opts.appPath ?? "/app",
};
-
const app = express();
@@ -79,7 +76,10 @@ export async function serve(opts: {
});
});
- const sendToAllClients = function (data: {type: string, data: object}): void {
+ const sendToAllClients = function (data: {
+ type: string;
+ data: object;
+ }): void {
logger.info(`notifying: ${data.type}`);
wss.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
@@ -97,10 +97,11 @@ export async function serve(opts: {
sendToAllClients({ type: "file-updated-start", data: { path } });
opts
.onSourceUpdate()
- .then((result) => {
+ .then((result: any) => {
+ const { errors, warnings } = result;
sendToAllClients({
type: "file-updated-done",
- data: { path, result },
+ data: { path, result: { errors, warnings } },
});
})
.catch((error) => {
@@ -152,7 +153,9 @@ export async function serve(opts: {
</html>`);
});
- logger.info(`Serving ${opts.folder} on http://localhost:${httpPort}/ via plain HTTP`);
+ logger.info(
+ `Serving ${opts.folder} on http://localhost:${httpPort}/ via plain HTTP`,
+ );
httpServer.listen(httpPort);
if (httpsServer !== undefined) {
logger.info(`Serving ${opts.folder} on ${httpsPort}: HTTP + TLS`);