Skip to content

Commit ca5603b

Browse files
JoostKthePunderWoman
authored andcommitted
fix(localize): avoid imports into compiler-cli package (#45180)
The compiler-cli's declaration files are not necessarily compatible with web environments that use `@angular/localize`, and would inadvertently include `typescript` declaration files in any compilation unit that uses `@angular/localize` (which increases parsing time and memory usage during builds) using a default import that only type-checks when `allowSyntheticDefaultImports` is enabled. Fixes #45179 PR Close #45180
1 parent 8eb8288 commit ca5603b

File tree

6 files changed

+19
-3
lines changed

6 files changed

+19
-3
lines changed

integration/typings_test_ts44/include-all.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import * as core from '@angular/core';
2121
import * as coreTesting from '@angular/core/testing';
2222
import * as elements from '@angular/elements';
2323
import * as forms from '@angular/forms';
24+
import * as localize from '@angular/localize';
2425
import * as platformBrowser from '@angular/platform-browser';
2526
import * as platformBrowserDynamic from '@angular/platform-browser-dynamic';
2627
import * as platformBrowserDynamicTesting from '@angular/platform-browser-dynamic/testing';
@@ -51,6 +52,7 @@ export default {
5152
coreTesting,
5253
elements,
5354
forms,
55+
localize,
5456
platformBrowser,
5557
platformBrowserTesting,
5658
platformBrowserDynamic,

integration/typings_test_ts44/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"@angular/core": "file:../../dist/packages-dist/core",
1212
"@angular/elements": "file:../../dist/packages-dist/elements",
1313
"@angular/forms": "file:../../dist/packages-dist/forms",
14+
"@angular/localize": "file:../../dist/packages-dist/localize",
1415
"@angular/platform-browser": "file:../../dist/packages-dist/platform-browser",
1516
"@angular/platform-browser-dynamic": "file:../../dist/packages-dist/platform-browser-dynamic",
1617
"@angular/platform-server": "file:../../dist/packages-dist/platform-server",

integration/typings_test_ts45/include-all.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import * as core from '@angular/core';
2121
import * as coreTesting from '@angular/core/testing';
2222
import * as elements from '@angular/elements';
2323
import * as forms from '@angular/forms';
24+
import * as localize from '@angular/localize';
2425
import * as platformBrowser from '@angular/platform-browser';
2526
import * as platformBrowserDynamic from '@angular/platform-browser-dynamic';
2627
import * as platformBrowserDynamicTesting from '@angular/platform-browser-dynamic/testing';
@@ -51,6 +52,7 @@ export default {
5152
coreTesting,
5253
elements,
5354
forms,
55+
localize,
5456
platformBrowser,
5557
platformBrowserTesting,
5658
platformBrowserDynamic,

integration/typings_test_ts45/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"@angular/core": "file:../../dist/packages-dist/core",
1212
"@angular/elements": "file:../../dist/packages-dist/elements",
1313
"@angular/forms": "file:../../dist/packages-dist/forms",
14+
"@angular/localize": "file:../../dist/packages-dist/localize",
1415
"@angular/platform-browser": "file:../../dist/packages-dist/platform-browser",
1516
"@angular/platform-browser-dynamic": "file:../../dist/packages-dist/platform-browser-dynamic",
1617
"@angular/platform-server": "file:../../dist/packages-dist/platform-server",

packages/localize/src/utils/BUILD.bazel

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,5 @@ ts_library(
1313
module_name = "@angular/localize/src/utils",
1414
deps = [
1515
"//packages/compiler",
16-
"//packages/compiler-cli/private",
1716
],
1817
)

packages/localize/src/utils/src/messages.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88
import {computeMsgId} from '@angular/compiler';
9-
import {AbsoluteFsPath} from '@angular/compiler-cli/private/localize';
109

1110
import {BLOCK_MARKER, ID_SEPARATOR, LEGACY_ID_INDICATOR, MEANING_SEPARATOR} from './constants';
1211

@@ -39,6 +38,18 @@ export type TargetMessage = string;
3938
*/
4039
export type MessageId = string;
4140

41+
/**
42+
* Declares a copy of the `AbsoluteFsPath` branded type in `@angular/compiler-cli` to avoid an
43+
* import into `@angular/compiler-cli`. The compiler-cli's declaration files are not necessarily
44+
* compatible with web environments that use `@angular/localize`, and would inadvertently include
45+
* `typescript` declaration files in any compilation unit that uses `@angular/localize` (which
46+
* increases parsing time and memory usage during builds) using a default import that only
47+
* type-checks when `allowSyntheticDefaultImports` is enabled.
48+
*
49+
* @see https://github.com/angular/angular/issues/45179
50+
*/
51+
type AbsoluteFsPathLocalizeCopy = string&{_brand: 'AbsoluteFsPath'};
52+
4253
/**
4354
* The location of the message in the source file.
4455
*
@@ -47,7 +58,7 @@ export type MessageId = string;
4758
export interface SourceLocation {
4859
start: {line: number, column: number};
4960
end: {line: number, column: number};
50-
file: AbsoluteFsPath;
61+
file: AbsoluteFsPathLocalizeCopy;
5162
text?: string;
5263
}
5364

0 commit comments

Comments
 (0)