From 99192a791b7b7fa039a811cdf37202ae6121e23c Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 4 Nov 2024 20:21:09 -0500 Subject: [PATCH] fix(@angular/build): always clear dev-server error overlay on non-error result Now that additional result object types can be returned from the build system, the error overlay must be cleared on all non-error results. The introduction of component update results and eventual incremental results will now properly clear the error overlay after a successful build. --- .../src/builders/dev-server/vite-server.ts | 47 ++++++++++--------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/packages/angular/build/src/builders/dev-server/vite-server.ts b/packages/angular/build/src/builders/dev-server/vite-server.ts index 3223a9280f..742f151557 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -187,20 +187,31 @@ export async function* serveWithVite( // TODO: Switch this to an architect schedule call when infrastructure settings are supported for await (const result of builderAction(browserOptions, context, extensions?.buildPlugins)) { + if (result.kind === ResultKind.Failure) { + if (result.errors.length && server) { + hadError = true; + server.ws.send({ + type: 'error', + err: { + message: result.errors[0].text, + stack: '', + loc: result.errors[0].location ?? undefined, + }, + }); + } + continue; + } + // Clear existing error overlay on successful result + if (hadError && server) { + hadError = false; + // Send an empty update to clear the error overlay + server.ws.send({ + 'type': 'update', + updates: [], + }); + } + switch (result.kind) { - case ResultKind.Failure: - if (result.errors.length && server) { - hadError = true; - server.ws.send({ - type: 'error', - err: { - message: result.errors[0].text, - stack: '', - loc: result.errors[0].location ?? undefined, - }, - }); - } - continue; case ResultKind.Full: if (result.detail?.['htmlIndexPath']) { htmlIndexPath = result.detail['htmlIndexPath'] as string; @@ -253,16 +264,6 @@ export async function* serveWithVite( continue; } - // Clear existing error overlay on successful result - if (hadError && server) { - hadError = false; - // Send an empty update to clear the error overlay - server.ws.send({ - 'type': 'update', - updates: [], - }); - } - // To avoid disconnecting the array objects from the option, these arrays need to be mutated instead of replaced. let requiresServerRestart = false; if (result.detail?.['externalMetadata']) {