taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

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:
Mpackages/web-util/src/live-reload.ts | 7+++++--
Mpackages/web-util/src/serve.ts | 17++++++++++-------
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`);