Skip to content

Commit 096aaba

Browse files
committed
refactor(@angular-devkit/build-angular): remove unneeded option type casting from several builders
Multiple cases where builder options were being cast to the `JsonObject` type have been removed. These casts are no longer needed and unnecessarily added complexity to the code.
1 parent 1034bb1 commit 096aaba

File tree

4 files changed

+21
-18
lines changed

4 files changed

+21
-18
lines changed

packages/angular_devkit/build_angular/src/builders/app-shell/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ async function _renderUniversal(
3535
): Promise<BrowserBuilderOutput> {
3636
// Get browser target options.
3737
const browserTarget = targetFromTargetString(options.browserTarget);
38-
const rawBrowserOptions = (await context.getTargetOptions(browserTarget)) as JsonObject &
39-
BrowserBuilderSchema;
38+
const rawBrowserOptions = await context.getTargetOptions(browserTarget);
4039
const browserBuilderName = await context.getBuilderNameForTarget(browserTarget);
4140
const browserOptions = await context.validateOptions<JsonObject & BrowserBuilderSchema>(
4241
rawBrowserOptions,

packages/angular_devkit/build_angular/src/builders/dev-server/vite-server.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ interface OutputFileRecord {
3939
servable: boolean;
4040
}
4141

42+
/**
43+
* Build options that are also present on the dev server but are only passed
44+
* to the build.
45+
*/
46+
const CONVENIENCE_BUILD_OPTIONS = ['watch', 'poll', 'verbose'] as const;
47+
4248
// eslint-disable-next-line max-lines-per-function
4349
export async function* serveWithVite(
4450
serverOptions: NormalizedDevServerOptions,
@@ -53,22 +59,23 @@ export async function* serveWithVite(
5359
},
5460
): AsyncIterableIterator<DevServerBuilderOutput> {
5561
// Get the browser configuration from the target name.
56-
const rawBrowserOptions = (await context.getTargetOptions(
57-
serverOptions.buildTarget,
58-
)) as json.JsonObject & BrowserBuilderOptions;
62+
const rawBrowserOptions = await context.getTargetOptions(serverOptions.buildTarget);
5963

6064
// Deploy url is not used in the dev-server.
6165
delete rawBrowserOptions.deployUrl;
6266

63-
const browserOptions = (await context.validateOptions(
64-
{
65-
...rawBrowserOptions,
66-
watch: serverOptions.watch,
67-
poll: serverOptions.poll,
68-
verbose: serverOptions.verbose,
69-
} as json.JsonObject & BrowserBuilderOptions,
67+
// Copy convenience options to build
68+
for (const optionName of CONVENIENCE_BUILD_OPTIONS) {
69+
const optionValue = serverOptions[optionName];
70+
if (optionValue !== undefined) {
71+
rawBrowserOptions[optionName] = optionValue;
72+
}
73+
}
74+
75+
const browserOptions = await context.validateOptions<json.JsonObject & BrowserBuilderOptions>(
76+
rawBrowserOptions,
7077
builderName,
71-
)) as json.JsonObject & BrowserBuilderOptions;
78+
);
7279

7380
if (browserOptions.prerender || browserOptions.ssr) {
7481
// Disable prerendering if enabled and force SSR.

packages/angular_devkit/build_angular/src/builders/dev-server/webpack-server.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,7 @@ export function serveWebpackBrowser(
8585
}
8686

8787
// Get the browser configuration from the target name.
88-
const rawBrowserOptions = (await context.getTargetOptions(
89-
options.buildTarget,
90-
)) as json.JsonObject & BrowserBuilderSchema;
88+
const rawBrowserOptions = await context.getTargetOptions(options.buildTarget);
9189

9290
if (rawBrowserOptions.outputHashing && rawBrowserOptions.outputHashing !== OutputHashing.None) {
9391
// Disable output hashing for dev build as this can cause memory leaks

packages/angular_devkit/build_angular/src/builders/prerender/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import {
1212
createBuilder,
1313
targetFromTargetString,
1414
} from '@angular-devkit/architect';
15-
import { json } from '@angular-devkit/core';
1615
import * as fs from 'fs';
1716
import { readFile } from 'node:fs/promises';
1817
import ora from 'ora';
@@ -30,7 +29,7 @@ import type { RenderOptions, RenderResult } from './render-worker';
3029
import { RoutesExtractorWorkerData } from './routes-extractor-worker';
3130
import { Schema } from './schema';
3231

33-
type PrerenderBuilderOptions = Schema & json.JsonObject;
32+
type PrerenderBuilderOptions = Schema;
3433
type PrerenderBuilderOutput = BuilderOutput;
3534

3635
class RoutesSet extends Set<string> {

0 commit comments

Comments
 (0)