@angular/compiler-cli 20.2.0-rc.1 → 20.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@
4
4
 
5
5
  import {
6
6
  angularJitApplicationTransform
7
- } from "./chunk-NHQZ6PPY.js";
7
+ } from "./chunk-JY5R6NDM.js";
8
8
  import {
9
9
  AbsoluteModuleStrategy,
10
10
  ActivePerfRecorder,
@@ -92,7 +92,7 @@ import {
92
92
  toUnredirectedSourceFile,
93
93
  tryParseInitializerApi,
94
94
  untagAllTsFiles
95
- } from "./chunk-LAK42ZT4.js";
95
+ } from "./chunk-SDVA75LV.js";
96
96
  import {
97
97
  LogicalFileSystem,
98
98
  absoluteFrom,
@@ -12,7 +12,7 @@ import {
12
12
  formatDiagnostics,
13
13
  performCompilation,
14
14
  readConfiguration
15
- } from "./chunk-JE3EXK56.js";
15
+ } from "./chunk-6E57N6DK.js";
16
16
 
17
17
  // packages/compiler-cli/src/main.js
18
18
  import ts2 from "typescript";
@@ -455,7 +455,7 @@ import { compileDirectiveFromMetadata, makeBindingParser, ParseLocation, ParseSo
455
455
  // packages/compiler-cli/linker/src/file_linker/partial_linkers/util.js
456
456
  import { createMayBeForwardRefExpression, outputAst as o2 } from "@angular/compiler";
457
457
  import semver from "semver";
458
- var PLACEHOLDER_VERSION = "20.2.0-rc.1";
458
+ var PLACEHOLDER_VERSION = "20.2.1";
459
459
  function wrapReference(wrapped) {
460
460
  return { value: wrapped, type: wrapped };
461
461
  }
@@ -5,7 +5,8 @@
5
5
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
6
6
  get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
7
7
  }) : x)(function(x) {
8
- if (typeof require !== "undefined") return require.apply(this, arguments);
8
+ if (typeof require !== "undefined")
9
+ return require.apply(this, arguments);
9
10
  throw Error('Dynamic require of "' + x + '" is not supported');
10
11
  });
11
12
 
@@ -16,7 +16,7 @@ import {
16
16
  tryParseSignalInputMapping,
17
17
  tryParseSignalModelMapping,
18
18
  tryParseSignalQueryFromInitializer
19
- } from "./chunk-LAK42ZT4.js";
19
+ } from "./chunk-SDVA75LV.js";
20
20
 
21
21
  // packages/compiler-cli/src/ngtsc/transform/jit/src/downlevel_decorators_transform.js
22
22
  import ts from "typescript";
@@ -7557,7 +7557,7 @@ var SemanticDepGraph = class {
7557
7557
  files = /* @__PURE__ */ new Map();
7558
7558
  // Note: the explicit type annotation is used to work around a CI failure on Windows:
7559
7559
  // error TS2742: The inferred type of 'symbolByDecl' cannot be named without a reference to
7560
- // '../../../../../../../external/angular/node_modules/typescript/lib/typescript'. This is likely
7560
+ // '../../../../../../../external/_main/node_modules/typescript/lib/typescript'. This is likely
7561
7561
  // not portable. A type annotation is necessary.
7562
7562
  symbolByDecl = /* @__PURE__ */ new Map();
7563
7563
  /**
@@ -10172,6 +10172,21 @@ function isDirectiveDeclaration(node) {
10172
10172
  const sourceFile = node.getSourceFile();
10173
10173
  return (ts45.isTypeNode(node) || ts45.isIdentifier(node)) && ts45.isVariableDeclaration(node.parent) && hasExpressionIdentifier(sourceFile, node, ExpressionIdentifier.DIRECTIVE);
10174
10174
  }
10175
+ function isSymbolAliasOf(firstSymbol, lastSymbol, typeChecker) {
10176
+ let currentSymbol = lastSymbol;
10177
+ const seenSymbol = /* @__PURE__ */ new Set();
10178
+ while (firstSymbol !== currentSymbol && currentSymbol !== void 0 && currentSymbol.flags & ts45.SymbolFlags.Alias) {
10179
+ if (seenSymbol.has(currentSymbol)) {
10180
+ break;
10181
+ }
10182
+ seenSymbol.add(currentSymbol);
10183
+ currentSymbol = typeChecker.getImmediateAliasedSymbol(currentSymbol);
10184
+ if (currentSymbol === firstSymbol) {
10185
+ return true;
10186
+ }
10187
+ }
10188
+ return false;
10189
+ }
10175
10190
 
10176
10191
  // packages/compiler-cli/src/ngtsc/typecheck/src/checker.js
10177
10192
  import ts64 from "typescript";
@@ -11064,7 +11079,8 @@ var Chunk = class _Chunk {
11064
11079
  this.content = originalBefore;
11065
11080
  }
11066
11081
  newChunk.next = this.next;
11067
- if (newChunk.next) newChunk.next.previous = newChunk;
11082
+ if (newChunk.next)
11083
+ newChunk.next.previous = newChunk;
11068
11084
  newChunk.previous = this;
11069
11085
  this.next = newChunk;
11070
11086
  return newChunk;
@@ -11074,7 +11090,8 @@ var Chunk = class _Chunk {
11074
11090
  }
