diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx
index 4699a45380ba..384e2ecf129c 100755
--- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx
+++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx
@@ -2,10 +2,10 @@
# Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml").
# This file should be checked into version control along with the pnpm-lock.yaml file.
.npmrc=-203833057
-package.json=-288306371
+package.json=-1892818434
packages/compiler-cli/package.json=-1396217149
packages/compiler/package.json=499550843
-pnpm-lock.yaml=1743522818
+pnpm-lock.yaml=-1041360686
pnpm-workspace.yaml=353334404
tools/bazel/rules_angular_store/package.json=-239561259
yarn.lock=1636150847
diff --git a/.github/actions/deploy-docs-site/BUILD.bazel b/.github/actions/deploy-docs-site/BUILD.bazel
index 2606a1bc3145..483dd48f0d29 100644
--- a/.github/actions/deploy-docs-site/BUILD.bazel
+++ b/.github/actions/deploy-docs-site/BUILD.bazel
@@ -14,6 +14,7 @@ esbuild_checked_in(
external = [
"undici",
],
+ metafile = False,
platform = "node",
target = "node20",
deps = [
diff --git a/.github/workflows/sync-angular-robot-forked-repo.yml b/.github/workflows/sync-angular-robot-forked-repo.yml
deleted file mode 100644
index f117b5945688..000000000000
--- a/.github/workflows/sync-angular-robot-forked-repo.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-# This workflow addresses a limitation with Renovate's behavior in fork mode.
-# Renovate does not automatically sync non-default branches in forked repositories.
-
-name: Sync angular-robot Forked Repository
-on:
- workflow_dispatch:
- inputs: {}
- push:
- branches:
- # We do no run this on the default branch (main), as this is done by Renovate.
- - '[0-9]+.[0-9]+.x'
-
-permissions:
- contents: read
-
-jobs:
- sync_to_upstream:
- runs-on: ubuntu-latest
- # Prevents multiple concurrent runs of this workflow for the same branch
- concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
-
- steps:
- - name: Checkout the repository
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- with:
- ref: ${{ github.ref }} # Checks out the branch that triggered the push
- fetch-depth: 100
- persist-credentials: false
-
- - name: Push to angular-robot upstream remote
- run: |
- CURRENT_BRANCH="${{ github.ref_name }}"
- UPSTREAM_TOKEN="${{ secrets.ANGULAR_ROBOT_ACCESS_TOKEN }}"
- UPSTREAM_OWNER="angular-robot"
- UPSTREAM_REPO="angular"
- UPSTREAM_URL="https://x-access-token:${UPSTREAM_TOKEN}@github.com/${UPSTREAM_OWNER}/${UPSTREAM_REPO}.git"
-
- # The UPSTREAM_TOKEN is automatically masked by GitHub Actions for security.
- echo "Adding upstream remote: $UPSTREAM_URL"
- git remote add upstream "$UPSTREAM_URL"
- git remote -v
-
- echo "Pushing $CURRENT_BRANCH from origin to $UPSTREAM_OWNER upstream..."
- git push upstream "$CURRENT_BRANCH"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 33ebe904c7e6..bcb4b7fe2518 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,16 @@
+
+# 19.2.14 (2025-05-28)
+### compiler
+| Commit | Type | Description |
+| -- | -- | -- |
+| [24bab55f0c](https://github.com/angular/angular/commit/24bab55f0c89c4fe6037780fd7b2e8c8aa5429b2) | fix | lexer support for template literals in object literals ([#61601](https://github.com/angular/angular/pull/61601)) |
+### migrations
+| Commit | Type | Description |
+| -- | -- | -- |
+| [9e1cd49662](https://github.com/angular/angular/commit/9e1cd4966202d89c7310ab84c50b2c4231a0213e) | fix | preserve comments when removing unused imports ([#61674](https://github.com/angular/angular/pull/61674)) |
+
+
+
# 19.2.13 (2025-05-23)
### common
diff --git a/adev/shared-docs/pipeline/BUILD.bazel b/adev/shared-docs/pipeline/BUILD.bazel
index b65c77a61182..c3a81274393e 100644
--- a/adev/shared-docs/pipeline/BUILD.bazel
+++ b/adev/shared-docs/pipeline/BUILD.bazel
@@ -19,6 +19,7 @@ esbuild_esm_bundle(
"jsdom",
"playwright-core",
],
+ metafile = False,
output = "guides.mjs",
platform = "node",
target = "es2022",
@@ -38,6 +39,7 @@ esbuild_esm_bundle(
external = [
"jsdom",
],
+ metafile = False,
output = "guides-no-mermaid.mjs",
platform = "node",
target = "es2022",
@@ -52,6 +54,7 @@ esbuild_esm_bundle(
entry_point = "//adev/shared-docs/pipeline/examples/stackblitz:index.mts",
# JSDOM should not be bundled because it has workers and dynamic imports.
external = ["jsdom"],
+ metafile = False,
output = "stackblitz.mjs",
platform = "node",
target = "es2022",
@@ -67,6 +70,7 @@ esbuild_esm_bundle(
external = [
"typescript",
],
+ metafile = False,
output = "previews.mjs",
platform = "node",
target = "es2022",
@@ -80,6 +84,7 @@ esbuild_esm_bundle(
esbuild_esm_bundle(
name = "zip-bundle",
entry_point = "//adev/shared-docs/pipeline/examples/zip:index.mts",
+ metafile = False,
output = "zip.mjs",
platform = "node",
target = "es2022",
@@ -92,6 +97,7 @@ esbuild_esm_bundle(
esbuild_esm_bundle(
name = "playground-bundle",
entry_point = "//adev/shared-docs/pipeline/tutorials:playground.mts",
+ metafile = False,
output = "playground.mjs",
platform = "node",
target = "es2022",
@@ -104,6 +110,7 @@ esbuild_esm_bundle(
esbuild_esm_bundle(
name = "tutorial-bundle",
entry_point = "//adev/shared-docs/pipeline/tutorials:tutorial.mts",
+ metafile = False,
output = "tutorial.mjs",
platform = "node",
target = "es2022",
@@ -116,6 +123,7 @@ esbuild_esm_bundle(
esbuild_esm_bundle(
name = "navigation-bundle",
entry_point = "//adev/shared-docs/pipeline/navigation:index.mts",
+ metafile = False,
output = "navigation.mjs",
platform = "node",
target = "es2022",
diff --git a/adev/shared-docs/pipeline/api-gen/extraction/BUILD.bazel b/adev/shared-docs/pipeline/api-gen/extraction/BUILD.bazel
index 9bfc2a7ee770..03a82ed4bb77 100644
--- a/adev/shared-docs/pipeline/api-gen/extraction/BUILD.bazel
+++ b/adev/shared-docs/pipeline/api-gen/extraction/BUILD.bazel
@@ -11,6 +11,7 @@ esbuild_esm_bundle(
"@angular/compiler-cli",
"typescript",
],
+ metafile = False,
output = "bin.mjs",
platform = "node",
target = "es2022",
diff --git a/adev/shared-docs/pipeline/api-gen/manifest/BUILD.bazel b/adev/shared-docs/pipeline/api-gen/manifest/BUILD.bazel
index d6f9c62837d8..68e5bccbd197 100644
--- a/adev/shared-docs/pipeline/api-gen/manifest/BUILD.bazel
+++ b/adev/shared-docs/pipeline/api-gen/manifest/BUILD.bazel
@@ -10,6 +10,7 @@ esbuild_esm_bundle(
external = [
"@angular/compiler-cli",
],
+ metafile = False,
output = "bin.mjs",
platform = "node",
target = "es2022",
diff --git a/adev/shared-docs/pipeline/api-gen/rendering/BUILD.bazel b/adev/shared-docs/pipeline/api-gen/rendering/BUILD.bazel
index a587f4e86000..a88abc2d8240 100644
--- a/adev/shared-docs/pipeline/api-gen/rendering/BUILD.bazel
+++ b/adev/shared-docs/pipeline/api-gen/rendering/BUILD.bazel
@@ -7,6 +7,7 @@ package(default_visibility = ["//adev/shared-docs/pipeline/api-gen:__subpackages
esbuild_esm_bundle(
name = "bin",
entry_point = ":index.mts",
+ metafile = False,
output = "bin.mjs",
platform = "node",
target = "es2022",
diff --git a/package.json b/package.json
index ee5910e69636..574d37865ae9 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "angular-srcs",
- "version": "19.2.13",
+ "version": "19.2.14",
"private": true,
"description": "Angular - a web framework for modern web apps",
"homepage": "https://github.com/angular/angular",
diff --git a/packages/bazel/test/ng_package/common_package.spec.ts b/packages/bazel/test/ng_package/common_package.spec.ts
index 9b2389637828..5abd29d9df00 100644
--- a/packages/bazel/test/ng_package/common_package.spec.ts
+++ b/packages/bazel/test/ng_package/common_package.spec.ts
@@ -23,12 +23,12 @@ describe('@angular/common ng_package', () => {
it('/locales', () => {
const files = shx.ls('locales').stdout.split('\n');
expect(files.some((n) => n.endsWith('.d.ts'))).toBe(true, `.d.ts files don't exist`);
- expect(files.some((n) => n.endsWith('.mjs'))).toBe(true, `.mjs files don't exist`);
+ expect(files.some((n) => n.endsWith('.js'))).toBe(true, `.js files don't exist`);
});
it('/locales/extra', () => {
const files = shx.ls('locales/extra').stdout.split('\n');
expect(files.some((n) => n.endsWith('.d.ts'))).toBe(true, `.d.ts files don't exist`);
- expect(files.some((n) => n.endsWith('.mjs'))).toBe(true, `.mjs files don't exist`);
+ expect(files.some((n) => n.endsWith('.js'))).toBe(true, `.js files don't exist`);
});
});
@@ -98,7 +98,7 @@ describe('@angular/common ng_package', () => {
typings: `./index.d.ts`,
exports: matchesObjectWithOrder({
'./locales/global/*': {default: './locales/global/*.js'},
- './locales/*': {types: './locales/*.d.ts', default: './locales/*.mjs'},
+ './locales/*': {types: './locales/*.d.ts', default: './locales/*.js'},
'./package.json': {default: './package.json'},
'.': {
types: './index.d.ts',
diff --git a/packages/common/http/test/provider_spec.ts b/packages/common/http/test/provider_spec.ts
index d0679c7057bc..b456ec36b987 100644
--- a/packages/common/http/test/provider_spec.ts
+++ b/packages/common/http/test/provider_spec.ts
@@ -26,6 +26,7 @@ import {
ApplicationRef,
createEnvironmentInjector,
EnvironmentInjector,
+ ErrorHandler,
inject,
InjectionToken,
PLATFORM_ID,
@@ -67,6 +68,27 @@ describe('without provideHttpClientTesting', () => {
await Promise.resolve();
expect(stable).toBe(true);
});
+
+ it('can use an ErrorHandler that injects HttpClient', () => {
+ // This test ensures there is no circular dependency:
+ TestBed.configureTestingModule({
+ providers: [
+ provideHttpClient(
+ withFetch(),
+ withInterceptors([() => from(Promise.resolve(new HttpResponse()))]),
+ ),
+ {
+ provide: ErrorHandler,
+ useClass: class extends ErrorHandler {
+ client = inject(HttpClient);
+ override handleError(error: any): void {}
+ },
+ },
+ ],
+ });
+
+ expect(() => TestBed.inject(ApplicationRef)).not.toThrow();
+ });
});
describe('provideHttpClient', () => {
diff --git a/packages/common/locales/BUILD.bazel b/packages/common/locales/BUILD.bazel
index 8a32cece759d..fda0be6c176c 100644
--- a/packages/common/locales/BUILD.bazel
+++ b/packages/common/locales/BUILD.bazel
@@ -1,6 +1,7 @@
load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test")
load("//packages/common/locales:index.bzl", "LOCALES", "generate_all_locale_files", "generate_closure_locale_file")
-load("//tools:defaults.bzl", "pkg_npm", "ts_library")
+load("//tools:defaults.bzl", "pkg_npm")
+load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:public"])
@@ -23,7 +24,7 @@ generate_all_locale_files(
name = "locale_files",
)
-ts_library(
+ts_project(
name = "locales",
# TODO(devversion): Remove glob for checked-in legacy locale files that haven't been
# removed in the past (when CLDR has been updated). These can be removed in a major.
diff --git a/packages/common/locales/generate-locales-tool/BUILD.bazel b/packages/common/locales/generate-locales-tool/BUILD.bazel
index 28bc4e0cb96d..173b9fb2202e 100644
--- a/packages/common/locales/generate-locales-tool/BUILD.bazel
+++ b/packages/common/locales/generate-locales-tool/BUILD.bazel
@@ -1,16 +1,25 @@
-load("//tools:defaults.bzl", "ts_library")
+load("//tools:defaults2.bzl", "ts_config", "ts_project")
package(default_visibility = ["//visibility:public"])
-ts_library(
+ts_config(
+ name = "tsconfig_build",
+ src = "tsconfig.json",
+ deps = [
+ "//:node_modules/@types/node",
+ "//packages:tsconfig_build",
+ ],
+)
+
+ts_project(
name = "generate-locales-tool",
srcs = glob(["*.ts"]),
deps = [
- "@npm//@bazel/runfiles",
- "@npm//@types/cldrjs",
- "@npm//@types/node",
- "@npm//cldr",
- "@npm//cldrjs",
- "@npm//fast-glob",
+ "//:node_modules/@bazel/runfiles",
+ "//:node_modules/@types/cldrjs",
+ "//:node_modules/@types/node",
+ "//:node_modules/cldr",
+ "//:node_modules/cldrjs",
+ "//:node_modules/fast-glob",
],
)
diff --git a/packages/common/locales/generate-locales-tool/bin/BUILD.bazel b/packages/common/locales/generate-locales-tool/bin/BUILD.bazel
index 26b56b5b8b57..7cb349dc7f0f 100644
--- a/packages/common/locales/generate-locales-tool/bin/BUILD.bazel
+++ b/packages/common/locales/generate-locales-tool/bin/BUILD.bazel
@@ -1,4 +1,5 @@
-load("//tools:defaults.bzl", "nodejs_binary", "ts_library")
+load("//tools:defaults.bzl", "nodejs_binary")
+load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:public"])
@@ -9,12 +10,12 @@ BIN_ENTRYPOINTS = [
"write-locale-files-to-dist",
]
-ts_library(
+ts_project(
name = "bin",
srcs = glob(["*.ts"]),
deps = [
- "//packages/common/locales/generate-locales-tool",
- "@npm//@types/node",
+ "//:node_modules/@types/node",
+ "//packages/common/locales/generate-locales-tool:generate-locales-tool_rjs",
],
)
@@ -22,8 +23,9 @@ ts_library(
name = entrypoint,
data = [
":bin",
+ "//packages:package_json",
"@cldr_json_data//:all_json",
"@cldr_xml_data//:all_xml",
],
- entry_point = ":%s.ts" % entrypoint,
+ entry_point = ":%s.js" % entrypoint,
) for entrypoint in BIN_ENTRYPOINTS]
diff --git a/packages/common/locales/generate-locales-tool/tsconfig.json b/packages/common/locales/generate-locales-tool/tsconfig.json
new file mode 100644
index 000000000000..5837e29941f6
--- /dev/null
+++ b/packages/common/locales/generate-locales-tool/tsconfig.json
@@ -0,0 +1,6 @@
+{
+ "extends": "../../../tsconfig-build.json",
+ "compilerOptions": {
+ "types": ["node"],
+ }
+}
\ No newline at end of file
diff --git a/packages/common/package.json b/packages/common/package.json
index db86e76f4ff2..23769f580c0f 100644
--- a/packages/common/package.json
+++ b/packages/common/package.json
@@ -17,7 +17,7 @@
},
"./locales/*": {
"types": "./locales/*.d.ts",
- "default": "./locales/*.mjs"
+ "default": "./locales/*.js"
}
},
"peerDependencies": {
diff --git a/packages/compiler-cli/BUILD.bazel b/packages/compiler-cli/BUILD.bazel
index a6fd545d7741..f206bba50b2b 100644
--- a/packages/compiler-cli/BUILD.bazel
+++ b/packages/compiler-cli/BUILD.bazel
@@ -68,6 +68,7 @@ esbuild(
"yargs",
],
format = "esm",
+ metafile = False,
platform = "node",
splitting = True,
target = "node12",
diff --git a/packages/compiler-cli/src/ngtsc/validation/src/config.ts b/packages/compiler-cli/src/ngtsc/validation/src/config.ts
deleted file mode 100644
index 69db0959a57d..000000000000
--- a/packages/compiler-cli/src/ngtsc/validation/src/config.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/*!
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.dev/license
- */
-
-/**
- * Whether the rule to check for unused standalone imports is enabled.
- * Used to disable it conditionally in internal builds.
- */
-export const UNUSED_STANDALONE_IMPORTS_RULE_ENABLED = true;
diff --git a/packages/compiler-cli/src/ngtsc/validation/src/source_file_validator.ts b/packages/compiler-cli/src/ngtsc/validation/src/source_file_validator.ts
index ad339f960fe1..b41421bc2020 100644
--- a/packages/compiler-cli/src/ngtsc/validation/src/source_file_validator.ts
+++ b/packages/compiler-cli/src/ngtsc/validation/src/source_file_validator.ts
@@ -15,7 +15,6 @@ import {SourceFileValidatorRule} from './rules/api';
import {InitializerApiUsageRule} from './rules/initializer_api_usage_rule';
import {UnusedStandaloneImportsRule} from './rules/unused_standalone_imports_rule';
import {TemplateTypeChecker, TypeCheckingConfig} from '../../typecheck/api';
-import {UNUSED_STANDALONE_IMPORTS_RULE_ENABLED} from './config';
/**
* Validates that TypeScript files match a specific set of rules set by the Angular compiler.
@@ -31,15 +30,13 @@ export class SourceFileValidator {
) {
this.rules = [new InitializerApiUsageRule(reflector, importedSymbolsTracker)];
- if (UNUSED_STANDALONE_IMPORTS_RULE_ENABLED) {
- this.rules.push(
- new UnusedStandaloneImportsRule(
- templateTypeChecker,
- typeCheckingConfig,
- importedSymbolsTracker,
- ),
- );
- }
+ this.rules.push(
+ new UnusedStandaloneImportsRule(
+ templateTypeChecker,
+ typeCheckingConfig,
+ importedSymbolsTracker,
+ ),
+ );
}
/**
diff --git a/packages/compiler/src/expression_parser/lexer.ts b/packages/compiler/src/expression_parser/lexer.ts
index 83de92c6694f..034c198ecc6f 100644
--- a/packages/compiler/src/expression_parser/lexer.ts
+++ b/packages/compiler/src/expression_parser/lexer.ts
@@ -202,8 +202,7 @@ class _Scanner {
private readonly length: number;
private peek = 0;
private index = -1;
- private literalInterpolationDepth = 0;
- private braceDepth = 0;
+ private braceStack: ('interpolation' | 'expression')[] = [];
constructor(private readonly input: string) {
this.length = input.length;
@@ -330,7 +329,7 @@ class _Scanner {
}
private scanOpenBrace(start: number, code: number): Token {
- this.braceDepth++;
+ this.braceStack.push('expression');
this.advance();
return newCharacterToken(start, this.index, code);
}
@@ -338,13 +337,12 @@ class _Scanner {
private scanCloseBrace(start: number, code: number): Token {
this.advance();
- if (this.braceDepth === 0 && this.literalInterpolationDepth > 0) {
- this.literalInterpolationDepth--;
+ const currentBrace = this.braceStack.pop();
+ if (currentBrace === 'interpolation') {
this.tokens.push(newOperatorToken(start, this.index, '}'));
return this.scanTemplateLiteralPart(this.index);
}
- this.braceDepth--;
return newCharacterToken(start, this.index, code);
}
@@ -501,7 +499,7 @@ class _Scanner {
// @ts-expect-error
if (this.peek === chars.$LBRACE) {
- this.literalInterpolationDepth++;
+ this.braceStack.push('interpolation');
this.tokens.push(
new StringToken(
start,
diff --git a/packages/compiler/test/expression_parser/lexer_spec.ts b/packages/compiler/test/expression_parser/lexer_spec.ts
index 829dd675ef1c..03a8041f5b63 100644
--- a/packages/compiler/test/expression_parser/lexer_spec.ts
+++ b/packages/compiler/test/expression_parser/lexer_spec.ts
@@ -567,6 +567,20 @@ describe('lexer', () => {
expectStringToken(tokens[8], 29, 33, '!!!', StringTokenKind.TemplateLiteralEnd);
});
+ it('should tokenize a template literal in an literal object value', () => {
+ const tokens: Token[] = lex('{foo: `${name}`}');
+ expect(tokens.length).toBe(9);
+ expectCharacterToken(tokens[0], 0, 1, '{');
+ expectIdentifierToken(tokens[1], 1, 4, 'foo');
+ expectCharacterToken(tokens[2], 4, 5, ':');
+ expectStringToken(tokens[3], 6, 7, '', StringTokenKind.TemplateLiteralPart);
+ expectOperatorToken(tokens[4], 7, 9, '${');
+ expectIdentifierToken(tokens[5], 9, 13, 'name');
+ expectOperatorToken(tokens[6], 13, 14, '}');
+ expectStringToken(tokens[7], 14, 15, '', StringTokenKind.TemplateLiteralEnd);
+ expectCharacterToken(tokens[8], 15, 16, '}');
+ });
+
it('should produce an error if a template literal is not terminated', () => {
expectErrorToken(
lex('`hello')[0],
diff --git a/packages/compiler/test/expression_parser/parser_spec.ts b/packages/compiler/test/expression_parser/parser_spec.ts
index 988086aa6dc9..c6971369e798 100644
--- a/packages/compiler/test/expression_parser/parser_spec.ts
+++ b/packages/compiler/test/expression_parser/parser_spec.ts
@@ -439,6 +439,13 @@ describe('parser', () => {
checkBinding('`hello ${(name | capitalize)}!!!`');
});
+ it('should parse template literals in objects literals', () => {
+ checkBinding('{"a": `${name}`}');
+ checkBinding('{"a": `hello ${name}!`}');
+ checkBinding('{"a": `hello ${`hello ${`hello`}`}!`}');
+ checkBinding('{"a": `hello ${{"b": `hello`}}`}');
+ });
+
it('should report error if interpolation is empty', () => {
expectBindingError(
'`hello ${}`',
diff --git a/packages/core/schematics/ng-generate/cleanup-unused-imports/BUILD.bazel b/packages/core/schematics/ng-generate/cleanup-unused-imports/BUILD.bazel
index a254ad17d2ce..0e3ee1923c25 100644
--- a/packages/core/schematics/ng-generate/cleanup-unused-imports/BUILD.bazel
+++ b/packages/core/schematics/ng-generate/cleanup-unused-imports/BUILD.bazel
@@ -21,6 +21,7 @@ ts_project(
"//packages/compiler-cli/src/ngtsc/core:api",
"//packages/core/schematics/utils",
"//packages/core/schematics/utils/tsurge",
+ "//packages/core/schematics/utils/tsurge/helpers/ast",
"//packages/core/schematics/utils/tsurge/helpers/angular_devkit",
],
deps = [
diff --git a/packages/core/schematics/ng-generate/cleanup-unused-imports/unused_imports_migration.ts b/packages/core/schematics/ng-generate/cleanup-unused-imports/unused_imports_migration.ts
index 9f6ec5a18aaf..1bbdd76ea50c 100644
--- a/packages/core/schematics/ng-generate/cleanup-unused-imports/unused_imports_migration.ts
+++ b/packages/core/schematics/ng-generate/cleanup-unused-imports/unused_imports_migration.ts
@@ -18,9 +18,10 @@ import {
TsurgeFunnelMigration,
} from '../../utils/tsurge';
import {ErrorCode, FileSystem, ngErrorCode} from '@angular/compiler-cli';
-import {DiagnosticCategoryLabel, NgCompilerOptions} from '@angular/compiler-cli/src/ngtsc/core/api';
+import {DiagnosticCategoryLabel} from '@angular/compiler-cli/src/ngtsc/core/api';
import {ImportManager} from '@angular/compiler-cli/private/migrations';
import {applyImportManagerChanges} from '../../utils/tsurge/helpers/apply_import_manager';
+import {getLeadingLineWhitespaceOfNode} from '../../utils/tsurge/helpers/ast/leading_space';
/** Data produced by the migration for each compilation unit. */
export interface CompilationUnitData {
@@ -286,6 +287,7 @@ export class UnusedImportsMigration extends TsurgeFunnelMigration<
const {fullRemovals, partialRemovals, allRemovedIdentifiers} = removalLocations;
const {importedSymbols, identifierCounts} = usages;
const importManager = new ImportManager();
+ const sourceText = sourceFile.getFullText();
// Replace full arrays with empty ones. This allows preserves more of the user's formatting.
fullRemovals.forEach((node) => {
@@ -302,22 +304,15 @@ export class UnusedImportsMigration extends TsurgeFunnelMigration<
});
// Filter out the unused identifiers from an array.
- partialRemovals.forEach((toRemove, node) => {
- const newNode = ts.factory.updateArrayLiteralExpression(
- node,
- node.elements.filter((el) => !toRemove.has(el)),
- );
-
- replacements.push(
- new Replacement(
- projectFile(sourceFile, info),
- new TextUpdate({
- position: node.getStart(),
- end: node.getEnd(),
- toInsert: this.printer.printNode(ts.EmitHint.Unspecified, newNode, sourceFile),
- }),
- ),
- );
+ partialRemovals.forEach((toRemove, parent) => {
+ toRemove.forEach((node) => {
+ replacements.push(
+ new Replacement(
+ projectFile(sourceFile, info),
+ getArrayElementRemovalUpdate(node, parent, sourceText),
+ ),
+ );
+ });
});
// Attempt to clean up unused import declarations. Note that this isn't foolproof, because we
@@ -339,3 +334,49 @@ export class UnusedImportsMigration extends TsurgeFunnelMigration<
applyImportManagerChanges(importManager, replacements, [sourceFile], info);
}
}
+
+/** Generates a `TextUpdate` for the removal of an array element. */
+function getArrayElementRemovalUpdate(
+ node: ts.Expression,
+ parent: ts.ArrayLiteralExpression,
+ sourceText: string,
+): TextUpdate {
+ let position = node.getStart();
+ let end = node.getEnd();
+ let toInsert = '';
+ const whitespaceOrLineFeed = /\s/;
+
+ // Usually the way we'd remove the nodes would be to recreate the `parent` while excluding
+ // the nodes that should be removed. The problem with this is that it'll strip out comments
+ // inside the array which can have special meaning internally. We work around it by removing
+ // only the node's own offsets. This comes with another problem in that it won't remove the commas
+ // that separate array elements which in turn can look weird if left in place (e.g.
+ // `[One, Two, Three, Four]` can turn into `[One,,Four]`). To account for them, we start with the
+ // node's end offset and then expand it to include trailing commas, whitespace and line breaks.
+ for (let i = end; i < sourceText.length; i++) {
+ if (sourceText[i] === ',' || whitespaceOrLineFeed.test(sourceText[i])) {
+ end++;
+ } else {
+ break;
+ }
+ }
+
+ // If we're removing the last element in the array, adjust the starting offset so that
+ // it includes the previous comma on the same line. This avoids turning something like
+ // `[One, Two, Three]` into `[One,]`. We only do this within the same like, because
+ // trailing comma at the end of the line is fine.
+ if (parent.elements[parent.elements.length - 1] === node) {
+ for (let i = position - 1; i >= 0; i--) {
+ if (sourceText[i] === ',' || sourceText[i] === ' ') {
+ position--;
+ } else {
+ break;
+ }
+ }
+
+ // Replace the node with its leading whitespace to preserve the formatting.
+ toInsert = getLeadingLineWhitespaceOfNode(node);
+ }
+
+ return new TextUpdate({position, end, toInsert});
+}
diff --git a/packages/core/schematics/test/cleanup_unused_imports_migration_spec.ts b/packages/core/schematics/test/cleanup_unused_imports_migration_spec.ts
index 0ac3649c7cf8..d5788a84eb9a 100644
--- a/packages/core/schematics/test/cleanup_unused_imports_migration_spec.ts
+++ b/packages/core/schematics/test/cleanup_unused_imports_migration_spec.ts
@@ -287,4 +287,76 @@ describe('cleanup unused imports schematic', () => {
`),
);
});
+
+ it('should preserve comments when removing unused imports', async () => {
+ writeFile(
+ 'comp.ts',
+ `
+ import {Component} from '@angular/core';
+ import {One, Two, Three} from './directives';
+
+ @Component({
+ imports: [
+ // Start
+ Three,
+ One,
+ Two,
+ // End
+ ],
+ template: '
',
+ })
+ export class Comp {}
+ `,
+ );
+
+ await runMigration();
+
+ expect(stripWhitespace(tree.readContent('comp.ts'))).toBe(
+ stripWhitespace(`
+ import {Component} from '@angular/core';
+ import {One} from './directives';
+
+ @Component({
+ imports: [
+ // Start
+ One,
+ // End
+ ],
+ template: '',
+ })
+ export class Comp {}
+ `),
+ );
+ });
+
+ it('should preserve inline comments and strip trailing comma when removing imports from same line', async () => {
+ writeFile(
+ 'comp.ts',
+ `
+ import {Component} from '@angular/core';
+ import {One, Two, Three} from './directives';
+
+ @Component({
+ imports: [/* Start */ Three, One, Two /* End */],
+ template: '',
+ })
+ export class Comp {}
+ `,
+ );
+
+ await runMigration();
+
+ expect(stripWhitespace(tree.readContent('comp.ts'))).toBe(
+ stripWhitespace(`
+ import {Component} from '@angular/core';
+ import {One} from './directives';
+
+ @Component({
+ imports: [/* Start */ One /* End */],
+ template: '',
+ })
+ export class Comp {}
+ `),
+ );
+ });
});
diff --git a/packages/examples/BUILD.bazel b/packages/examples/BUILD.bazel
index 431b64beea55..626a45e20f52 100644
--- a/packages/examples/BUILD.bazel
+++ b/packages/examples/BUILD.bazel
@@ -1,10 +1,38 @@
+load("//tools:defaults2.bzl", "ts_config")
+
package(default_visibility = ["//visibility:public"])
exports_files([
"index.html",
- "tsconfig-e2e.json",
])
+ts_config(
+ name = "tsconfig_build",
+ src = "tsconfig.json",
+ deps = [
+ "//packages:tsconfig_build",
+ ],
+)
+
+ts_config(
+ name = "tsconfig_test",
+ src = "tsconfig-test.json",
+ deps = [
+ ":tsconfig_build",
+ "//:node_modules/@types/jasmine",
+ ],
+)
+
+ts_config(
+ name = "tsconfig_e2e",
+ src = "tsconfig-e2e.json",
+ deps = [
+ ":tsconfig_test",
+ "//:node_modules/@types/jasminewd2",
+ "//:node_modules/@types/node",
+ ],
+)
+
filegroup(
name = "files_for_docgen",
srcs = [
diff --git a/packages/examples/common/BUILD.bazel b/packages/examples/common/BUILD.bazel
index c2b1a8c647c5..877ccc6c62f3 100644
--- a/packages/examples/common/BUILD.bazel
+++ b/packages/examples/common/BUILD.bazel
@@ -1,34 +1,39 @@
-load("//tools:defaults.bzl", "esbuild", "http_server", "ng_module", "protractor_web_test_suite", "ts_library")
+load("//tools:defaults.bzl", "esbuild", "http_server", "protractor_web_test_suite")
+load("//tools:defaults2.bzl", "ng_project", "ts_project")
package(default_visibility = ["//visibility:public"])
-ng_module(
+ng_project(
name = "common_examples",
srcs = glob(
["**/*.ts"],
exclude = ["**/*_spec.ts"],
),
- deps = [
- "//packages/common",
- "//packages/core",
+ interop_deps = [
"//packages/platform-browser",
"//packages/platform-browser-dynamic",
- "//packages/router",
"//packages/zone.js/lib",
- "@npm//rxjs",
+ ],
+ deps = [
+ "//:node_modules/rxjs",
+ "//packages/common:common_rjs",
+ "//packages/core:core_rjs",
+ "//packages/router:router_rjs",
],
)
-ts_library(
+ts_project(
name = "common_tests_lib",
testonly = True,
srcs = glob(["**/*_spec.ts"]),
- tsconfig = "//packages/examples:tsconfig-e2e.json",
- deps = [
- "//packages/examples/test-utils",
+ interop_deps = [
"//packages/private/testing",
- "@npm//@types/jasminewd2",
- "@npm//protractor",
+ ],
+ tsconfig = "//packages/examples:tsconfig_e2e",
+ deps = [
+ "//:node_modules/@types/jasminewd2",
+ "//:node_modules/protractor",
+ "//packages/examples/test-utils:test-utils_rjs",
],
)
diff --git a/packages/examples/core/BUILD.bazel b/packages/examples/core/BUILD.bazel
index eaf9f890783a..11bc3d8d1b6e 100644
--- a/packages/examples/core/BUILD.bazel
+++ b/packages/examples/core/BUILD.bazel
@@ -1,8 +1,9 @@
-load("//tools:defaults.bzl", "esbuild", "http_server", "jasmine_node_test", "ng_module", "protractor_web_test_suite", "ts_library")
+load("//tools:defaults.bzl", "esbuild", "http_server", "jasmine_node_test", "protractor_web_test_suite")
+load("//tools:defaults2.bzl", "ng_project", "ts_project")
package(default_visibility = ["//visibility:public"])
-ng_module(
+ng_project(
name = "core_examples",
srcs = glob(
["**/*.ts"],
@@ -11,20 +12,22 @@ ng_module(
"**/*_howto.ts",
],
),
- deps = [
- "//packages/animations",
- "//packages/core",
- "//packages/forms",
+ interop_deps = [
"//packages/platform-browser",
"//packages/platform-browser-dynamic",
"//packages/platform-browser/animations",
- "//packages/router",
"//packages/zone.js/lib",
- "@npm//rxjs",
+ ],
+ deps = [
+ "//:node_modules/rxjs",
+ "//packages/animations:animations_rjs",
+ "//packages/core:core_rjs",
+ "//packages/forms:forms_rjs",
+ "//packages/router:router_rjs",
],
)
-ts_library(
+ts_project(
name = "core_tests_lib",
testonly = True,
srcs = glob(
@@ -32,20 +35,20 @@ ts_library(
exclude = ["**/e2e_test/*"],
),
deps = [
- "//packages/core",
- "//packages/core/testing",
+ "//packages/core:core_rjs",
+ "//packages/core/testing:testing_rjs",
],
)
-ts_library(
+ts_project(
name = "core_e2e_tests_lib",
testonly = True,
srcs = glob(["**/e2e_test/*_spec.ts"]),
- tsconfig = "//packages/examples:tsconfig-e2e.json",
+ tsconfig = "//packages/examples:tsconfig_e2e",
deps = [
- "//packages/examples/test-utils",
- "@npm//@types/jasminewd2",
- "@npm//protractor",
+ "//:node_modules/@types/jasminewd2",
+ "//:node_modules/protractor",
+ "//packages/examples/test-utils:test-utils_rjs",
],
)
diff --git a/packages/examples/core/di/ts/contentChild/content_child_example.ts b/packages/examples/core/di/ts/contentChild/content_child_example.ts
index e2d01c9263fb..cdb0249a08c2 100644
--- a/packages/examples/core/di/ts/contentChild/content_child_example.ts
+++ b/packages/examples/core/di/ts/contentChild/content_child_example.ts
@@ -19,7 +19,7 @@ export class Pane {
@Component({
selector: 'tab',
- template: ` pane: {{ pane?.id }}
`,
+ template: ` pane: {{ pane.id }}
`,
standalone: false,
})
export class Tab {
diff --git a/packages/examples/core/di/ts/forward_ref/BUILD.bazel b/packages/examples/core/di/ts/forward_ref/BUILD.bazel
index 335dbb63b79c..fd778ff5c53e 100644
--- a/packages/examples/core/di/ts/forward_ref/BUILD.bazel
+++ b/packages/examples/core/di/ts/forward_ref/BUILD.bazel
@@ -1,19 +1,19 @@
-load("//tools:defaults.bzl", "ng_module")
+load("//tools:defaults2.bzl", "ng_project")
package(default_visibility = ["//visibility:public"])
-# Note: The `forward_ref` example tests are built through this `ng_module` sub-target.
+# Note: The `forward_ref` example tests are built through this `ng_project` sub-target.
# This is done so that DI decorator/type metadata is processed manually by the compiler
# ahead of time. We cannot rely on the official TypeScript decorator downlevel emit (for JIT),
# as the output is not compatible with `forwardRef` and ES2015+. More details here:
# https://github.com/angular/angular/commit/323651bd38909b0f4226bcb6c8f5abafa91cf9d9.
# https://github.com/microsoft/TypeScript/issues/27519.
-ng_module(
+ng_project(
name = "forward_ref_tests_lib",
testonly = True,
srcs = ["forward_ref_spec.ts"],
visibility = ["//packages/examples/core:__pkg__"],
- deps = ["//packages/core"],
+ deps = ["//packages/core:core_rjs"],
)
filegroup(
diff --git a/packages/examples/core/testing/ts/BUILD.bazel b/packages/examples/core/testing/ts/BUILD.bazel
index 885756eb09d7..d32cda81a756 100644
--- a/packages/examples/core/testing/ts/BUILD.bazel
+++ b/packages/examples/core/testing/ts/BUILD.bazel
@@ -1,17 +1,17 @@
-load("//tools:defaults.bzl", "jasmine_node_test", "ts_library")
+load("//tools:defaults.bzl", "jasmine_node_test")
+load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:public"])
-ts_library(
+ts_project(
name = "fake_async_lib",
+ testonly = True,
srcs = [
"example_spec.ts",
"fake_async.ts",
],
- deps = [
+ interop_deps = [
"//packages/core/testing",
- "@npm//@types/jasmine",
- "@npm//@types/node",
],
)
diff --git a/packages/examples/forms/BUILD.bazel b/packages/examples/forms/BUILD.bazel
index e56085266223..650904cf3ed5 100644
--- a/packages/examples/forms/BUILD.bazel
+++ b/packages/examples/forms/BUILD.bazel
@@ -1,34 +1,39 @@
-load("//tools:defaults.bzl", "esbuild", "http_server", "ng_module", "protractor_web_test_suite", "ts_library")
+load("//tools:defaults.bzl", "esbuild", "http_server", "protractor_web_test_suite")
+load("//tools:defaults2.bzl", "ng_project", "ts_project")
package(default_visibility = ["//visibility:public"])
-ng_module(
+ng_project(
name = "forms_examples",
srcs = glob(
["**/*.ts"],
exclude = ["**/*_spec.ts"],
),
- deps = [
- "//packages/core",
- "//packages/forms",
+ interop_deps = [
"//packages/platform-browser",
"//packages/platform-browser-dynamic",
- "//packages/router",
"//packages/zone.js/lib",
- "@npm//rxjs",
+ ],
+ deps = [
+ "//:node_modules/rxjs",
+ "//packages/core:core_rjs",
+ "//packages/forms:forms_rjs",
+ "//packages/router:router_rjs",
],
)
-ts_library(
+ts_project(
name = "forms_e2e_tests_lib",
testonly = True,
srcs = glob(["**/e2e_test/*_spec.ts"]),
- tsconfig = "//packages/examples:tsconfig-e2e.json",
- deps = [
- "//packages/examples/test-utils",
+ interop_deps = [
"//packages/private/testing",
- "@npm//@types/jasminewd2",
- "@npm//protractor",
+ ],
+ tsconfig = "//packages/examples:tsconfig_e2e",
+ deps = [
+ "//:node_modules/@types/jasminewd2",
+ "//:node_modules/protractor",
+ "//packages/examples/test-utils:test-utils_rjs",
],
)
diff --git a/packages/examples/platform-browser/BUILD.bazel b/packages/examples/platform-browser/BUILD.bazel
index f594500164f8..67df18392fa8 100644
--- a/packages/examples/platform-browser/BUILD.bazel
+++ b/packages/examples/platform-browser/BUILD.bazel
@@ -1,16 +1,18 @@
-load("//tools:defaults.bzl", "ng_module")
+load("//tools:defaults2.bzl", "ng_project")
package(default_visibility = ["//visibility:public"])
-ng_module(
+ng_project(
name = "platform_browser_examples",
srcs = glob(["**/*.ts"]),
- deps = [
+ interop_deps = [
"//packages/compiler",
- "//packages/core",
"//packages/platform-browser",
"//packages/platform-browser-dynamic",
],
+ deps = [
+ "//packages/core:core_rjs",
+ ],
)
filegroup(
diff --git a/packages/examples/router/BUILD.bazel b/packages/examples/router/BUILD.bazel
index 9df62d556b03..b65750368d0b 100644
--- a/packages/examples/router/BUILD.bazel
+++ b/packages/examples/router/BUILD.bazel
@@ -1,16 +1,18 @@
-load("//tools:defaults.bzl", "ng_module")
+load("//tools:defaults2.bzl", "ng_project")
package(default_visibility = ["//visibility:public"])
-ng_module(
+ng_project(
name = "router",
srcs = glob(
["**/*.ts"],
),
- deps = [
- "//packages/core",
+ interop_deps = [
"//packages/platform-browser",
- "//packages/router",
+ ],
+ deps = [
+ "//packages/core:core_rjs",
+ "//packages/router:router_rjs",
],
)
diff --git a/packages/examples/router/activated-route/BUILD.bazel b/packages/examples/router/activated-route/BUILD.bazel
index 84c44956acb0..d1a3d3718952 100644
--- a/packages/examples/router/activated-route/BUILD.bazel
+++ b/packages/examples/router/activated-route/BUILD.bazel
@@ -1,19 +1,22 @@
-load("//tools:defaults.bzl", "esbuild", "http_server", "ng_module")
+load("//tools:defaults.bzl", "esbuild", "http_server")
+load("//tools:defaults2.bzl", "ng_project")
package(default_visibility = ["//visibility:public"])
-ng_module(
+ng_project(
name = "router_activated_route_examples",
srcs = glob(
["**/*.ts"],
),
- deps = [
- "//packages/core",
- "//packages/platform-browser",
+ interop_deps = [
"//packages/platform-browser-dynamic",
- "//packages/router",
"//packages/zone.js/lib",
- "@npm//rxjs",
+ "//packages/platform-browser",
+ ],
+ deps = [
+ "//:node_modules/rxjs",
+ "//packages/core:core_rjs",
+ "//packages/router:router_rjs",
],
)
diff --git a/packages/examples/router/testing/BUILD.bazel b/packages/examples/router/testing/BUILD.bazel
index bbaf09459fdb..12a738521e33 100644
--- a/packages/examples/router/testing/BUILD.bazel
+++ b/packages/examples/router/testing/BUILD.bazel
@@ -1,17 +1,18 @@
-load("//tools:defaults.bzl", "jasmine_node_test", "karma_web_test_suite", "ts_library")
+load("//tools:defaults.bzl", "jasmine_node_test", "karma_web_test_suite")
+load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:public"])
-ts_library(
+ts_project(
name = "test_lib",
testonly = True,
srcs = glob(["**/*.spec.ts"]),
deps = [
- "//packages/common",
- "//packages/core",
- "//packages/core/testing",
- "//packages/router",
- "//packages/router/testing",
+ "//packages/common:common_rjs",
+ "//packages/core:core_rjs",
+ "//packages/core/testing:testing_rjs",
+ "//packages/router:router_rjs",
+ "//packages/router/testing:testing_rjs",
],
)
diff --git a/packages/examples/service-worker/push/BUILD.bazel b/packages/examples/service-worker/push/BUILD.bazel
index fc6ff49c9e32..802d8a68ab71 100644
--- a/packages/examples/service-worker/push/BUILD.bazel
+++ b/packages/examples/service-worker/push/BUILD.bazel
@@ -1,32 +1,37 @@
-load("//tools:defaults.bzl", "esbuild", "http_server", "ng_module", "protractor_web_test_suite", "ts_library")
+load("//tools:defaults.bzl", "esbuild", "http_server", "protractor_web_test_suite")
+load("//tools:defaults2.bzl", "ng_project", "ts_project")
package(default_visibility = ["//visibility:public"])
-ng_module(
+ng_project(
name = "sw_push_examples",
srcs = glob(
["**/*.ts"],
exclude = ["**/*_spec.ts"],
),
- deps = [
- "//packages/core",
+ interop_deps = [
"//packages/platform-browser",
"//packages/platform-browser-dynamic",
- "//packages/service-worker",
"//packages/zone.js/lib",
],
+ deps = [
+ "//packages/core:core_rjs",
+ "//packages/service-worker:service-worker_rjs",
+ ],
)
-ts_library(
+ts_project(
name = "sw_push_e2e_tests_lib",
testonly = True,
srcs = glob(["**/e2e_test/*_spec.ts"]),
- tsconfig = "//packages/examples:tsconfig-e2e.json",
- deps = [
- "//packages/examples/test-utils",
+ interop_deps = [
"//packages/private/testing",
- "@npm//@types/jasminewd2",
- "@npm//protractor",
+ ],
+ tsconfig = "//packages/examples:tsconfig_e2e",
+ deps = [
+ "//:node_modules/@types/jasminewd2",
+ "//:node_modules/protractor",
+ "//packages/examples/test-utils:test-utils_rjs",
],
)
diff --git a/packages/examples/service-worker/registration-options/BUILD.bazel b/packages/examples/service-worker/registration-options/BUILD.bazel
index b08650809dde..5d1a3a647505 100644
--- a/packages/examples/service-worker/registration-options/BUILD.bazel
+++ b/packages/examples/service-worker/registration-options/BUILD.bazel
@@ -1,32 +1,37 @@
-load("//tools:defaults.bzl", "esbuild", "http_server", "ng_module", "protractor_web_test_suite", "ts_library")
+load("//tools:defaults.bzl", "esbuild", "http_server", "protractor_web_test_suite")
+load("//tools:defaults2.bzl", "ng_project", "ts_project")
package(default_visibility = ["//visibility:public"])
-ng_module(
+ng_project(
name = "sw_registration_options_examples",
srcs = glob(
["**/*.ts"],
exclude = ["**/*_spec.ts"],
),
- deps = [
- "//packages/core",
+ interop_deps = [
"//packages/platform-browser",
"//packages/platform-browser-dynamic",
- "//packages/service-worker",
"//packages/zone.js/lib",
],
+ deps = [
+ "//packages/core:core_rjs",
+ "//packages/service-worker:service-worker_rjs",
+ ],
)
-ts_library(
+ts_project(
name = "sw_registration_options_e2e_tests_lib",
testonly = True,
srcs = glob(["**/e2e_test/*_spec.ts"]),
- tsconfig = "//packages/examples:tsconfig-e2e.json",
- deps = [
- "//packages/examples/test-utils",
+ interop_deps = [
"//packages/private/testing",
- "@npm//@types/jasminewd2",
- "@npm//protractor",
+ ],
+ tsconfig = "//packages/examples:tsconfig_e2e",
+ deps = [
+ "//:node_modules/@types/jasminewd2",
+ "//:node_modules/protractor",
+ "//packages/examples/test-utils:test-utils_rjs",
],
)
diff --git a/packages/examples/test-utils/BUILD.bazel b/packages/examples/test-utils/BUILD.bazel
index 60f587804f72..65619a36f998 100644
--- a/packages/examples/test-utils/BUILD.bazel
+++ b/packages/examples/test-utils/BUILD.bazel
@@ -1,12 +1,12 @@
-load("//tools:defaults.bzl", "ts_library")
+load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:public"])
-ts_library(
+ts_project(
name = "test-utils",
srcs = ["index.ts"],
deps = [
- "@npm//@types/selenium-webdriver",
+ "//:node_modules/@types/selenium-webdriver",
],
)
diff --git a/packages/examples/testing/BUILD.bazel b/packages/examples/testing/BUILD.bazel
index bd4962516108..2aac6c0afd69 100644
--- a/packages/examples/testing/BUILD.bazel
+++ b/packages/examples/testing/BUILD.bazel
@@ -1,14 +1,14 @@
-load("//tools:defaults.bzl", "ts_library")
+load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:public"])
-ts_library(
+ts_project(
name = "testing_examples",
+ testonly = True,
srcs = glob(["**/*.ts"]),
- tsconfig = "//packages:tsconfig-test",
deps = [
- "@npm//@types/jasmine",
- "@npm//@types/node",
+ "//:node_modules/@types/jasmine",
+ "//:node_modules/@types/node",
],
)
diff --git a/packages/examples/tsconfig-e2e.json b/packages/examples/tsconfig-e2e.json
index ed38112bb4ae..7727251c9a79 100644
--- a/packages/examples/tsconfig-e2e.json
+++ b/packages/examples/tsconfig-e2e.json
@@ -1,6 +1,6 @@
{
+ "extends": "./tsconfig-test.json",
"compilerOptions": {
- "lib": ["es2015"],
"types": ["node", "jasminewd2"]
}
}
diff --git a/packages/examples/tsconfig-test.json b/packages/examples/tsconfig-test.json
new file mode 100644
index 000000000000..e30ea2978842
--- /dev/null
+++ b/packages/examples/tsconfig-test.json
@@ -0,0 +1,6 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "types": ["jasmine"]
+ }
+}
\ No newline at end of file
diff --git a/packages/examples/tsconfig.json b/packages/examples/tsconfig.json
new file mode 100644
index 000000000000..328f728abfe0
--- /dev/null
+++ b/packages/examples/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "../tsconfig-build.json"
+}
\ No newline at end of file
diff --git a/packages/examples/upgrade/BUILD.bazel b/packages/examples/upgrade/BUILD.bazel
index af3d16a31b04..fe94f510bb7a 100644
--- a/packages/examples/upgrade/BUILD.bazel
+++ b/packages/examples/upgrade/BUILD.bazel
@@ -1,7 +1,29 @@
+load("//tools:defaults2.bzl", "ts_config")
+
package(default_visibility = ["//visibility:public"])
exports_files([
- "tsconfig-build.json",
+ "tsconfig.json",
"start-server.js",
"index.html",
])
+
+ts_config(
+ name = "tsconfig_build",
+ src = "tsconfig.json",
+ deps = [
+ "//:node_modules/@types/angular",
+ "//:node_modules/@types/jasmine",
+ "//:node_modules/tslib",
+ ],
+)
+
+ts_config(
+ name = "tsconfig_e2e",
+ src = "tsconfig-e2e.json",
+ deps = [
+ ":tsconfig_build",
+ "//:node_modules/@types/jasminewd2",
+ "//:node_modules/@types/node",
+ ],
+)
diff --git a/packages/examples/upgrade/tsconfig-build.json b/packages/examples/upgrade/tsconfig-build.json
deleted file mode 100644
index eb79d48482c3..000000000000
--- a/packages/examples/upgrade/tsconfig-build.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "compilerOptions": {
- "importHelpers": true,
- "lib": ["dom", "es2015"],
- "types": ["angular"]
- }
-}
diff --git a/packages/examples/upgrade/tsconfig-e2e.json b/packages/examples/upgrade/tsconfig-e2e.json
new file mode 100644
index 000000000000..0b30dff819bb
--- /dev/null
+++ b/packages/examples/upgrade/tsconfig-e2e.json
@@ -0,0 +1,7 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "lib": ["es2015"],
+ "types": ["node", "jasminewd2"]
+ }
+}
\ No newline at end of file
diff --git a/packages/examples/upgrade/tsconfig.json b/packages/examples/upgrade/tsconfig.json
new file mode 100644
index 000000000000..2f58826b7b2f
--- /dev/null
+++ b/packages/examples/upgrade/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "compilerOptions": {
+ "lib": ["dom", "es2015"],
+ "types": ["angular", "jasmine"],
+ "declaration": true,
+ "sourceMap": true,
+ "paths": {
+ "@angular/*": ["../../*/index"],
+ },
+ "experimentalDecorators": true,
+ "target": "es2015",
+ "moduleResolution": "node",
+ }
+}
diff --git a/packages/examples/upgrade/upgrade_example.bzl b/packages/examples/upgrade/upgrade_example.bzl
index 33934a3ecce7..35598a80fc83 100644
--- a/packages/examples/upgrade/upgrade_example.bzl
+++ b/packages/examples/upgrade/upgrade_example.bzl
@@ -1,4 +1,5 @@
-load("//tools:defaults.bzl", "esbuild", "http_server", "ng_module", "protractor_web_test_suite", "ts_library")
+load("//tools:defaults.bzl", "esbuild", "http_server", "protractor_web_test_suite")
+load("//tools:defaults2.bzl", "ng_project", "ts_project")
"""
Macro that can be used to create the Bazel targets for an "upgrade" example. Since the
@@ -8,33 +9,53 @@ load("//tools:defaults.bzl", "esbuild", "http_server", "ng_module", "protractor_
"""
def create_upgrade_example_targets(name, srcs, e2e_srcs, entry_point, assets = []):
- ng_module(
+ #ng_module(
+ # name = "%s_sources" % name,
+ # srcs = srcs,
+ # deps = [
+ # "@npm//@types/angular",
+ # "@npm//@types/jasmine",
+ # "//packages/core",
+ # "//packages/platform-browser",
+ # "//packages/upgrade/static",
+ # "//packages/core/testing",
+ # "//packages/upgrade/static/testing",
+ # ],
+ # tsconfig = "//packages/examples/upgrade:tsconfig.json",
+ #)
+
+ ng_project(
name = "%s_sources" % name,
srcs = srcs,
- deps = [
- "@npm//@types/angular",
- "@npm//@types/jasmine",
- "//packages/core",
+ interop_deps = [
"//packages/platform-browser",
"//packages/platform-browser-dynamic",
- "//packages/upgrade/static",
- "//packages/core/testing",
- "//packages/upgrade/static/testing",
],
- tsconfig = "//packages/examples/upgrade:tsconfig-build.json",
+ deps = [
+ "//:node_modules/@types/angular",
+ "//:node_modules/@types/jasmine",
+ "//:node_modules/tslib",
+ "//packages/core:core_rjs",
+ "//packages/core/testing:testing_rjs",
+ "//packages/upgrade/static:static_rjs",
+ "//packages/upgrade/static/testing:testing_rjs",
+ ],
+ tsconfig = "//packages/examples/upgrade:tsconfig_build",
)
- ts_library(
+ ts_project(
name = "%s_e2e_lib" % name,
srcs = e2e_srcs,
testonly = True,
- deps = [
- "@npm//@types/jasminewd2",
- "@npm//protractor",
- "//packages/examples/test-utils",
+ interop_deps = [
"//packages/private/testing",
],
- tsconfig = "//packages/examples:tsconfig-e2e.json",
+ deps = [
+ "//:node_modules/@types/jasminewd2",
+ "//:node_modules/protractor",
+ "//packages/examples/test-utils:test-utils_rjs",
+ ],
+ tsconfig = "//packages/examples/upgrade:tsconfig_e2e",
)
esbuild(
diff --git a/packages/localize/schematics/ng-add/BUILD.bazel b/packages/localize/schematics/ng-add/BUILD.bazel
index eef44f1d76c9..33dda23f722a 100644
--- a/packages/localize/schematics/ng-add/BUILD.bazel
+++ b/packages/localize/schematics/ng-add/BUILD.bazel
@@ -25,7 +25,9 @@ esbuild(
"@schematics/*",
],
format = "cjs",
+ metafile = False,
platform = "node",
+ target = "node20",
deps = [":ng-add"],
)
diff --git a/packages/localize/tools/BUILD.bazel b/packages/localize/tools/BUILD.bazel
index 4a127f112142..ebe8ba7cc4eb 100644
--- a/packages/localize/tools/BUILD.bazel
+++ b/packages/localize/tools/BUILD.bazel
@@ -47,6 +47,7 @@ esbuild(
"fast-glob",
],
format = "esm",
+ metafile = False,
platform = "node",
splitting = True,
target = "node12",
diff --git a/packages/service-worker/cli/BUILD.bazel b/packages/service-worker/cli/BUILD.bazel
index 87d901080ac4..98338f23af42 100644
--- a/packages/service-worker/cli/BUILD.bazel
+++ b/packages/service-worker/cli/BUILD.bazel
@@ -26,6 +26,7 @@ esbuild(
"@angular/service-worker",
],
format = "esm",
+ metafile = False,
platform = "node",
target = "node12",
deps = [
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index efc0d38e4152..101592bb126a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -16,7 +16,7 @@ importers:
dependencies:
'@angular-devkit/build-angular':
specifier: 19.2.0-next.2
- version: 19.2.0-next.2(@angular/compiler-cli@19.2.12)(@angular/compiler@19.2.12)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(karma@6.4.4)(protractor@7.0.0)(tsx@4.19.3)(typescript@5.8.2)(vite@6.1.0)
+ version: 19.2.0-next.2(@angular/compiler-cli@19.2.13)(@angular/compiler@19.2.13)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(karma@6.4.4)(protractor@7.0.0)(tsx@4.19.3)(typescript@5.8.2)(vite@6.1.0)
'@angular-devkit/core':
specifier: 19.2.0-next.2
version: 19.2.0-next.2(chokidar@4.0.3)
@@ -25,19 +25,19 @@ importers:
version: 19.2.0-next.2(chokidar@4.0.3)
'@angular/build':
specifier: 19.2.0-next.2
- version: 19.2.0-next.2(@angular/compiler-cli@19.2.12)(@angular/compiler@19.2.12)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)
+ version: 19.2.0-next.2(@angular/compiler-cli@19.2.13)(@angular/compiler@19.2.13)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)
'@angular/cdk':
specifier: 19.2.0-next.4
- version: 19.2.0-next.4(@angular/common@19.2.12)(@angular/core@19.2.11)(rxjs@7.8.2)
+ version: 19.2.0-next.4(@angular/common@19.2.13)(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/cli':
specifier: 19.2.0-next.2
version: 19.2.0-next.2(@types/node@18.19.84)(chokidar@4.0.3)
'@angular/material':
specifier: 19.2.0-next.4
- version: 19.2.0-next.4(@angular/cdk@19.2.0-next.4)(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/forms@19.2.12)(@angular/platform-browser@19.2.12)(rxjs@7.8.2)
+ version: 19.2.0-next.4(@angular/cdk@19.2.0-next.4)(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/forms@19.2.13)(@angular/platform-browser@19.2.13)(rxjs@7.8.2)
'@angular/ssr':
specifier: 19.2.0-next.2
- version: 19.2.0-next.2(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/router@19.2.12)
+ version: 19.2.0-next.2(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/router@19.2.13)
'@babel/cli':
specifier: 7.26.4
version: 7.26.4(@babel/core@7.26.9)
@@ -250,10 +250,10 @@ importers:
version: 2.0.1
ngx-flamegraph:
specifier: 0.0.12
- version: 0.0.12(@angular/common@19.2.12)(@angular/core@19.2.11)
+ version: 0.0.12(@angular/common@19.2.13)(@angular/core@19.2.11)
ngx-progressbar:
specifier: ^14.0.0
- version: 14.0.0(@angular/cdk@19.2.0-next.4)(@angular/common@19.2.12)(@angular/core@19.2.11)(rxjs@7.8.2)
+ version: 14.0.0(@angular/cdk@19.2.0-next.4)(@angular/common@19.2.13)(@angular/core@19.2.11)(rxjs@7.8.2)
open-in-idx:
specifier: ^0.1.1
version: 0.1.1
@@ -347,10 +347,10 @@ importers:
version: 0.1902.0-next.2(chokidar@4.0.3)
'@angular/animations':
specifier: ^19.2.0-next
- version: 19.2.11(@angular/common@19.2.12)(@angular/core@19.2.11)
+ version: 19.2.11(@angular/common@19.2.13)(@angular/core@19.2.11)
'@angular/build-tooling':
specifier: https://github.com/angular/dev-infra-private-build-tooling-builds.git#5db176c0f3211663830fd3ff4064c1dff0eaccb4
- version: github.com/angular/dev-infra-private-build-tooling-builds/5db176c0f3211663830fd3ff4064c1dff0eaccb4(@angular/compiler-cli@19.2.12)(@angular/compiler@19.2.12)(@angular/ssr@19.2.0-next.2)(chokidar@4.0.3)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.2)(postcss@8.5.2)(rxjs@7.8.2)(terser@5.39.0)(tsx@4.19.3)
+ version: github.com/angular/dev-infra-private-build-tooling-builds/5db176c0f3211663830fd3ff4064c1dff0eaccb4(@angular/compiler-cli@19.2.13)(@angular/compiler@19.2.13)(@angular/ssr@19.2.0-next.2)(chokidar@4.0.3)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.2)(postcss@8.5.2)(rxjs@7.8.2)(terser@5.39.0)(tsx@4.19.3)
'@angular/core':
specifier: ^19.2.0-next
version: 19.2.11(rxjs@7.8.2)
@@ -452,7 +452,7 @@ importers:
version: 0.5.16
angular-split:
specifier: ^19.0.0
- version: 19.0.0(@angular/common@19.2.12)(@angular/core@19.2.11)(rxjs@7.8.2)
+ version: 19.0.0(@angular/common@19.2.13)(@angular/core@19.2.11)(rxjs@7.8.2)
check-side-effects:
specifier: 0.0.23
version: 0.0.23
@@ -800,7 +800,7 @@ packages:
transitivePeerDependencies:
- chokidar
- /@angular-devkit/build-angular@19.2.0-next.2(@angular/compiler-cli@19.2.12)(@angular/compiler@19.2.12)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(karma@6.4.4)(protractor@7.0.0)(tsx@4.19.3)(typescript@5.8.2)(vite@6.1.0):
+ /@angular-devkit/build-angular@19.2.0-next.2(@angular/compiler-cli@19.2.13)(@angular/compiler@19.2.13)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(karma@6.4.4)(protractor@7.0.0)(tsx@4.19.3)(typescript@5.8.2)(vite@6.1.0):
resolution: {integrity: sha512-o3/X02x4p9pCVaPB4uoc2VUL2s2YvGW58jfSHRhwtiLVoIgpnbyHyyhtIdO8rLRr09Pk1fLUvXVY4/d6hjXt1Q==, tarball: https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-19.2.0-next.2.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
peerDependencies:
@@ -848,9 +848,9 @@ packages:
'@angular-devkit/architect': 0.1902.0-next.2(chokidar@4.0.3)
'@angular-devkit/build-webpack': 0.1902.0-next.2(chokidar@4.0.3)(webpack-dev-server@5.2.0)(webpack@5.97.1)
'@angular-devkit/core': 19.2.0-next.2(chokidar@4.0.3)
- '@angular/build': 19.2.0-next.2(@angular/compiler-cli@19.2.12)(@angular/compiler@19.2.12)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.38.2)(tsx@4.19.3)(typescript@5.8.2)
- '@angular/compiler-cli': 19.2.12(@angular/compiler@19.2.12)(typescript@5.8.2)
- '@angular/ssr': 19.2.0-next.2(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/router@19.2.12)
+ '@angular/build': 19.2.0-next.2(@angular/compiler-cli@19.2.13)(@angular/compiler@19.2.13)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.38.2)(tsx@4.19.3)(typescript@5.8.2)
+ '@angular/compiler-cli': 19.2.13(@angular/compiler@19.2.13)(typescript@5.8.2)
+ '@angular/ssr': 19.2.0-next.2(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/router@19.2.13)
'@babel/core': 7.26.8
'@babel/generator': 7.26.8
'@babel/helper-annotate-as-pure': 7.25.9
@@ -861,7 +861,7 @@ packages:
'@babel/preset-env': 7.26.8(@babel/core@7.26.8)
'@babel/runtime': 7.26.7
'@discoveryjs/json-ext': 0.6.3
- '@ngtools/webpack': 19.2.0-next.2(@angular/compiler-cli@19.2.12)(typescript@5.8.2)(webpack@5.97.1)
+ '@ngtools/webpack': 19.2.0-next.2(@angular/compiler-cli@19.2.13)(typescript@5.8.2)(webpack@5.97.1)
'@vitejs/plugin-basic-ssl': 1.2.0(vite@6.1.0)
ansi-colors: 4.1.3
autoprefixer: 10.4.20(postcss@8.5.2)
@@ -1004,14 +1004,14 @@ packages:
- chokidar
dev: false
- /@angular/animations@19.2.11(@angular/common@19.2.12)(@angular/core@19.2.11):
+ /@angular/animations@19.2.11(@angular/common@19.2.13)(@angular/core@19.2.11):
resolution: {integrity: sha512-NR33bZVho7EgTc1fmCnmkwc2/U266n311Wfvk7VVtz+0Q9WliNdDLBon654V8IWSKvlqKXyU3W+fp0VjH/FvSw==, tarball: https://registry.npmjs.org/@angular/animations/-/animations-19.2.11.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
'@angular/common': 19.2.11
'@angular/core': 19.2.11
dependencies:
- '@angular/common': 19.2.12(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/common': 19.2.13(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/core': 19.2.11(rxjs@7.8.2)
tslib: 2.8.1
@@ -1025,7 +1025,7 @@ packages:
- zone.js
dev: true
- /@angular/build@19.1.0-rc.0(@angular/compiler-cli@19.2.12)(@angular/compiler@19.2.12)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3):
+ /@angular/build@19.1.0-rc.0(@angular/compiler-cli@19.2.13)(@angular/compiler@19.2.13)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3):
resolution: {integrity: sha512-ALl+MVMYBF+E7HyAQ+1MtE6sNIOAX0o2Sfs0wdIQfM2unRl6jPsz/Ker4BjnNQIK4wRCcstyzBv5mZBDulfFIQ==, tarball: https://registry.npmjs.org/@angular/build/-/build-19.1.0-rc.0.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
peerDependencies:
@@ -1060,9 +1060,9 @@ packages:
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1901.0-rc.0(chokidar@4.0.3)
- '@angular/compiler': 19.2.12
- '@angular/compiler-cli': 19.2.12(@angular/compiler@19.2.12)(typescript@5.8.2)
- '@angular/ssr': 19.2.0-next.2(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/router@19.2.12)
+ '@angular/compiler': 19.2.13
+ '@angular/compiler-cli': 19.2.13(@angular/compiler@19.2.13)(typescript@5.8.2)
+ '@angular/ssr': 19.2.0-next.2(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/router@19.2.13)
'@babel/core': 7.26.0
'@babel/helper-annotate-as-pure': 7.25.9
'@babel/helper-split-export-declaration': 7.24.7
@@ -1105,7 +1105,7 @@ packages:
- yaml
dev: true
- /@angular/build@19.2.0-next.2(@angular/compiler-cli@19.2.12)(@angular/compiler@19.2.12)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.38.2)(tsx@4.19.3)(typescript@5.8.2):
+ /@angular/build@19.2.0-next.2(@angular/compiler-cli@19.2.13)(@angular/compiler@19.2.13)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.38.2)(tsx@4.19.3)(typescript@5.8.2):
resolution: {integrity: sha512-FmpJla0+M+BE1bQbHIKbl5wKrHsSg6JTIl+kiW/kW4GKKZsS4FJkg56UhyI7+bjuId9s3wptpdMIFpRDaDytRg==, tarball: https://registry.npmjs.org/@angular/build/-/build-19.2.0-next.2.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
peerDependencies:
@@ -1140,9 +1140,9 @@ packages:
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1902.0-next.2(chokidar@4.0.3)
- '@angular/compiler': 19.2.12
- '@angular/compiler-cli': 19.2.12(@angular/compiler@19.2.12)(typescript@5.8.2)
- '@angular/ssr': 19.2.0-next.2(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/router@19.2.12)
+ '@angular/compiler': 19.2.13
+ '@angular/compiler-cli': 19.2.13(@angular/compiler@19.2.13)(typescript@5.8.2)
+ '@angular/ssr': 19.2.0-next.2(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/router@19.2.13)
'@babel/core': 7.26.8
'@babel/helper-annotate-as-pure': 7.25.9
'@babel/helper-split-export-declaration': 7.24.7
@@ -1185,7 +1185,7 @@ packages:
- yaml
dev: false
- /@angular/build@19.2.0-next.2(@angular/compiler-cli@19.2.12)(@angular/compiler@19.2.12)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2):
+ /@angular/build@19.2.0-next.2(@angular/compiler-cli@19.2.13)(@angular/compiler@19.2.13)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2):
resolution: {integrity: sha512-FmpJla0+M+BE1bQbHIKbl5wKrHsSg6JTIl+kiW/kW4GKKZsS4FJkg56UhyI7+bjuId9s3wptpdMIFpRDaDytRg==, tarball: https://registry.npmjs.org/@angular/build/-/build-19.2.0-next.2.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
peerDependencies:
@@ -1220,9 +1220,9 @@ packages:
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1902.0-next.2(chokidar@4.0.3)
- '@angular/compiler': 19.2.12
- '@angular/compiler-cli': 19.2.12(@angular/compiler@19.2.12)(typescript@5.8.2)
- '@angular/ssr': 19.2.0-next.2(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/router@19.2.12)
+ '@angular/compiler': 19.2.13
+ '@angular/compiler-cli': 19.2.13(@angular/compiler@19.2.13)(typescript@5.8.2)
+ '@angular/ssr': 19.2.0-next.2(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/router@19.2.13)
'@babel/core': 7.26.8
'@babel/helper-annotate-as-pure': 7.25.9
'@babel/helper-split-export-declaration': 7.24.7
@@ -1265,14 +1265,14 @@ packages:
- yaml
dev: false
- /@angular/cdk@19.2.0-next.4(@angular/common@19.2.12)(@angular/core@19.2.11)(rxjs@7.8.2):
+ /@angular/cdk@19.2.0-next.4(@angular/common@19.2.13)(@angular/core@19.2.11)(rxjs@7.8.2):
resolution: {integrity: sha512-fmmwokyT2IGLRGzQEj2j4EoQBNdML+QYKyH3J3KlGN7i3p3G63uitzrvz5sEAdsXnpebxemhAs9aPW+HPhsvew==, tarball: https://registry.npmjs.org/@angular/cdk/-/cdk-19.2.0-next.4.tgz}
peerDependencies:
'@angular/common': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0
'@angular/core': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0
rxjs: ^6.5.3 || ^7.4.0
dependencies:
- '@angular/common': 19.2.12(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/common': 19.2.13(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/core': 19.2.11(rxjs@7.8.2)
rxjs: 7.8.2
tslib: 2.8.1
@@ -1308,26 +1308,26 @@ packages:
- supports-color
dev: false
- /@angular/common@19.2.12(@angular/core@19.2.11)(rxjs@7.8.2):
- resolution: {integrity: sha512-oE2KLvU+YUyq2pUPS8nBWxkPGj29JzslaFcS9vQgvuKZgBTIwAgKm8QHBsitiZ0V+kX8Agwnl5YSdxdtuV2gQQ==, tarball: https://registry.npmjs.org/@angular/common/-/common-19.2.12.tgz}
+ /@angular/common@19.2.13(@angular/core@19.2.11)(rxjs@7.8.2):
+ resolution: {integrity: sha512-k7I4bLH+bgI02VL81MaL0NcZPfVl153KAiARwk+ZlkmQjMnWlmsAHQ6054SWoNEXwP855ATR6YYDVqJh8TZaqw==, tarball: https://registry.npmjs.org/@angular/common/-/common-19.2.13.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
- '@angular/core': 19.2.12
+ '@angular/core': 19.2.13
rxjs: ^6.5.3 || ^7.4.0
dependencies:
'@angular/core': 19.2.11(rxjs@7.8.2)
rxjs: 7.8.2
tslib: 2.8.1
- /@angular/compiler-cli@19.2.12(@angular/compiler@19.2.12)(typescript@5.8.2):
- resolution: {integrity: sha512-w8XMBF9ifuQoL5+1dLTdiTGKHV5mwXVrQyfQufmlBUYkmMU0qVcx7OoabHkwols0LGhYY/vcoxWgM5eyUSF41A==, tarball: https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.2.12.tgz}
+ /@angular/compiler-cli@19.2.13(@angular/compiler@19.2.13)(typescript@5.8.2):
+ resolution: {integrity: sha512-SSuzKMcktvd6VexivDwhP7ctQBD6yyoo5E91I7Frn5nrvYNM+TIyYcXmJ4dgby5/GrPZGfm2sWl3ARr2vbCgtA==, tarball: https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.2.13.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
hasBin: true
peerDependencies:
- '@angular/compiler': 19.2.12
+ '@angular/compiler': 19.2.13
typescript: '>=5.5 <5.9'
dependencies:
- '@angular/compiler': 19.2.12
+ '@angular/compiler': 19.2.13
'@babel/core': 7.26.9
'@jridgewell/sourcemap-codec': 1.5.0
chokidar: 4.0.3
@@ -1340,8 +1340,8 @@ packages:
transitivePeerDependencies:
- supports-color
- /@angular/compiler@19.2.12:
- resolution: {integrity: sha512-OXfnkrtPQ1n64zWv3I0Zhk4U+Xtsbc7Utc15vqc+9sYewFjH0Fdb7bsNZ31+unpn+icWlYELtGINh+ld/rqKQQ==, tarball: https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.12.tgz}
+ /@angular/compiler@19.2.13:
+ resolution: {integrity: sha512-xAj1peVrQtb65NsULmz8ocH4QZ4ESG5YiiVzJ0tLz8t280xY+QhJiM6C0+jaCVHLXvZp0c7GEzsYjL6x1HmabQ==, tarball: https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.13.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
dependencies:
tslib: 2.8.1
@@ -1367,23 +1367,23 @@ packages:
rxjs: 7.8.2
tslib: 2.8.1
- /@angular/forms@19.2.12(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/platform-browser@19.2.12)(rxjs@7.8.2):
- resolution: {integrity: sha512-hHJ+YoofahQvGlKvKxgj2vdGwP/D6RYoDtD/MLj41ZIIok4dmk9Rlty1pa3/FfluFK+tHX+CEYqfB+oShtPeaQ==, tarball: https://registry.npmjs.org/@angular/forms/-/forms-19.2.12.tgz}
+ /@angular/forms@19.2.13(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/platform-browser@19.2.13)(rxjs@7.8.2):
+ resolution: {integrity: sha512-g46KQFrBJhmknczlGEYvWVsPhk7ZI8WOuWkzWEl81Lf3ojEVA/OF8w4VwKZL7wOMKRxOUhuYq6tNPm8tBjtryw==, tarball: https://registry.npmjs.org/@angular/forms/-/forms-19.2.13.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
- '@angular/common': 19.2.12
- '@angular/core': 19.2.12
- '@angular/platform-browser': 19.2.12
+ '@angular/common': 19.2.13
+ '@angular/core': 19.2.13
+ '@angular/platform-browser': 19.2.13
rxjs: ^6.5.3 || ^7.4.0
dependencies:
- '@angular/common': 19.2.12(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/common': 19.2.13(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/core': 19.2.11(rxjs@7.8.2)
- '@angular/platform-browser': 19.2.12(@angular/animations@19.2.11)(@angular/common@19.2.12)(@angular/core@19.2.11)
+ '@angular/platform-browser': 19.2.13(@angular/animations@19.2.11)(@angular/common@19.2.13)(@angular/core@19.2.11)
rxjs: 7.8.2
tslib: 2.8.1
dev: false
- /@angular/material@19.2.0-next.4(@angular/cdk@19.2.0-next.4)(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/forms@19.2.12)(@angular/platform-browser@19.2.12)(rxjs@7.8.2):
+ /@angular/material@19.2.0-next.4(@angular/cdk@19.2.0-next.4)(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/forms@19.2.13)(@angular/platform-browser@19.2.13)(rxjs@7.8.2):
resolution: {integrity: sha512-darSa77CFdlVFax88GLNJWstHJp8j5qUo/kbQwUNsN0ltigS4o7eaczBA9ukekoSpXSgijq6y2VfnkkYi8hCZQ==, tarball: https://registry.npmjs.org/@angular/material/-/material-19.2.0-next.4.tgz}
peerDependencies:
'@angular/cdk': 19.2.0-next.4
@@ -1393,47 +1393,47 @@ packages:
'@angular/platform-browser': ^19.0.0-0 || ^19.1.0-0 || ^19.2.0-0 || ^19.3.0-0 || ^20.0.0-0
rxjs: ^6.5.3 || ^7.4.0
dependencies:
- '@angular/cdk': 19.2.0-next.4(@angular/common@19.2.12)(@angular/core@19.2.11)(rxjs@7.8.2)
- '@angular/common': 19.2.12(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/cdk': 19.2.0-next.4(@angular/common@19.2.13)(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/common': 19.2.13(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/core': 19.2.11(rxjs@7.8.2)
- '@angular/forms': 19.2.12(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/platform-browser@19.2.12)(rxjs@7.8.2)
- '@angular/platform-browser': 19.2.12(@angular/animations@19.2.11)(@angular/common@19.2.12)(@angular/core@19.2.11)
+ '@angular/forms': 19.2.13(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/platform-browser@19.2.13)(rxjs@7.8.2)
+ '@angular/platform-browser': 19.2.13(@angular/animations@19.2.11)(@angular/common@19.2.13)(@angular/core@19.2.11)
rxjs: 7.8.2
tslib: 2.8.1
dev: false
- /@angular/platform-browser@19.2.12(@angular/animations@19.2.11)(@angular/common@19.2.12)(@angular/core@19.2.11):
- resolution: {integrity: sha512-R1LF7zvO2CxcJGn8tvpZQPH773iLDMVEGMZc2pRsQoehqgRmos2qjdML4DgVFF1Ismu9TxEtBfIzOiHCSOg2Zg==, tarball: https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.12.tgz}
+ /@angular/platform-browser@19.2.13(@angular/animations@19.2.11)(@angular/common@19.2.13)(@angular/core@19.2.11):
+ resolution: {integrity: sha512-YeuRfGbo8qFepoAUoubk/1079wOown5Qgr9eAhgCXxoXb2rt87xbJF3YCSSim38SP3kK1rJQqP+Sr8n7ef+n5Q==, tarball: https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.13.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
- '@angular/animations': 19.2.12
- '@angular/common': 19.2.12
- '@angular/core': 19.2.12
+ '@angular/animations': 19.2.13
+ '@angular/common': 19.2.13
+ '@angular/core': 19.2.13
peerDependenciesMeta:
'@angular/animations':
optional: true
dependencies:
- '@angular/animations': 19.2.11(@angular/common@19.2.12)(@angular/core@19.2.11)
- '@angular/common': 19.2.12(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/animations': 19.2.11(@angular/common@19.2.13)(@angular/core@19.2.11)
+ '@angular/common': 19.2.13(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/core': 19.2.11(rxjs@7.8.2)
tslib: 2.8.1
- /@angular/router@19.2.12(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/platform-browser@19.2.12)(rxjs@7.8.2):
- resolution: {integrity: sha512-T2VM8QjKukLnPVyWe4EavSIsBmt91wGVTP7AK8rpWNdMXhVjn8m4iPJGT2Ne0Bqh4kTmISOPZPDEA6A6Q78NvQ==, tarball: https://registry.npmjs.org/@angular/router/-/router-19.2.12.tgz}
+ /@angular/router@19.2.13(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/platform-browser@19.2.13)(rxjs@7.8.2):
+ resolution: {integrity: sha512-BZObWQtGkDv2WHyLVRRecGbLwalbI8kOXKaVgN5dqP4z/t5bpzYXZixPO9e0E1Ff0+m4tQalhTc84j8X7XZuTw==, tarball: https://registry.npmjs.org/@angular/router/-/router-19.2.13.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
- '@angular/common': 19.2.12
- '@angular/core': 19.2.12
- '@angular/platform-browser': 19.2.12
+ '@angular/common': 19.2.13
+ '@angular/core': 19.2.13
+ '@angular/platform-browser': 19.2.13
rxjs: ^6.5.3 || ^7.4.0
dependencies:
- '@angular/common': 19.2.12(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/common': 19.2.13(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/core': 19.2.11(rxjs@7.8.2)
- '@angular/platform-browser': 19.2.12(@angular/animations@19.2.11)(@angular/common@19.2.12)(@angular/core@19.2.11)
+ '@angular/platform-browser': 19.2.13(@angular/animations@19.2.11)(@angular/common@19.2.13)(@angular/core@19.2.11)
rxjs: 7.8.2
tslib: 2.8.1
- /@angular/ssr@19.2.0-next.2(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/router@19.2.12):
+ /@angular/ssr@19.2.0-next.2(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/router@19.2.13):
resolution: {integrity: sha512-JN5Utru8xJRpCF+ArG3CCgzlCYgbnB2XUV4J6uO56KgdqK5OeCOCcsuJYBHu+ifaF4ecb74JdXWm0VgB/HQKXA==, tarball: https://registry.npmjs.org/@angular/ssr/-/ssr-19.2.0-next.2.tgz}
peerDependencies:
'@angular/common': ^19.0.0 || ^19.2.0-next.0
@@ -1444,9 +1444,9 @@ packages:
'@angular/platform-server':
optional: true
dependencies:
- '@angular/common': 19.2.12(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/common': 19.2.13(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/core': 19.2.11(rxjs@7.8.2)
- '@angular/router': 19.2.12(@angular/common@19.2.12)(@angular/core@19.2.11)(@angular/platform-browser@19.2.12)(rxjs@7.8.2)
+ '@angular/router': 19.2.13(@angular/common@19.2.13)(@angular/core@19.2.11)(@angular/platform-browser@19.2.13)(rxjs@7.8.2)
tslib: 2.8.1
/@antfu/install-pkg@1.0.0:
@@ -4653,7 +4653,7 @@ packages:
'@napi-rs/nice-win32-x64-msvc': 1.0.1
optional: true
- /@ngtools/webpack@19.2.0-next.2(@angular/compiler-cli@19.2.12)(typescript@5.8.2)(webpack@5.97.1):
+ /@ngtools/webpack@19.2.0-next.2(@angular/compiler-cli@19.2.13)(typescript@5.8.2)(webpack@5.97.1):
resolution: {integrity: sha512-YxtR1+YiXjOmaunOIt3CpmEQunV42pbG5pYd/l6Pjqg/83MHxO8h2ax51By/LIzKm6P1qKsGTEtyZBanG7JgGQ==, tarball: https://registry.npmjs.org/@ngtools/webpack/-/webpack-19.2.0-next.2.tgz}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
peerDependencies:
@@ -4661,7 +4661,7 @@ packages:
typescript: '>=5.5 <5.8'
webpack: ^5.54.0
dependencies:
- '@angular/compiler-cli': 19.2.12(@angular/compiler@19.2.12)(typescript@5.8.2)
+ '@angular/compiler-cli': 19.2.13(@angular/compiler@19.2.13)(typescript@5.8.2)
typescript: 5.8.2
webpack: 5.97.1(esbuild@0.25.0)
dev: false
@@ -7179,14 +7179,14 @@ packages:
resolution: {integrity: sha512-vqsT6zwu80cZ8RY7qRQBZuy6Fq5X7/N5hkV9LzNT0c8b546rw4ErGK6muW1u2JnDKYa7+jJuaGM702bWir4HGw==, tarball: https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.8.3.tgz}
dev: false
- /angular-split@19.0.0(@angular/common@19.2.12)(@angular/core@19.2.11)(rxjs@7.8.2):
+ /angular-split@19.0.0(@angular/common@19.2.13)(@angular/core@19.2.11)(rxjs@7.8.2):
resolution: {integrity: sha512-vQqXWLcCimFmInu2lpGKIfS9FtYBgKmoWenPjeYkHSRdWmb7HLGlQoNPj1oALrwdhIWFPdySgp0BIXDe2IAepQ==, tarball: https://registry.npmjs.org/angular-split/-/angular-split-19.0.0.tgz}
peerDependencies:
'@angular/common': '>=19.0.0'
'@angular/core': '>=19.0.0'
rxjs: '>=7.0.0'
dependencies:
- '@angular/common': 19.2.12(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/common': 19.2.13(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/core': 19.2.11(rxjs@7.8.2)
rxjs: 7.8.2
tslib: 2.8.1
@@ -14329,18 +14329,18 @@ packages:
engines: {node: '>= 0.4.0'}
dev: true
- /ngx-flamegraph@0.0.12(@angular/common@19.2.12)(@angular/core@19.2.11):
+ /ngx-flamegraph@0.0.12(@angular/common@19.2.13)(@angular/core@19.2.11):
resolution: {integrity: sha512-YoxrqlL36Bg5Ca9fu10kuSUmaWHAvx7jkxINF4/4cXn9bBPRfu78FqnZ5LIULC0+iScZcSDSWDAnUdn8H7+wGw==, tarball: https://registry.npmjs.org/ngx-flamegraph/-/ngx-flamegraph-0.0.12.tgz}
peerDependencies:
'@angular/common': ^9.0.0
'@angular/core': ^9.0.0
dependencies:
- '@angular/common': 19.2.12(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/common': 19.2.13(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/core': 19.2.11(rxjs@7.8.2)
tslib: 2.8.1
dev: false
- /ngx-progressbar@14.0.0(@angular/cdk@19.2.0-next.4)(@angular/common@19.2.12)(@angular/core@19.2.11)(rxjs@7.8.2):
+ /ngx-progressbar@14.0.0(@angular/cdk@19.2.0-next.4)(@angular/common@19.2.13)(@angular/core@19.2.11)(rxjs@7.8.2):
resolution: {integrity: sha512-tDj7h5F2aSI4/XaJjs50FnELVe6qFqyz3vVq22acacd3oDW2EyJB4c+IYaxMf5972OdTw0WL4n6UwQ3dqC+gCA==, tarball: https://registry.npmjs.org/ngx-progressbar/-/ngx-progressbar-14.0.0.tgz}
peerDependencies:
'@angular/cdk': '>=17.3.0'
@@ -14348,8 +14348,8 @@ packages:
'@angular/core': '>=17.3.0'
rxjs: '>=7.0.0'
dependencies:
- '@angular/cdk': 19.2.0-next.4(@angular/common@19.2.12)(@angular/core@19.2.11)(rxjs@7.8.2)
- '@angular/common': 19.2.12(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/cdk': 19.2.0-next.4(@angular/common@19.2.13)(@angular/core@19.2.11)(rxjs@7.8.2)
+ '@angular/common': 19.2.13(@angular/core@19.2.11)(rxjs@7.8.2)
'@angular/core': 19.2.11(rxjs@7.8.2)
rxjs: 7.8.2
tslib: 2.8.1
@@ -19777,14 +19777,14 @@ packages:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, tarball: https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz}
dev: true
- github.com/angular/dev-infra-private-build-tooling-builds/5db176c0f3211663830fd3ff4064c1dff0eaccb4(@angular/compiler-cli@19.2.12)(@angular/compiler@19.2.12)(@angular/ssr@19.2.0-next.2)(chokidar@4.0.3)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.2)(postcss@8.5.2)(rxjs@7.8.2)(terser@5.39.0)(tsx@4.19.3):
+ github.com/angular/dev-infra-private-build-tooling-builds/5db176c0f3211663830fd3ff4064c1dff0eaccb4(@angular/compiler-cli@19.2.13)(@angular/compiler@19.2.13)(@angular/ssr@19.2.0-next.2)(chokidar@4.0.3)(karma-chrome-launcher@3.2.0)(karma-firefox-launcher@2.1.3)(karma-jasmine@5.1.0)(karma-junit-reporter@2.0.1)(karma-requirejs@1.1.0)(karma-sourcemap-loader@0.4.0)(karma@6.4.4)(less@4.2.2)(postcss@8.5.2)(rxjs@7.8.2)(terser@5.39.0)(tsx@4.19.3):
resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-build-tooling-builds/tar.gz/5db176c0f3211663830fd3ff4064c1dff0eaccb4}
id: github.com/angular/dev-infra-private-build-tooling-builds/5db176c0f3211663830fd3ff4064c1dff0eaccb4
name: '@angular/build-tooling'
version: 0.0.0-d44be7e28087c3499d70dda9859d51c1cd3fe1bf
dependencies:
'@angular/benchpress': 0.3.0(rxjs@7.8.2)
- '@angular/build': 19.1.0-rc.0(@angular/compiler-cli@19.2.12)(@angular/compiler@19.2.12)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)
+ '@angular/build': 19.1.0-rc.0(@angular/compiler-cli@19.2.13)(@angular/compiler@19.2.13)(@angular/ssr@19.2.0-next.2)(@types/node@18.19.84)(chokidar@4.0.3)(less@4.2.2)(postcss@8.5.2)(terser@5.39.0)(tsx@4.19.3)(typescript@5.7.3)
'@babel/core': 7.26.10
'@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.10)
'@bazel/buildifier': 6.3.3
diff --git a/tools/defaults2.bzl b/tools/defaults2.bzl
index 0657da33c0e6..a78eeda92080 100644
--- a/tools/defaults2.bzl
+++ b/tools/defaults2.bzl
@@ -31,9 +31,18 @@ def _determine_tsconfig(testonly):
if native.package_name().startswith("packages/localize"):
return "//packages:tsconfig_test" if testonly else "//packages/localize:tsconfig_build"
+ if native.package_name().startswith("packages/common/locales/generate-locales-tool"):
+ return "//packages:tsconfig_test" if testonly else "//packages/common/locales/generate-locales-tool:tsconfig_build"
+
+ if native.package_name().startswith("packages/examples"):
+ return "//packages/examples:tsconfig_test" if testonly else "//packages/examples:tsconfig_build"
+
if native.package_name().startswith("packages"):
return "//packages:tsconfig_test" if testonly else "//packages:tsconfig_build"
+ if native.package_name().startswith("tools"):
+ return "//tools:tsconfig_test" if testonly else "//tools:tsconfig_build"
+
fail("Failing... a tsconfig value must be provided.")
def ts_project(
diff --git a/tools/saucelabs-daemon/BUILD.bazel b/tools/saucelabs-daemon/BUILD.bazel
index 1e8817ca543e..340b77d2b147 100644
--- a/tools/saucelabs-daemon/BUILD.bazel
+++ b/tools/saucelabs-daemon/BUILD.bazel
@@ -1,8 +1,8 @@
-load("//tools:defaults.bzl", "ts_library")
+load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:public"])
-ts_library(
+ts_project(
name = "saucelabs-daemon",
srcs = [
"browser.ts",
diff --git a/tools/saucelabs-daemon/background-service/BUILD.bazel b/tools/saucelabs-daemon/background-service/BUILD.bazel
index c877cbc36c15..ef518937abd8 100644
--- a/tools/saucelabs-daemon/background-service/BUILD.bazel
+++ b/tools/saucelabs-daemon/background-service/BUILD.bazel
@@ -1,17 +1,20 @@
-load("//tools:defaults.bzl", "nodejs_binary", "ts_library")
+load("//tools:defaults.bzl", "nodejs_binary")
+load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:public"])
-ts_library(
+ts_project(
name = "background-service_lib",
srcs = glob(["*.ts"]),
- deps = [
+ interop_deps = [
"//:browser-providers",
"//tools/saucelabs-daemon",
- "@npm//@types/node",
- "@npm//@types/selenium-webdriver4",
- "@npm//chalk",
- "@npm//selenium-webdriver4",
+ ],
+ deps = [
+ "//:node_modules/@types/node",
+ "//:node_modules/@types/selenium-webdriver4",
+ "//:node_modules/chalk",
+ "//:node_modules/selenium-webdriver4",
],
)
@@ -21,7 +24,7 @@ nodejs_binary(
":background-service_lib",
"//:sauce_connect",
],
- entry_point = ":cli.ts",
+ entry_point = ":cli.js",
templated_args = [
"$(rootpath //:sauce_connect)",
],
diff --git a/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts b/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts
index 06172fa83fe4..199d8e4dbce3 100644
--- a/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts
+++ b/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts
@@ -11,7 +11,6 @@ import {Builder, WebDriver} from 'selenium-webdriver4';
import {Browser, getUniqueId} from '../browser';
-import {IpcServer} from './ipc';
import {openSauceConnectTunnel} from './sauce-connect-tunnel';
const defaultCapabilities = {
diff --git a/tools/saucelabs-daemon/launcher/BUILD.bazel b/tools/saucelabs-daemon/launcher/BUILD.bazel
index dda2e14a0369..c7abfc45c973 100644
--- a/tools/saucelabs-daemon/launcher/BUILD.bazel
+++ b/tools/saucelabs-daemon/launcher/BUILD.bazel
@@ -1,14 +1,15 @@
-load("//tools:defaults.bzl", "esbuild", "ts_library")
+load("//tools:defaults.bzl", "esbuild")
+load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:public"])
-ts_library(
+ts_project(
name = "launcher",
srcs = [
"index.ts",
"launcher.ts",
],
- deps = [
+ interop_deps = [
"//tools/saucelabs-daemon",
"@npm//@types/node",
],
@@ -20,6 +21,7 @@ esbuild(
name = "launcher_cjs",
entry_point = "index.ts",
format = "cjs",
+ metafile = False,
output = "index.cjs",
platform = "node",
deps = [":launcher"],
diff --git a/tools/testing/BUILD.bazel b/tools/testing/BUILD.bazel
index 9f8dc8a79db5..63f20610d9eb 100644
--- a/tools/testing/BUILD.bazel
+++ b/tools/testing/BUILD.bazel
@@ -1,22 +1,23 @@
-load("//tools:defaults.bzl", "jasmine_node_test", "ts_library")
+load("//tools:defaults.bzl", "jasmine_node_test")
+load("//tools:defaults2.bzl", "ts_project")
package(default_visibility = ["//visibility:public"])
-ts_library(
+ts_project(
name = "zone_base_setup_lib",
testonly = 1,
- srcs = ["zone_base_setup.ts"],
- deps = [
+ srcs = ["zone_base_setup.mts"],
+ interop_deps = [
"//packages/zone.js/lib",
"@npm//reflect-metadata",
],
)
-ts_library(
+ts_project(
name = "browser",
testonly = 1,
- srcs = ["browser_tests.init.ts"],
- deps = [
+ srcs = ["browser_tests.init.mts"],
+ interop_deps = [
":zone_base_setup_lib",
"//packages/compiler",
"//packages/core/testing",
@@ -26,11 +27,11 @@ ts_library(
],
)
-ts_library(
+ts_project(
name = "node",
testonly = 1,
- srcs = ["node_tests.init.ts"],
- deps = [
+ srcs = ["node_tests.init.mts"],
+ interop_deps = [
":zone_base_setup_lib",
"//packages/compiler",
"//packages/core/testing",
@@ -41,11 +42,11 @@ ts_library(
],
)
-ts_library(
+ts_project(
name = "node_no_angular",
testonly = 1,
- srcs = ["node_no_angular_tests.init.ts"],
- deps = [
+ srcs = ["node_no_angular_tests.init.mts"],
+ interop_deps = [
"//packages:types",
],
)
@@ -57,7 +58,7 @@ ts_library(
# of a potential regression.
jasmine_node_test(
name = "fail_test",
- srcs = ["fail.spec.js"],
+ srcs = ["fail.spec.mjs"],
# While we force the termination of the process with an exitCode of 55 in fail.spec.js. Jasmine force it to 4.
# see: https://github.com/jasmine/jasmine-npm/blob/eea8b26efe29176ecbb26ce3f1c4990f8bede685/lib/jasmine.js#L213
expected_exit_code = 4,
@@ -71,7 +72,7 @@ jasmine_node_test(
# of a potential regression.
jasmine_node_test(
name = "fail_bootstrap_test",
- srcs = ["fail.spec.js"],
+ srcs = ["fail.spec.mjs"],
bootstrap = ["//tools/testing:node"],
data = ["//packages:package_json"],
# While we force the termination of the process with an exitCode of 55 in fail.spec.js. Jasmine force it to 4.
diff --git a/tools/testing/browser_tests.init.ts b/tools/testing/browser_tests.init.mts
similarity index 95%
rename from tools/testing/browser_tests.init.ts
rename to tools/testing/browser_tests.init.mts
index 74c877737f3d..fa8b78577c85 100644
--- a/tools/testing/browser_tests.init.ts
+++ b/tools/testing/browser_tests.init.mts
@@ -7,7 +7,7 @@
*/
import 'zone.js/lib/browser/rollup-main';
-import './zone_base_setup';
+import './zone_base_setup.mjs';
import '@angular/compiler'; // For JIT mode. Must be in front of any other @angular/* imports.
import {TestBed} from '@angular/core/testing';
diff --git a/tools/testing/fail.spec.js b/tools/testing/fail.spec.mjs
similarity index 100%
rename from tools/testing/fail.spec.js
rename to tools/testing/fail.spec.mjs
diff --git a/tools/testing/node_no_angular_tests.init.ts b/tools/testing/node_no_angular_tests.init.mts
similarity index 100%
rename from tools/testing/node_no_angular_tests.init.ts
rename to tools/testing/node_no_angular_tests.init.mts
diff --git a/tools/testing/node_tests.init.ts b/tools/testing/node_tests.init.mts
similarity index 78%
rename from tools/testing/node_tests.init.ts
rename to tools/testing/node_tests.init.mts
index 5c8216d00e66..59854421a2af 100644
--- a/tools/testing/node_tests.init.ts
+++ b/tools/testing/node_tests.init.mts
@@ -7,7 +7,7 @@
*/
import 'zone.js/lib/node/rollup-main';
-import './zone_base_setup';
+import './zone_base_setup.mjs';
(global as any).isNode = true;
(global as any).isBrowser = false;
@@ -15,11 +15,8 @@ import './zone_base_setup';
import '@angular/compiler'; // For JIT mode. Must be in front of any other @angular/* imports.
// Init TestBed
import {TestBed} from '@angular/core/testing';
-import {
- ServerTestingModule,
- platformServerTesting,
-} from '@angular/platform-server/testing/src/server';
-import {DominoAdapter} from '@angular/platform-server/src/domino_adapter';
+import {ServerTestingModule, platformServerTesting} from '@angular/platform-server/testing';
+import {ɵDominoAdapter as DominoAdapter} from '@angular/platform-server';
import domino from '../../packages/platform-server/src/bundled-domino';
TestBed.initTestEnvironment(ServerTestingModule, platformServerTesting());
diff --git a/tools/testing/zone_base_setup.ts b/tools/testing/zone_base_setup.mts
similarity index 96%
rename from tools/testing/zone_base_setup.ts
rename to tools/testing/zone_base_setup.mts
index 7899b559d2dd..b1ee6ed49365 100644
--- a/tools/testing/zone_base_setup.ts
+++ b/tools/testing/zone_base_setup.mts
@@ -8,6 +8,8 @@
import 'reflect-metadata';
+import {} from 'zone.js';
+
import {patchLongStackTrace} from 'zone.js/lib/zone-spec/long-stack-trace';
import {patchTaskTracking} from 'zone.js/lib/zone-spec/task-tracking';
import {patchProxyZoneSpec} from 'zone.js/lib/zone-spec/proxy';
diff --git a/tools/tsconfig.json b/tools/tsconfig.json
index 875ddffe9a7b..819870461a41 100644
--- a/tools/tsconfig.json
+++ b/tools/tsconfig.json
@@ -5,8 +5,13 @@
"declaration": true,
"esModuleInterop": true,
"sourceMap": true,
- "module": "NodeNext",
- "moduleResolution": "nodenext",
- "types": ["node"]
+ "module": "esnext",
+ "moduleResolution": "node",
+ "types": ["node"],
+ "paths": {
+ "zone.js": ["../packages/zone.js/lib/zone"],
+ "zone.js/*": ["../packages/zone.js/*"],
+ "@angular/*": ["../packages/*/index"],
+ }
}
}