Skip to content

Commit e3aa483

Browse files
clydinalan-agius4
authored andcommitted
refactor(@angular/build): allow browser client to log console message with dev-server
The development server now supports a WebSocket event named `angular:log`. This event allows the browser client to send log messages back to the development server. Currently this is unused by the client and Angular runtime. But is intended to be used in the future for such cases as propagating error messages back to the development server console. This event is considered internal and should not be relied upon by external code.
1 parent 0ddf6aa commit e3aa483

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

packages/angular/build/src/builders/dev-server/vite-server.ts

+18
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,24 @@ export async function* serveWithVite(
439439
server = await createServer(serverConfiguration);
440440
await server.listen();
441441

442+
// Setup builder context logging for browser clients
443+
server.hot.on('angular:log', (data: { text: string; kind?: string }) => {
444+
if (typeof data?.text !== 'string') {
445+
context.logger.warn('Development server client sent invalid internal log event.');
446+
}
447+
switch (data.kind) {
448+
case 'error':
449+
context.logger.error(`[CLIENT ERROR]: ${data.text}`);
450+
break;
451+
case 'warning':
452+
context.logger.warn(`[CLIENT WARNING]: ${data.text}`);
453+
break;
454+
default:
455+
context.logger.info(`[CLIENT INFO]: ${data.text}`);
456+
break;
457+
}
458+
});
459+
442460
const urls = server.resolvedUrls;
443461
if (urls && (urls.local.length || urls.network.length)) {
444462
serverUrl = new URL(urls.local[0] ?? urls.network[0]);

0 commit comments

Comments
 (0)