11075
11091
  trimEnd(rx) {
11076
11092
  this.outro = this.outro.replace(rx, "");
11077
- if (this.outro.length) return true;
11093
+ if (this.outro.length)
11094
+ return true;
11078
11095
  const trimmed = this.content.replace(rx, "");
11079
11096
  if (trimmed.length) {
11080
11097
  if (trimmed !== this.content) {
@@ -11087,12 +11104,14 @@ var Chunk = class _Chunk {
11087
11104
  } else {
11088
11105
  this.edit("", void 0, true);
11089
11106
  this.intro = this.intro.replace(rx, "");
11090
- if (this.intro.length) return true;
11107
+ if (this.intro.length)
11108
+ return true;
11091
11109
  }
11092
11110
  }
11093
11111
  trimStart(rx) {
11094
11112
  this.intro = this.intro.replace(rx, "");
11095
- if (this.intro.length) return true;
11113
+ if (this.intro.length)
11114
+ return true;
11096
11115
  const trimmed = this.content.replace(rx, "");
11097
11116
  if (trimmed.length) {
11098
11117
  if (trimmed !== this.content) {
@@ -11106,7 +11125,8 @@ var Chunk = class _Chunk {
11106
11125
  } else {
11107
11126
  this.edit("", void 0, true);
11108
11127
  this.outro = this.outro.replace(rx, "");
11109
- if (this.outro.length) return true;
11128
+ if (this.outro.length)
11129
+ return true;
11110
11130
  }
11111
11131
  }
11112
11132
  };
@@ -11170,7 +11190,8 @@ function getRelativePath(from, to) {
11170
11190
  }
11171
11191
  if (fromParts.length) {
11172
11192
  let i = fromParts.length;
11173
- while (i--) fromParts[i] = "..";
11193
+ while (i--)
11194
+ fromParts[i] = "..";
11174
11195
  }
11175
11196
  return fromParts.concat(toParts).join("/");
11176
11197
  }
@@ -11279,7 +11300,8 @@ var Mappings = class {
11279
11300
  this.pending = null;
11280
11301
  }
11281
11302
  advance(str) {
11282
- if (!str) return;
11303
+ if (!str)
11304
+ return;
11283
11305
  const lines = str.split("\n");
11284
11306
  if (lines.length > 1) {
11285
11307
  for (let i = 0; i < lines.length - 1; i++) {
@@ -11324,13 +11346,15 @@ var MagicString = class _MagicString {
11324
11346
  this.sourcemapLocations.add(char);
11325
11347
  }
11326
11348
  append(content) {
11327
- if (typeof content !== "string") throw new TypeError("outro content must be a string");
11349
+ if (typeof content !== "string")
11350
+ throw new TypeError("outro content must be a string");
11328
11351
  this.outro += content;
11329
11352
  return this;
11330
11353
  }
11331
11354
  appendLeft(index, content) {
11332
11355
  index = index + this.offset;
11333
- if (typeof content !== "string") throw new TypeError("inserted content must be a string");
11356
+ if (typeof content !== "string")
11357
+ throw new TypeError("inserted content must be a string");
11334
11358
  this._split(index);
11335
11359
  const chunk = this.byEnd[index];
11336
11360
  if (chunk) {
@@ -11342,7 +11366,8 @@ var MagicString = class _MagicString {
11342
11366
  }
11343
11367
  appendRight(index, content) {
11344
11368
  index = index + this.offset;
11345
- if (typeof content !== "string") throw new TypeError("inserted content must be a string");
11369
+ if (typeof content !== "string")
11370
+ throw new TypeError("inserted content must be a string");
11346
11371
  this._split(index);
11347
11372
  const chunk = this.byStart[index];
11348
11373
  if (chunk) {
@@ -11388,7 +11413,8 @@ var MagicString = class _MagicString {
11388
11413
  }
11389
11414
  this.firstChunk.eachNext((chunk) => {
11390
11415
  const loc = locate(chunk.start);
11391
- if (chunk.intro.length) mappings.advance(chunk.intro);
11416
+ if (chunk.intro.length)
11417
+ mappings.advance(chunk.intro);
11392
11418
  if (chunk.edited) {
11393
11419
  mappings.addEdit(
11394
11420
  sourceIndex,
@@ -11399,7 +11425,8 @@ var MagicString = class _MagicString {
11399
11425
  } else {
11400
11426
  mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);
11401
11427
  }
11402
- if (chunk.outro.length) mappings.advance(chunk.outro);
11428
+ if (chunk.outro.length)
11429
+ mappings.advance(chunk.outro);
11403
11430
  });
11404
11431
  return {
11405
11432
  file: options.file ? options.file.split(/[/\\]/).pop() : void 0,
@@ -11438,7 +11465,8 @@ var MagicString = class _MagicString {
11438
11465
  this._ensureindentStr();
11439
11466
  indentStr = this.indentStr || " ";
11440
11467
  }
11441
- if (indentStr === "") return this;
11468
+ if (indentStr === "")
11469
+ return this;
11442
11470
  options = options || {};
11443
11471
  const isExcluded = {};
11444
11472
  if (options.exclude) {
@@ -11451,7 +11479,8 @@ var MagicString = class _MagicString {
11451
11479
  }
11452
11480
  let shouldIndentNextCharacter = options.indentStart !== false;
11453
11481
  const replacer = (match) => {
11454
- if (shouldIndentNextCharacter) return `${indentStr}${match}`;
11482
+ if (shouldIndentNextCharacter)
11483
+ return `${indentStr}${match}`;
11455
11484
  shouldIndentNextCharacter = true;
11456
11485
  return match;
11457
11486
  };
@@ -11521,7 +11550,8 @@ var MagicString = class _MagicString {
11521
11550
  start = start + this.offset;
11522
11551
  end = end + this.offset;
11523
11552
  index = index + this.offset;
11524
- if (index >= start && index <= end) throw new Error("Cannot move a selection inside itself");
11553
+ if (index >= start && index <= end)
11554
+ throw new Error("Cannot move a selection inside itself");
11525
11555
  this._split(start);
11526
11556
  this._split(end);
11527
11557
  this._split(index);
@@ -11530,21 +11560,29 @@ var MagicString = class _MagicString {
11530
11560
  const oldLeft = first.previous;
11531
11561
  const oldRight = last.next;
11532
11562
  const newRight = this.byStart[index];
11533
- if (!newRight && last === this.lastChunk) return this;
11563
+ if (!newRight && last === this.lastChunk)
11564
+ return this;
11534
11565
  const newLeft = newRight ? newRight.previous : this.lastChunk;
11535
- if (oldLeft) oldLeft.next = oldRight;
11536
- if (oldRight) oldRight.previous = oldLeft;
11537
- if (newLeft) newLeft.next = first;
11538
- if (newRight) newRight.previous = last;
11539
- if (!first.previous) this.firstChunk = last.next;
11566
+ if (oldLeft)
11567
+ oldLeft.next = oldRight;
11568
+ if (oldRight)
11569
+ oldRight.previous = oldLeft;
11570
+ if (newLeft)
11571
+ newLeft.next = first;
11572
+ if (newRight)
11573
+ newRight.previous = last;
11574
+ if (!first.previous)
11575
+ this.firstChunk = last.next;
11540
11576
  if (!last.next) {
11541
11577
  this.lastChunk = first.previous;
11542
11578
  this.lastChunk.next = null;
11543
11579
  }
11544
11580
  first.previous = newLeft;
11545
11581
  last.next = newRight || null;
11546
- if (!newLeft) this.firstChunk = first;
11547
- if (!newRight) this.lastChunk = last;
11582
+ if (!newLeft)
11583
+ this.firstChunk = first;
11584
+ if (!newRight)
11585
+ this.lastChunk = last;
11548
11586
  return this;
11549
11587
  }
11550
11588
  overwrite(start, end, content, options) {
@@ -11554,12 +11592,16 @@ var MagicString = class _MagicString {
11554
11592
  update(start, end, content, options) {
11555
11593
  start = start + this.offset;
11556
11594
  end = end + this.offset;
11557
- if (typeof content !== "string") throw new TypeError("replacement content must be a string");
11595
+ if (typeof content !== "string")
11596
+ throw new TypeError("replacement content must be a string");
11558
11597
  if (this.original.length !== 0) {
11559
- while (start < 0) start += this.original.length;
11560
- while (end < 0) end += this.original.length;
11598
+ while (start < 0)
11599
+ start += this.original.length;
11600
+ while (end < 0)
11601
+ end += this.original.length;
11561
11602
  }
11562
- if (end > this.original.length) throw new Error("end is out of bounds");
11603
+ if (end > this.original.length)
11604
+ throw new Error("end is out of bounds");
11563
11605
  if (start === end)
11564
11606
  throw new Error(
11565
11607
  "Cannot overwrite a zero-length range \u2013 use appendLeft or prependRight instead"
@@ -11605,13 +11647,15 @@ var MagicString = class _MagicString {
11605
11647
  return this;
11606
11648
  }
11607
11649
  prepend(content) {
11608
- if (typeof content !== "string") throw new TypeError("outro content must be a string");
11650
+ if (typeof content !== "string")
11651
+ throw new TypeError("outro content must be a string");
11609
11652
  this.intro = content + this.intro;
11610
11653
  return this;
11611
11654
  }
11612
11655
  prependLeft(index, content) {
11613
11656
  index = index + this.offset;
11614
- if (typeof content !== "string") throw new TypeError("inserted content must be a string");
11657
+ if (typeof content !== "string")
11658
+ throw new TypeError("inserted content must be a string");
11615
11659
  this._split(index);
11616
11660
  const chunk = this.byEnd[index];
11617
11661
  if (chunk) {
@@ -11623,7 +11667,8 @@ var MagicString = class _MagicString {
11623
11667
  }
11624
11668
  prependRight(index, content) {
11625
11669
  index = index + this.offset;
11626
- if (typeof content !== "string") throw new TypeError("inserted content must be a string");
11670
+ if (typeof content !== "string")
11671
+ throw new TypeError("inserted content must be a string");
11627
11672
  this._split(index);
11628
11673
  const chunk = this.byStart[index];
11629
11674
  if (chunk) {
@@ -11637,12 +11682,17 @@ var MagicString = class _MagicString {
11637
11682
  start = start + this.offset;
11638
11683
  end = end + this.offset;
11639
11684
  if (this.original.length !== 0) {
11640
- while (start < 0) start += this.original.length;
11641
- while (end < 0) end += this.original.length;
11685
+ while (start < 0)
11686
+ start += this.original.length;
11687
+ while (end < 0)
11688
+ end += this.original.length;
11642
11689
  }
11643
- if (start === end) return this;
11644
- if (start < 0 || end > this.original.length) throw new Error("Character is out of bounds");
11645
- if (start > end) throw new Error("end must be greater than start");
11690
+ if (start === end)
11691
+ return this;
11692
+ if (start < 0 || end > this.original.length)
11693
+ throw new Error("Character is out of bounds");
11694
+ if (start > end)
11695
+ throw new Error("end must be greater than start");
11646
11696
  this._split(start);
11647
11697
  this._split(end);
11648
11698
  let chunk = this.byStart[start];
@@ -11658,12 +11708,17 @@ var MagicString = class _MagicString {
11658
11708
  start = start + this.offset;
11659
11709
  end = end + this.offset;
11660
11710
  if (this.original.length !== 0) {
11661
- while (start < 0) start += this.original.length;
11662
- while (end < 0) end += this.original.length;
11711
+ while (start < 0)
11712
+ start += this.original.length;
11713
+ while (end < 0)
11714
+ end += this.original.length;
11663
11715
  }
11664
- if (start === end) return this;
11665
- if (start < 0 || end > this.original.length) throw new Error("Character is out of bounds");
11666
- if (start > end) throw new Error("end must be greater than start");
11716
+ if (start === end)
11717
+ return this;
11718
+ if (start < 0 || end > this.original.length)
11719
+ throw new Error("Character is out of bounds");
11720
+ if (start > end)
11721
+ throw new Error("end must be greater than start");
11667
11722
  this._split(start);
11668
11723
  this._split(end);
11669
11724
  let chunk = this.byStart[start];
@@ -11674,48 +11729,60 @@ var MagicString = class _MagicString {
11674
11729
  return this;
11675
11730
  }
11676
11731
  lastChar() {
11677
- if (this.outro.length) return this.outro[this.outro.length - 1];
11732
+ if (this.outro.length)
11733
+ return this.outro[this.outro.length - 1];
11678
11734
  let chunk = this.lastChunk;
11679
11735
  do {
11680
- if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];
11681
- if (chunk.content.length) return chunk.content[chunk.content.length - 1];
11682
- if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];
11736
+ if (chunk.outro.length)
11737
+ return chunk.outro[chunk.outro.length - 1];
11738
+ if (chunk.content.length)
11739
+ return chunk.content[chunk.content.length - 1];
11740
+ if (chunk.intro.length)
11741
+ return chunk.intro[chunk.intro.length - 1];
11683
11742
  } while (chunk = chunk.previous);
11684
- if (this.intro.length) return this.intro[this.intro.length - 1];
11743
+ if (this.intro.length)
11744
+ return this.intro[this.intro.length - 1];
11685
11745
  return "";
11686
11746
  }
11687
11747
  lastLine() {
11688
11748
  let lineIndex = this.outro.lastIndexOf(n);
11689
- if (lineIndex !== -1) return this.outro.substr(lineIndex + 1);
11749
+ if (lineIndex !== -1)
11750
+ return this.outro.substr(lineIndex + 1);
11690
11751
  let lineStr = this.outro;
11691
11752
  let chunk = this.lastChunk;
11692
11753
  do {
11693
11754
  if (chunk.outro.length > 0) {
11694
11755
  lineIndex = chunk.outro.lastIndexOf(n);
11695
- if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;
11756
+ if (lineIndex !== -1)
11757
+ return chunk.outro.substr(lineIndex + 1) + lineStr;
11696
11758
  lineStr = chunk.outro + lineStr;
11697
11759
  }
11698
11760
  if (chunk.content.length > 0) {
11699
11761
  lineIndex = chunk.content.lastIndexOf(n);
11700
- if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;
11762
+ if (lineIndex !== -1)
11763
+ return chunk.content.substr(lineIndex + 1) + lineStr;
11701
11764
  lineStr = chunk.content + lineStr;
11702
11765
  }
11703
11766
  if (chunk.intro.length > 0) {
11704
11767
  lineIndex = chunk.intro.lastIndexOf(n);
11705
- if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;
11768
+ if (lineIndex !== -1)
11769
+ return chunk.intro.substr(lineIndex + 1) + lineStr;
11706
11770
  lineStr = chunk.intro + lineStr;
11707
11771
  }
11708
11772
  } while (chunk = chunk.previous);
11709
11773
  lineIndex = this.intro.lastIndexOf(n);
11710
- if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;
11774
+ if (lineIndex !== -1)
11775
+ return this.intro.substr(lineIndex + 1) + lineStr;
11711
11776
  return this.intro + lineStr;
11712
11777
  }
11713
11778
  slice(start = 0, end = this.original.length - this.offset) {
11714
11779
  start = start + this.offset;
11715
11780
  end = end + this.offset;
11716
11781
  if (this.original.length !== 0) {
11717
- while (start < 0) start += this.original.length;
11718
- while (end < 0) end += this.original.length;
11782
+ while (start < 0)
11783
+ start += this.original.length;
11784
+ while (end < 0)
11785
+ end += this.original.length;
11719
11786
  }
11720
11787
  let result = "";
11721
11788
  let chunk = this.firstChunk;
@@ -11756,11 +11823,13 @@ var MagicString = class _MagicString {
11756
11823
  return clone;
11757
11824
  }
11758
11825
  _split(index) {
11759
- if (this.byStart[index] || this.byEnd[index]) return;
11826
+ if (this.byStart[index] || this.byEnd[index])
11827
+ return;
11760
11828
  let chunk = this.lastSearchedChunk;
11761
11829
  const searchForward = index > chunk.end;
11762
11830
  while (chunk) {
11763
- if (chunk.contains(index)) return this._splitChunk(chunk, index);
11831
+ if (chunk.contains(index))
11832
+ return this._splitChunk(chunk, index);
11764
11833
  chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];
11765
11834
  }
11766
11835
  }
@@ -11775,7 +11844,8 @@ var MagicString = class _MagicString {
11775
11844
  this.byEnd[index] = chunk;
11776
11845
  this.byStart[index] = newChunk;
11777
11846
  this.byEnd[newChunk.end] = newChunk;
11778
- if (chunk === this.lastChunk) this.lastChunk = newChunk;
11847
+ if (chunk === this.lastChunk)
11848
+ this.lastChunk = newChunk;
11779
11849
  this.lastSearchedChunk = chunk;
11780
11850
  return true;
11781
11851
  }
@@ -11813,7 +11883,8 @@ var MagicString = class _MagicString {
11813
11883
  trimEndAborted(charType) {
11814
11884
  const rx = new RegExp((charType || "\\s") + "+$");
11815
11885
  this.outro = this.outro.replace(rx, "");
11816
- if (this.outro.length) return true;
11886
+ if (this.outro.length)
11887
+ return true;
11817
11888
  let chunk = this.lastChunk;
11818
11889
  do {
11819
11890
  const end = chunk.end;
@@ -11826,7 +11897,8 @@ var MagicString = class _MagicString {
11826
11897
  this.byStart[chunk.next.start] = chunk.next;
11827
11898
  this.byEnd[chunk.next.end] = chunk.next;
11828
11899
  }
11829
- if (aborted) return true;
11900
+ if (aborted)
11901
+ return true;
11830
11902
  chunk = chunk.previous;
11831
11903
  } while (chunk);
11832
11904
  return false;
@@ -11838,18 +11910,21 @@ var MagicString = class _MagicString {
11838
11910
  trimStartAborted(charType) {
11839
11911
  const rx = new RegExp("^" + (charType || "\\s") + "+");
11840
11912
  this.intro = this.intro.replace(rx, "");
11841
- if (this.intro.length) return true;
11913
+ if (this.intro.length)
11914
+ return true;
11842
11915
  let chunk = this.firstChunk;
11843
11916
  do {
11844
11917
  const end = chunk.end;
11845
11918
  const aborted = chunk.trimStart(rx);
11846
11919
  if (chunk.end !== end) {
11847
- if (chunk === this.lastChunk) this.lastChunk = chunk.next;
11920
+ if (chunk === this.lastChunk)
11921
+ this.lastChunk = chunk.next;
11848
11922
  this.byEnd[chunk.end] = chunk;
11849
11923
  this.byStart[chunk.next.start] = chunk.next;
11850
11924
  this.byEnd[chunk.next.end] = chunk.next;
11851
11925
  }
11852
- if (aborted) return true;
11926
+ if (aborted)
11927
+ return true;
11853
11928
  chunk = chunk.next;
11854
11929
  } while (chunk);
11855
11930
  return false;
@@ -11865,10 +11940,13 @@ var MagicString = class _MagicString {
11865
11940
  function getReplacement(match, str) {
11866
11941
  if (typeof replacement === "string") {
11867
11942
  return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => {
11868
- if (i === "$") return "$";
11869
- if (i === "&") return match[0];
11943
+ if (i === "$")
11944
+ return "$";
11945
+ if (i === "&")
11946
+ return match[0];
11870
11947
  const num = +i;
11871
- if (num < match.length) return match[+i];
11948
+ if (num < match.length)
11949
+ return match[+i];
11872
11950
  return `$${i}`;
11873
11951
  });
11874
11952
  } else {
@@ -11923,7 +12001,8 @@ var MagicString = class _MagicString {
11923
12001
  const stringLength = string.length;
11924
12002
  for (let index = original.indexOf(string); index !== -1; index = original.indexOf(string, index + stringLength)) {
11925
12003
  const previous = original.slice(index, index + stringLength);
11926
- if (previous !== replacement) this.overwrite(index, index + stringLength, replacement);
12004
+ if (previous !== replacement)
12005
+ this.overwrite(index, index + stringLength, replacement);
11927
12006
  }
11928
12007
  return this;
11929
12008
  }
@@ -17457,11 +17536,11 @@ var TemplateTypeCheckerImpl = class {
17457
17536
  }
17458
17537
  for (const directiveDecl of directiveDecls) {
17459
17538
  const cachedCompletionEntryInfos = resultingDirectives.get(directiveDecl.ref.node)?.tsCompletionEntryInfos ?? [];
17460
- cachedCompletionEntryInfos.push({
17539
+ appendOrReplaceTsEntryInfo(cachedCompletionEntryInfos, {
17461
17540
  tsCompletionEntryData: data,
17462
17541
  tsCompletionEntrySymbolFileName: symbolFileName,
17463
17542
  tsCompletionEntrySymbolName: symbolName
17464
- });
17543
+ }, this.programDriver.getProgram());
17465
17544
  if (resultingDirectives.has(directiveDecl.ref.node)) {
17466
17545
  const directiveInfo = resultingDirectives.get(directiveDecl.ref.node);
17467
17546
  resultingDirectives.set(directiveDecl.ref.node, {
@@ -17612,29 +17691,30 @@ var TemplateTypeCheckerImpl = class {
17612
17691
  return imports;
17613
17692
  }
17614
17693
  let highestImportPriority = -1;
17615
- const collectImports = (emit, moduleSpecifier) => {
17694
+ const collectImports = (emit, moduleSpecifierDetail) => {
17616
17695
  if (emit === null) {
17617
17696
  return;
17618
17697
  }
17619
17698
  imports.push({
17620
17699
  ...emit,
17621
- moduleSpecifier: moduleSpecifier ?? emit.moduleSpecifier
17700
+ moduleSpecifier: moduleSpecifierDetail?.moduleSpecifier ?? emit.moduleSpecifier,
17701
+ symbolName: moduleSpecifierDetail?.exportName ?? emit.symbolName
17622
17702
  });
17623
- if (moduleSpecifier !== void 0 && highestImportPriority === -1) {
17703
+ if (moduleSpecifierDetail !== null && highestImportPriority === -1) {
17624
17704
  highestImportPriority = imports.length - 1;
17625
17705
  }
17626
17706
  };
17627
17707
  if (meta.isStandalone || importMode === PotentialImportMode.ForceDirect) {
17628
17708
  const emitted = this.emit(PotentialImportKind.Standalone, toImport, inContext);
17629
- const moduleSpecifier = potentialDirectiveModuleSpecifierResolver?.resolve(toImport, inContext);
17630
- collectImports(emitted, moduleSpecifier);
17709
+ const moduleSpecifierDetail = potentialDirectiveModuleSpecifierResolver?.resolve(toImport, inContext) ?? null;
17710
+ collectImports(emitted, moduleSpecifierDetail);
17631
17711
  }
17632
17712
  const exportingNgModules = this.ngModuleIndex.getNgModulesExporting(meta.ref.node);
17633
17713
  if (exportingNgModules !== null) {
17634
17714
  for (const exporter of exportingNgModules) {
17635
17715
  const emittedRef = this.emit(PotentialImportKind.NgModule, exporter, inContext);
17636
- const moduleSpecifier = potentialDirectiveModuleSpecifierResolver?.resolve(exporter, inContext);
17637
- collectImports(emittedRef, moduleSpecifier);
17716
+ const moduleSpecifierDetail = potentialDirectiveModuleSpecifierResolver?.resolve(exporter, inContext) ?? null;
17717
+ collectImports(emittedRef, moduleSpecifierDetail);
17638
17718
  }
17639
17719
  }
17640
17720
  if (highestImportPriority > 0) {
@@ -17905,6 +17985,55 @@ function getTheElementTagDeprecatedSuggestionDiagnostics(shimPath, program, file
17905
17985
  function isDeprecatedDiagnostics(diag) {
17906
17986
  return diag.reportsDeprecated !== void 0;
17907
17987
  }
17988
+ function appendOrReplaceTsEntryInfo(tsEntryInfos, newTsEntryInfo, program) {
17989
+ const typeChecker = program.getTypeChecker();
17990
+ const newTsEntryInfoSymbol = getSymbolFromTsEntryInfo(newTsEntryInfo, program);
17991
+ if (newTsEntryInfoSymbol === null) {
17992
+ return;
17993
+ }
17994
+ const matchedEntryIndex = tsEntryInfos.findIndex((currentTsEntryInfo) => {
17995
+ const currentTsEntrySymbol = getSymbolFromTsEntryInfo(currentTsEntryInfo, program);
17996
+ if (currentTsEntrySymbol === null) {
17997
+ return false;
17998
+ }
17999
+ return isSymbolTypeMatch(currentTsEntrySymbol, newTsEntryInfoSymbol, typeChecker);
18000
+ });
18001
+ if (matchedEntryIndex === -1) {
18002
+ tsEntryInfos.push(newTsEntryInfo);
18003
+ return;
18004
+ }
18005
+ const matchedEntry = tsEntryInfos[matchedEntryIndex];
18006
+ const matchedEntrySymbol = getSymbolFromTsEntryInfo(matchedEntry, program);
18007
+ if (matchedEntrySymbol === null) {
18008
+ return;
18009
+ }
18010
+ if (isSymbolAliasOf(matchedEntrySymbol, newTsEntryInfoSymbol, typeChecker)) {
18011
+ tsEntryInfos[matchedEntryIndex] = newTsEntryInfo;
18012
+ return;
18013
+ }
18014
+ return;
18015
+ }
18016
+ function getSymbolFromTsEntryInfo(tsInfo, program) {
18017
+ const typeChecker = program.getTypeChecker();
18018
+ const sf = program.getSourceFile(tsInfo.tsCompletionEntrySymbolFileName);
18019
+ if (sf === void 0) {
18020
+ return null;
18021
+ }
18022
+ const sfSymbol = typeChecker.getSymbolAtLocation(sf);
18023
+ if (sfSymbol === void 0) {
18024
+ return null;
18025
+ }
18026
+ return typeChecker.tryGetMemberInModuleExports(tsInfo.tsCompletionEntrySymbolName, sfSymbol) ?? null;
18027
+ }
18028
+ function getFirstTypeDeclarationOfSymbol(symbol, typeChecker) {
18029
+ const type = typeChecker.getTypeOfSymbol(symbol);
18030
+ return type.getSymbol()?.declarations?.[0];
18031
+ }
18032
+ function isSymbolTypeMatch(first, last, typeChecker) {
18033
+ const firstTypeNode = getFirstTypeDeclarationOfSymbol(first, typeChecker);
18034
+ const lastTypeNode = getFirstTypeDeclarationOfSymbol(last, typeChecker);
18035
+ return firstTypeNode === lastTypeNode && firstTypeNode !== void 0;
18036
+ }
17908
18037
 
17909
18038
  // packages/compiler-cli/src/ngtsc/annotations/directive/src/handler.js
17910
18039
  var FIELD_DECORATORS = [
@@ -19673,7 +19802,7 @@ var PotentialTopLevelReadsVisitor = class extends o3.RecursiveAstVisitor {
19673
19802
  if (ts70.isCallExpression(parent)) {
19674
19803
  return parent.expression === node || parent.arguments.includes(node);
19675
19804
  }
19676
- if (ts70.isExpressionStatement(parent) || ts70.isPropertyAccessExpression(parent) || ts70.isComputedPropertyName(parent) || ts70.isTemplateSpan(parent) || ts70.isSpreadAssignment(parent) || ts70.isSpreadElement(parent) || ts70.isAwaitExpression(parent) || ts70.isNonNullExpression(parent) || ts70.isIfStatement(parent) || ts70.isDoStatement(parent) || ts70.isWhileStatement(parent) || ts70.isSwitchStatement(parent) || ts70.isCaseClause(parent) || ts70.isThrowStatement(parent) || ts70.isNewExpression(parent)) {
19805
+ if (ts70.isExpressionStatement(parent) || ts70.isPropertyAccessExpression(parent) || ts70.isComputedPropertyName(parent) || ts70.isTemplateSpan(parent) || ts70.isSpreadAssignment(parent) || ts70.isSpreadElement(parent) || ts70.isAwaitExpression(parent) || ts70.isNonNullExpression(parent) || ts70.isIfStatement(parent) || ts70.isDoStatement(parent) || ts70.isWhileStatement(parent) || ts70.isSwitchStatement(parent) || ts70.isCaseClause(parent) || ts70.isThrowStatement(parent) || ts70.isNewExpression(parent) || ts70.isExpressionWithTypeArguments(parent)) {
19677
19806
  return parent.expression === node;
19678
19807
  }
19679
19808
  if (ts70.isArrayLiteralExpression(parent)) {
@@ -4,7 +4,7 @@
4
4
 
5
5
  import {
6
6
  __require
7
- } from "./chunk-DWRM7PIK.js";
7
+ } from "./chunk-G7GFT6BU.js";
8
8
 
9
9
  // packages/compiler-cli/src/ngtsc/file_system/src/node_js_file_system.js
10
10
  import fs from "fs";
package/bundles/index.js CHANGED
@@ -28,7 +28,7 @@ import {
28
28
  isTsDiagnostic,
29
29
  performCompilation,
30
30
  readConfiguration
31
- } from "./chunk-JE3EXK56.js";
31
+ } from "./chunk-6E57N6DK.js";
32
32
  import {
33
33
  ConsoleLogger,
34
34
  LogLevel
@@ -37,7 +37,7 @@ import {
37
37
  angularJitApplicationTransform,
38
38
  getDownlevelDecoratorsTransform,
39
39
  getInitializerApiJitTransform
40
- } from "./chunk-NHQZ6PPY.js";
40
+ } from "./chunk-JY5R6NDM.js";
41
41
  import {
42
42
  ActivePerfRecorder,
43
43
  ErrorCode,
@@ -46,7 +46,7 @@ import {
46
46
  TsCreateProgramDriver,
47
47
  isLocalCompilationDiagnostics,
48
48
  ngErrorCode
49
- } from "./chunk-LAK42ZT4.js";
49
+ } from "./chunk-SDVA75LV.js";
50
50
  import "./chunk-I2BHWRAU.js";
51
51
  import {
52
52
  InvalidFileSystem,
@@ -72,12 +72,12 @@ import {
72
72
  } from "./chunk-GWZQLAGK.js";
73
73
  import {
74
74
  NodeJSFileSystem
75
- } from "./chunk-SZY7NM6F.js";
76
- import "./chunk-DWRM7PIK.js";
75
+ } from "./chunk-XYYEESKY.js";
76
+ import "./chunk-G7GFT6BU.js";
77
77
 
78
78
  // packages/compiler-cli/src/version.js
79
79
  import { Version } from "@angular/compiler";
80
- var VERSION = new Version("20.2.0-rc.1");
80
+ var VERSION = new Version("20.2.1");
81
81
 
82
82
  // packages/compiler-cli/private/tooling.js
83
83
  var GLOBAL_DEFS_FOR_TERSER = {
@@ -17,8 +17,8 @@ import "../../chunk-HYJ2H3FU.js";
17
17
  import "../../chunk-I2BHWRAU.js";
18
18
  import {
19
19
  NodeJSFileSystem
20
- } from "../../chunk-SZY7NM6F.js";
21
- import "../../chunk-DWRM7PIK.js";
20
+ } from "../../chunk-XYYEESKY.js";
21
+ import "../../chunk-G7GFT6BU.js";
22
22
 
23
23
  // packages/compiler-cli/linker/babel/src/es2015_linker_plugin.js
24
24
  import { types as t4 } from "@babel/core";
@@ -13,7 +13,7 @@ import {
13
13
  } from "../chunk-BPDNYZBC.js";
14
14
  import "../chunk-HYJ2H3FU.js";
15
15
  import "../chunk-I2BHWRAU.js";
16
- import "../chunk-DWRM7PIK.js";
16
+ import "../chunk-G7GFT6BU.js";
17
17
  export {
18
18
  DEFAULT_LINKER_OPTIONS,
19
19
  FatalLinkerError,
@@ -34,8 +34,8 @@ import {
34
34
  } from "../chunk-GWZQLAGK.js";
35
35
  import {
36
36
  NodeJSFileSystem
37
- } from "../chunk-SZY7NM6F.js";
38
- import "../chunk-DWRM7PIK.js";
37
+ } from "../chunk-XYYEESKY.js";
38
+ import "../chunk-G7GFT6BU.js";
39
39
  export {
40
40
  ConsoleLogger,
41
41
  InvalidFileSystem,
@@ -13,11 +13,11 @@ import {
13
13
  TypeScriptReflectionHost,
14
14
  createForwardRefResolver,
15
15
  reflectObjectLiteral
16
- } from "../chunk-LAK42ZT4.js";
16
+ } from "../chunk-SDVA75LV.js";
17
17
  import "../chunk-I2BHWRAU.js";
18
18
  import "../chunk-GWZQLAGK.js";
19
- import "../chunk-SZY7NM6F.js";
20
- import "../chunk-DWRM7PIK.js";
19
+ import "../chunk-XYYEESKY.js";
20
+ import "../chunk-G7GFT6BU.js";
21
21
  export {
22
22
  DynamicValue,
23
23
  ImportManager,
@@ -4,12 +4,12 @@
4
4
 
5
5
  import {
6
6
  angularJitApplicationTransform
7
- } from "../chunk-NHQZ6PPY.js";
8
- import "../chunk-LAK42ZT4.js";
7
+ } from "../chunk-JY5R6NDM.js";
8
+ import "../chunk-SDVA75LV.js";
9
9
  import "../chunk-I2BHWRAU.js";
10
10
  import "../chunk-GWZQLAGK.js";
11
- import "../chunk-SZY7NM6F.js";
12
- import "../chunk-DWRM7PIK.js";
11
+ import "../chunk-XYYEESKY.js";
12
+ import "../chunk-G7GFT6BU.js";
13
13
 
14
14
  // packages/compiler-cli/private/tooling.ts
15
15
  var GLOBAL_DEFS_FOR_TERSER = {
@@ -6,20 +6,20 @@
6
6
  import {
7
7
  main,
8
8
  readCommandLineAndConfiguration
9
- } from "../../chunk-T7LEM3Q7.js";
9
+ } from "../../chunk-BBUN6IOV.js";
10
10
  import {
11
11
  EmitFlags
12
- } from "../../chunk-JE3EXK56.js";
13
- import "../../chunk-NHQZ6PPY.js";
14
- import "../../chunk-LAK42ZT4.js";
12
+ } from "../../chunk-6E57N6DK.js";
13
+ import "../../chunk-JY5R6NDM.js";
14
+ import "../../chunk-SDVA75LV.js";
15
15
  import "../../chunk-I2BHWRAU.js";
16
16
  import {
17
17
  setFileSystem
18
18
  } from "../../chunk-GWZQLAGK.js";
19
19
  import {
20
20
  NodeJSFileSystem
21
- } from "../../chunk-SZY7NM6F.js";
22
- import "../../chunk-DWRM7PIK.js";
21
+ } from "../../chunk-XYYEESKY.js";
22
+ import "../../chunk-G7GFT6BU.js";
23
23
 
24
24
  // packages/compiler-cli/src/bin/ng_xi18n.ts
25
25
  import "reflect-metadata";
@@ -5,18 +5,18 @@
5
5
 
6
6
  import {
7
7
  main
8
- } from "../../chunk-T7LEM3Q7.js";
9
- import "../../chunk-JE3EXK56.js";
10
- import "../../chunk-NHQZ6PPY.js";
11
- import "../../chunk-LAK42ZT4.js";
8
+ } from "../../chunk-BBUN6IOV.js";
9
+ import "../../chunk-6E57N6DK.js";
10
+ import "../../chunk-JY5R6NDM.js";
11
+ import "../../chunk-SDVA75LV.js";
12
12
  import "../../chunk-I2BHWRAU.js";
13
13
  import {
14
14
  setFileSystem
15
15
  } from "../../chunk-GWZQLAGK.js";
16
16
  import {
17
17
  NodeJSFileSystem
18
- } from "../../chunk-SZY7NM6F.js";
19
- import "../../chunk-DWRM7PIK.js";
18
+ } from "../../chunk-XYYEESKY.js";
19
+ import "../../chunk-G7GFT6BU.js";
20
20
 
21
21
  // packages/compiler-cli/src/bin/ngc.ts
22
22
  import "reflect-metadata";
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { MaybeForwardRefExpression, outputAst as o, R3DeclareDependencyMetadata, R3DependencyMetadata, R3Reference } from '@angular/compiler';
9
9
  import { AstObject, AstValue } from '../../ast/ast_value';
10
- export declare const PLACEHOLDER_VERSION = "20.2.0-rc.1";
10
+ export declare const PLACEHOLDER_VERSION = "20.2.1";
11
11
  export declare function wrapReference<TExpression>(wrapped: o.WrappedNodeExpr<TExpression>): R3Reference;
12
12
  /**
13
13
  * Parses the value of an enum from the AST value's symbol name.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/compiler-cli",
3
- "version": "20.2.0-rc.1",
3
+ "version": "20.2.1",
4
4
  "description": "Angular - the compiler CLI for Node.js",
5
5
  "typings": "index.d.ts",
6
6
  "bin": {
@@ -38,7 +38,7 @@
38
38
  }
39
39
  },
40
40
  "dependencies": {
41
- "@babel/core": "7.28.0",
41
+ "@babel/core": "7.28.3",
42
42
  "@jridgewell/sourcemap-codec": "^1.4.14",
43
43
  "reflect-metadata": "^0.2.0",
44
44
  "chokidar": "^4.0.0",
@@ -48,7 +48,7 @@
48
48
  "yargs": "^18.0.0"
49
49
  },
50
50
  "peerDependencies": {
51
- "@angular/compiler": "20.2.0-rc.1",
51
+ "@angular/compiler": "20.2.1",
52
52
  "typescript": ">=5.8 <6.0"
53
53
  },
54
54
  "peerDependenciesMeta": {
@@ -11,6 +11,8 @@ export interface EntryCollection {
11
11
  normalizedModuleName: string;
12
12
  moduleLabel: string;
13
13
  entries: DocEntry[];
14
+ repo: string;
15
+ symbols?: string[][];
14
16
  }
15
17
  /** Type of top-level documentation entry. */
16
18
  export declare enum EntryType {
@@ -122,6 +122,10 @@ export declare enum PotentialImportMode {
122
122
  */
123
123
  ForceDirect = 1
124
124
  }
125
+ export interface DirectiveModuleExportDetails {
126
+ moduleSpecifier: string;
127
+ exportName: string;
128
+ }
125
129
  export interface PotentialDirectiveModuleSpecifierResolver {
126
- resolve(toImport: Reference<ClassDeclaration>, importOn: ts.Node | null): string | undefined;
130
+ resolve(toImport: Reference<ClassDeclaration>, importOn: ts.Node | null): DirectiveModuleExportDetails | null;
127
131
  }
@@ -55,3 +55,27 @@ export declare function tsNumericExpression(value: number): ts.NumericLiteral |
55
55
  * - var _t1 /*T:D*\/ = _ctor1({});
56
56
  */
57
57
  export declare function isDirectiveDeclaration(node: ts.Node): node is ts.TypeNode | ts.Identifier;
58
+ /**
59
+ * Check if the lastSymbol is an alias of the firstSymbol. For example:
60
+ *
61
+ * The NewBarComponent is an alias of BarComponent.
62
+ *
63
+ * But the NotAliasBarComponent is not an alias of BarComponent, because
64
+ * the NotAliasBarComponent is a new variable.
65
+ *
66
+ * This should work for most cases.
67
+ *
68
+ * https://github.com/microsoft/TypeScript/blob/9e20e032effad965567d4a1e1c30d5433b0a3332/src/compiler/checker.ts#L3638-L3652
69
+ *
70
+ * ```
71
+ * // a.ts
72
+ * export class BarComponent {};
73
+ * // b.ts
74
+ * export {BarComponent as NewBarComponent} from "./a";
75
+ * // c.ts
76
+ * import {BarComponent} from "./a"
77
+ * const NotAliasBarComponent = BarComponent;
78
+ * export {NotAliasBarComponent};
79
+ * ```
80
+ */
81
+ export declare function isSymbolAliasOf(firstSymbol: ts.Symbol, lastSymbol: ts.Symbol, typeChecker: ts.TypeChecker): boolean;