@angular/core 18.2.7 → 18.2.9

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.
Files changed (34) hide show
  1. package/esm2022/src/event_emitter.mjs +4 -1
  2. package/esm2022/src/interface/type.mjs +1 -1
  3. package/esm2022/src/linker/view_ref.mjs +1 -1
  4. package/esm2022/src/platform/bootstrap.mjs +8 -4
  5. package/esm2022/src/platform/platform_ref.mjs +6 -2
  6. package/esm2022/src/render3/after_render/manager.mjs +4 -1
  7. package/esm2022/src/render3/component_ref.mjs +1 -1
  8. package/esm2022/src/render3/definition.mjs +1 -1
  9. package/esm2022/src/render3/features/input_transforms_feature.mjs +1 -1
  10. package/esm2022/src/render3/view_ref.mjs +1 -1
  11. package/esm2022/src/version.mjs +1 -1
  12. package/esm2022/testing/src/application_error_handler.mjs +3 -3
  13. package/esm2022/testing/src/component_fixture.mjs +1 -1
  14. package/esm2022/testing/src/logger.mjs +3 -3
  15. package/fesm2022/core.mjs +21 -7
  16. package/fesm2022/core.mjs.map +1 -1
  17. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  18. package/fesm2022/primitives/signals.mjs +1 -1
  19. package/fesm2022/rxjs-interop.mjs +1 -1
  20. package/fesm2022/testing.mjs +4 -4
  21. package/fesm2022/testing.mjs.map +1 -1
  22. package/index.d.ts +4 -20
  23. package/package.json +1 -1
  24. package/primitives/event-dispatch/index.d.ts +1 -1
  25. package/primitives/signals/index.d.ts +1 -1
  26. package/rxjs-interop/index.d.ts +1 -1
  27. package/schematics/migrations/after-render-phase/bundle.js +64 -22
  28. package/schematics/migrations/http-providers/bundle.js +64 -22
  29. package/schematics/migrations/invalid-two-way-bindings/bundle.js +64 -22
  30. package/schematics/ng-generate/control-flow-migration/bundle.js +64 -22
  31. package/schematics/ng-generate/inject-migration/bundle.js +64 -22
  32. package/schematics/ng-generate/route-lazy-loading/bundle.js +64 -22
  33. package/schematics/ng-generate/standalone-migration/bundle.js +107 -43
  34. package/testing/index.d.ts +3 -1
@@ -5753,7 +5753,7 @@ var ShadowCss = class {
5753
5753
  });
5754
5754
  }
5755
5755
  _convertColonHostContext(cssText) {
5756
- return cssText.replace(_cssColonHostContextReGlobal, (selectorText) => {
5756
+ return cssText.replace(_cssColonHostContextReGlobal, (selectorText, pseudoPrefix) => {
5757
5757
  var _a2;
5758
5758
  const contextSelectorGroups = [[]];
5759
5759
  let match;
@@ -5768,7 +5768,7 @@ var ShadowCss = class {
5768
5768
  }
5769
5769
  selectorText = match[2];
5770
5770
  }
5771
- return contextSelectorGroups.map((contextSelectors) => combineHostContextSelectors(contextSelectors, selectorText)).join(", ");
5771
+ return contextSelectorGroups.map((contextSelectors) => _combineHostContextSelectors(contextSelectors, selectorText, pseudoPrefix)).join(", ");
5772
5772
  });
5773
5773
  }
5774
5774
  _convertShadowDOMSelectors(cssText) {
@@ -5779,7 +5779,12 @@ var ShadowCss = class {
5779
5779
  let selector = rule.selector;
5780
5780
  let content = rule.content;
5781
5781
  if (rule.selector[0] !== "@") {
5782
- selector = this._scopeSelector(rule.selector, scopeSelector, hostSelector);
5782
+ selector = this._scopeSelector({
5783
+ selector,
5784
+ scopeSelector,
5785
+ hostSelector,
5786
+ isParentSelector: true
5787
+ });
5783
5788
  } else if (scopedAtRuleIdentifiers.some((atRule) => rule.selector.startsWith(atRule))) {
5784
5789
  content = this._scopeSelectors(rule.content, scopeSelector, hostSelector);
5785
5790
  } else if (rule.selector.startsWith("@font-face") || rule.selector.startsWith("@page")) {
@@ -5794,12 +5799,18 @@ var ShadowCss = class {
5794
5799
  return new CssRule(selector, rule.content);
5795
5800
  });
5796
5801
  }
5797
- _scopeSelector(selector, scopeSelector, hostSelector) {
5798
- return selector.split(/ ?, ?/).map((part) => part.split(_shadowDeepSelectors)).map((deepParts) => {
5802
+ _scopeSelector({ selector, scopeSelector, hostSelector, isParentSelector = false }) {
5803
+ const selectorSplitRe = / ?,(?!(?:[^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\))) ?/;
5804
+ return selector.split(selectorSplitRe).map((part) => part.split(_shadowDeepSelectors)).map((deepParts) => {
5799
5805
  const [shallowPart, ...otherParts] = deepParts;
5800
5806
  const applyScope = (shallowPart2) => {
5801
5807
  if (this._selectorNeedsScoping(shallowPart2, scopeSelector)) {
5802
- return this._applySelectorScope(shallowPart2, scopeSelector, hostSelector);
5808
+ return this._applySelectorScope({
5809
+ selector: shallowPart2,
5810
+ scopeSelector,
5811
+ hostSelector,
5812
+ isParentSelector
5813
+ });
5803
5814
  } else {
5804
5815
  return shallowPart2;
5805
5816
  }
@@ -5821,15 +5832,15 @@ var ShadowCss = class {
5821
5832
  _polyfillHostRe.lastIndex = 0;
5822
5833
  if (_polyfillHostRe.test(selector)) {
5823
5834
  const replaceBy = `[${hostSelector}]`;
5824
- return selector.replace(_polyfillHostNoCombinatorRe, (hnc, selector2) => {
5825
- return selector2.replace(/([^:]*)(:*)(.*)/, (_, before, colon, after) => {
5835
+ return selector.replace(_polyfillHostNoCombinatorReGlobal, (_hnc, selector2) => {
5836
+ return selector2.replace(/([^:\)]*)(:*)(.*)/, (_, before, colon, after) => {
5826
5837
  return before + replaceBy + colon + after;
5827
5838
  });
5828
5839
  }).replace(_polyfillHostRe, replaceBy + " ");
5829
5840
  }
5830
5841
  return scopeSelector + " " + selector;
5831
5842
  }
5832
- _applySelectorScope(selector, scopeSelector, hostSelector) {
5843
+ _applySelectorScope({ selector, scopeSelector, hostSelector, isParentSelector }) {
5833
5844
  var _a2;
5834
5845
  const isRe = /\[is=([^\]]*)\]/g;
5835
5846
  scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]);
@@ -5841,6 +5852,10 @@ var ShadowCss = class {
5841
5852
  }
5842
5853
  if (p.includes(_polyfillHostNoCombinator)) {
5843
5854
  scopedP = this._applySimpleSelectorScope(p, scopeSelector, hostSelector);
5855
+ if (_polyfillHostNoCombinatorWithinPseudoFunction.test(p)) {
5856
+ const [_, before, colon, after] = scopedP.match(/([^:]*)(:*)(.*)/);
5857
+ scopedP = before + attrName + colon + after;
5858
+ }
5844
5859
  } else {
5845
5860
  const t = p.replace(_polyfillHostRe, "");
5846
5861
  if (t.length > 0) {
@@ -5852,29 +5867,52 @@ var ShadowCss = class {
5852
5867
  }
5853
5868
  return scopedP;
5854
5869
  };
5855
- const safeContent = new SafeSelector(selector);
5856
- selector = safeContent.content();
5870
+ const _pseudoFunctionAwareScopeSelectorPart = (selectorPart) => {
5871
+ let scopedPart = "";
5872
+ const cssPrefixWithPseudoSelectorFunctionMatch = selectorPart.match(_cssPrefixWithPseudoSelectorFunction);
5873
+ if (cssPrefixWithPseudoSelectorFunctionMatch) {
5874
+ const [cssPseudoSelectorFunction] = cssPrefixWithPseudoSelectorFunctionMatch;
5875
+ const selectorToScope = selectorPart.slice(cssPseudoSelectorFunction.length, -1);
5876
+ if (selectorToScope.includes(_polyfillHostNoCombinator)) {
5877
+ this._shouldScopeIndicator = true;
5878
+ }
5879
+ const scopedInnerPart = this._scopeSelector({
5880
+ selector: selectorToScope,
5881
+ scopeSelector,
5882
+ hostSelector
5883
+ });
5884
+ scopedPart = `${cssPseudoSelectorFunction}${scopedInnerPart})`;
5885
+ } else {
5886
+ this._shouldScopeIndicator = this._shouldScopeIndicator || selectorPart.includes(_polyfillHostNoCombinator);
5887
+ scopedPart = this._shouldScopeIndicator ? _scopeSelectorPart(selectorPart) : selectorPart;
5888
+ }
5889
+ return scopedPart;
5890
+ };
5891
+ if (isParentSelector) {
5892
+ this._safeSelector = new SafeSelector(selector);
5893
+ selector = this._safeSelector.content();
5894
+ }
5857
5895
  let scopedSelector = "";
5858
5896
  let startIndex = 0;
5859
5897
  let res;
5860
- const sep = /( |>|\+|~(?!=))\s*/g;
5898
+ const sep = /( |>|\+|~(?!=))(?!([^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\)))\s*/g;
5861
5899
  const hasHost = selector.includes(_polyfillHostNoCombinator);
5862
- let shouldScope = !hasHost;
5900
+ if (isParentSelector || this._shouldScopeIndicator) {
5901
+ this._shouldScopeIndicator = !hasHost;
5902
+ }
5863
5903
  while ((res = sep.exec(selector)) !== null) {
5864
5904
  const separator = res[1];
5865
5905
  const part2 = selector.slice(startIndex, res.index);
5866
5906
  if (part2.match(/__esc-ph-(\d+)__/) && ((_a2 = selector[res.index + 1]) == null ? void 0 : _a2.match(/[a-fA-F\d]/))) {
5867
5907
  continue;
5868
5908
  }
5869
- shouldScope = shouldScope || part2.includes(_polyfillHostNoCombinator);
5870
- const scopedPart = shouldScope ? _scopeSelectorPart(part2) : part2;
5909
+ const scopedPart = _pseudoFunctionAwareScopeSelectorPart(part2);
5871
5910
  scopedSelector += `${scopedPart} ${separator} `;
5872
5911
  startIndex = sep.lastIndex;
5873
5912
  }
5874
5913
  const part = selector.substring(startIndex);
5875
- shouldScope = shouldScope || part.includes(_polyfillHostNoCombinator);
5876
- scopedSelector += shouldScope ? _scopeSelectorPart(part) : part;
5877
- return safeContent.restore(scopedSelector);
5914
+ scopedSelector += _pseudoFunctionAwareScopeSelectorPart(part);
5915
+ return this._safeSelector.restore(scopedSelector);
5878
5916
  }
5879
5917
  _insertPolyfillHostInCssText(selector) {
5880
5918
  return selector.replace(_colonHostContextRe, _polyfillHostContext).replace(_colonHostRe, _polyfillHost);
@@ -5913,6 +5951,8 @@ var SafeSelector = class {
5913
5951
  });
5914
5952
  }
5915
5953
  };
5954
+ var _cssScopedPseudoFunctionPrefix = "(:(where|is)\\()?";
5955
+ var _cssPrefixWithPseudoSelectorFunction = /^:(where|is)\(/i;
5916
5956
  var _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim;
5917
5957
  var _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;
5918
5958
  var _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;
@@ -5920,10 +5960,12 @@ var _polyfillHost = "-shadowcsshost";
5920
5960
  var _polyfillHostContext = "-shadowcsscontext";
5921
5961
  var _parenSuffix = "(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)";
5922
5962
  var _cssColonHostRe = new RegExp(_polyfillHost + _parenSuffix, "gim");
5923
- var _cssColonHostContextReGlobal = new RegExp(_polyfillHostContext + _parenSuffix, "gim");
5963
+ var _cssColonHostContextReGlobal = new RegExp(_cssScopedPseudoFunctionPrefix + "(" + _polyfillHostContext + _parenSuffix + ")", "gim");
5924
5964
  var _cssColonHostContextRe = new RegExp(_polyfillHostContext + _parenSuffix, "im");
5925
5965
  var _polyfillHostNoCombinator = _polyfillHost + "-no-combinator";
5966
+ var _polyfillHostNoCombinatorWithinPseudoFunction = new RegExp(`:.*\\(.*${_polyfillHostNoCombinator}.*\\)`);
5926
5967
  var _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/;
5968
+ var _polyfillHostNoCombinatorReGlobal = new RegExp(_polyfillHostNoCombinatorRe, "g");
5927
5969
  var _shadowDOMSelectorsRe = [
5928
5970
  /::shadow/g,
5929
5971
  /::content/g,
@@ -6058,7 +6100,7 @@ function unescapeInStrings(input) {
6058
6100
  function unescapeQuotes(str, isQuoted) {
6059
6101
  return !isQuoted ? str : str.replace(/((?:^|[^\\])(?:\\\\)*)\\(?=['"])/g, "$1");
6060
6102
  }
6061
- function combineHostContextSelectors(contextSelectors, otherSelectors) {
6103
+ function _combineHostContextSelectors(contextSelectors, otherSelectors, pseudoPrefix = "") {
6062
6104
  const hostMarker = _polyfillHostNoCombinator;
6063
6105
  _polyfillHostRe.lastIndex = 0;
6064
6106
  const otherSelectorsHasHost = _polyfillHostRe.test(otherSelectors);
@@ -6076,7 +6118,7 @@ function combineHostContextSelectors(contextSelectors, otherSelectors) {
6076
6118
  combined[i] = contextSelector + previousSelectors;
6077
6119
  }
6078
6120
  }
6079
- return combined.map((s) => otherSelectorsHasHost ? `${s}${otherSelectors}` : `${s}${hostMarker}${otherSelectors}, ${s} ${hostMarker}${otherSelectors}`).join(",");
6121
+ return combined.map((s) => otherSelectorsHasHost ? `${pseudoPrefix}${s}${otherSelectors}` : `${pseudoPrefix}${s}${hostMarker}${otherSelectors}, ${pseudoPrefix}${s} ${hostMarker}${otherSelectors}`).join(",");
6080
6122
  }
6081
6123
  function repeatGroups(groups, multiples) {
6082
6124
  const length = groups.length;
@@ -23315,7 +23357,7 @@ function publishFacade(global) {
23315
23357
  }
23316
23358
 
23317
23359
  // bazel-out/k8-fastbuild/bin/packages/compiler/src/version.mjs
23318
- var VERSION2 = new Version("18.2.7");
23360
+ var VERSION2 = new Version("18.2.9");
23319
23361
 
23320
23362
  // bazel-out/k8-fastbuild/bin/packages/compiler/src/i18n/extractor_merger.mjs
23321
23363
  var _VisitorMode;
@@ -8640,7 +8640,7 @@ var ShadowCss = class {
8640
8640
  });
8641
8641
  }
8642
8642
  _convertColonHostContext(cssText) {
8643
- return cssText.replace(_cssColonHostContextReGlobal, (selectorText) => {
8643
+ return cssText.replace(_cssColonHostContextReGlobal, (selectorText, pseudoPrefix) => {
8644
8644
  var _a2;
8645
8645
  const contextSelectorGroups = [[]];
8646
8646
  let match;
@@ -8655,7 +8655,7 @@ var ShadowCss = class {
8655
8655
  }
8656
8656
  selectorText = match[2];
8657
8657
  }
8658
- return contextSelectorGroups.map((contextSelectors) => combineHostContextSelectors(contextSelectors, selectorText)).join(", ");
8658
+ return contextSelectorGroups.map((contextSelectors) => _combineHostContextSelectors(contextSelectors, selectorText, pseudoPrefix)).join(", ");
8659
8659
  });
8660
8660
  }
8661
8661
  _convertShadowDOMSelectors(cssText) {
@@ -8666,7 +8666,12 @@ var ShadowCss = class {
8666
8666
  let selector = rule.selector;
8667
8667
  let content = rule.content;
8668
8668
  if (rule.selector[0] !== "@") {
8669
- selector = this._scopeSelector(rule.selector, scopeSelector, hostSelector);
8669
+ selector = this._scopeSelector({
8670
+ selector,
8671
+ scopeSelector,
8672
+ hostSelector,
8673
+ isParentSelector: true
8674
+ });
8670
8675
  } else if (scopedAtRuleIdentifiers.some((atRule) => rule.selector.startsWith(atRule))) {
8671
8676
  content = this._scopeSelectors(rule.content, scopeSelector, hostSelector);
8672
8677
  } else if (rule.selector.startsWith("@font-face") || rule.selector.startsWith("@page")) {
@@ -8681,12 +8686,18 @@ var ShadowCss = class {
8681
8686
  return new CssRule(selector, rule.content);
8682
8687
  });
8683
8688
  }
8684
- _scopeSelector(selector, scopeSelector, hostSelector) {
8685
- return selector.split(/ ?, ?/).map((part) => part.split(_shadowDeepSelectors)).map((deepParts) => {
8689
+ _scopeSelector({ selector, scopeSelector, hostSelector, isParentSelector = false }) {
8690
+ const selectorSplitRe = / ?,(?!(?:[^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\))) ?/;
8691
+ return selector.split(selectorSplitRe).map((part) => part.split(_shadowDeepSelectors)).map((deepParts) => {
8686
8692
  const [shallowPart, ...otherParts] = deepParts;
8687
8693
  const applyScope = (shallowPart2) => {
8688
8694
  if (this._selectorNeedsScoping(shallowPart2, scopeSelector)) {
8689
- return this._applySelectorScope(shallowPart2, scopeSelector, hostSelector);
8695
+ return this._applySelectorScope({
8696
+ selector: shallowPart2,
8697
+ scopeSelector,
8698
+ hostSelector,
8699
+ isParentSelector
8700
+ });
8690
8701
  } else {
8691
8702
  return shallowPart2;
8692
8703
  }
@@ -8708,15 +8719,15 @@ var ShadowCss = class {
8708
8719
  _polyfillHostRe.lastIndex = 0;
8709
8720
  if (_polyfillHostRe.test(selector)) {
8710
8721
  const replaceBy = `[${hostSelector}]`;
8711
- return selector.replace(_polyfillHostNoCombinatorRe, (hnc, selector2) => {
8712
- return selector2.replace(/([^:]*)(:*)(.*)/, (_, before, colon, after) => {
8722
+ return selector.replace(_polyfillHostNoCombinatorReGlobal, (_hnc, selector2) => {
8723
+ return selector2.replace(/([^:\)]*)(:*)(.*)/, (_, before, colon, after) => {
8713
8724
  return before + replaceBy + colon + after;
8714
8725
  });
8715
8726
  }).replace(_polyfillHostRe, replaceBy + " ");
8716
8727
  }
8717
8728
  return scopeSelector + " " + selector;
8718
8729
  }
8719
- _applySelectorScope(selector, scopeSelector, hostSelector) {
8730
+ _applySelectorScope({ selector, scopeSelector, hostSelector, isParentSelector }) {
8720
8731
  var _a2;
8721
8732
  const isRe = /\[is=([^\]]*)\]/g;
8722
8733
  scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]);
@@ -8728,6 +8739,10 @@ var ShadowCss = class {
8728
8739
  }
8729
8740
  if (p2.includes(_polyfillHostNoCombinator)) {
8730
8741
  scopedP = this._applySimpleSelectorScope(p2, scopeSelector, hostSelector);
8742
+ if (_polyfillHostNoCombinatorWithinPseudoFunction.test(p2)) {
8743
+ const [_, before, colon, after] = scopedP.match(/([^:]*)(:*)(.*)/);
8744
+ scopedP = before + attrName + colon + after;
8745
+ }
8731
8746
  } else {
8732
8747
  const t = p2.replace(_polyfillHostRe, "");
8733
8748
  if (t.length > 0) {
@@ -8739,29 +8754,52 @@ var ShadowCss = class {
8739
8754
  }
8740
8755
  return scopedP;
8741
8756
  };
8742
- const safeContent = new SafeSelector(selector);
8743
- selector = safeContent.content();
8757
+ const _pseudoFunctionAwareScopeSelectorPart = (selectorPart) => {
8758
+ let scopedPart = "";
8759
+ const cssPrefixWithPseudoSelectorFunctionMatch = selectorPart.match(_cssPrefixWithPseudoSelectorFunction);
8760
+ if (cssPrefixWithPseudoSelectorFunctionMatch) {
8761
+ const [cssPseudoSelectorFunction] = cssPrefixWithPseudoSelectorFunctionMatch;
8762
+ const selectorToScope = selectorPart.slice(cssPseudoSelectorFunction.length, -1);
8763
+ if (selectorToScope.includes(_polyfillHostNoCombinator)) {
8764
+ this._shouldScopeIndicator = true;
8765
+ }
8766
+ const scopedInnerPart = this._scopeSelector({
8767
+ selector: selectorToScope,
8768
+ scopeSelector,
8769
+ hostSelector
8770
+ });
8771
+ scopedPart = `${cssPseudoSelectorFunction}${scopedInnerPart})`;
8772
+ } else {
8773
+ this._shouldScopeIndicator = this._shouldScopeIndicator || selectorPart.includes(_polyfillHostNoCombinator);
8774
+ scopedPart = this._shouldScopeIndicator ? _scopeSelectorPart(selectorPart) : selectorPart;
8775
+ }
8776
+ return scopedPart;
8777
+ };
8778
+ if (isParentSelector) {
8779
+ this._safeSelector = new SafeSelector(selector);
8780
+ selector = this._safeSelector.content();
8781
+ }
8744
8782
  let scopedSelector = "";
8745
8783
  let startIndex = 0;
8746
8784
  let res;
8747
- const sep2 = /( |>|\+|~(?!=))\s*/g;
8785
+ const sep2 = /( |>|\+|~(?!=))(?!([^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\)))\s*/g;
8748
8786
  const hasHost = selector.includes(_polyfillHostNoCombinator);
8749
- let shouldScope = !hasHost;
8787
+ if (isParentSelector || this._shouldScopeIndicator) {
8788
+ this._shouldScopeIndicator = !hasHost;
8789
+ }
8750
8790
  while ((res = sep2.exec(selector)) !== null) {
8751
8791
  const separator = res[1];
8752
8792
  const part2 = selector.slice(startIndex, res.index);
8753
8793
  if (part2.match(/__esc-ph-(\d+)__/) && ((_a2 = selector[res.index + 1]) == null ? void 0 : _a2.match(/[a-fA-F\d]/))) {
8754
8794
  continue;
8755
8795
  }
8756
- shouldScope = shouldScope || part2.includes(_polyfillHostNoCombinator);
8757
- const scopedPart = shouldScope ? _scopeSelectorPart(part2) : part2;
8796
+ const scopedPart = _pseudoFunctionAwareScopeSelectorPart(part2);
8758
8797
  scopedSelector += `${scopedPart} ${separator} `;
8759
8798
  startIndex = sep2.lastIndex;
8760
8799
  }
8761
8800
  const part = selector.substring(startIndex);
8762
- shouldScope = shouldScope || part.includes(_polyfillHostNoCombinator);
8763
- scopedSelector += shouldScope ? _scopeSelectorPart(part) : part;
8764
- return safeContent.restore(scopedSelector);
8801
+ scopedSelector += _pseudoFunctionAwareScopeSelectorPart(part);
8802
+ return this._safeSelector.restore(scopedSelector);
8765
8803
  }
8766
8804
  _insertPolyfillHostInCssText(selector) {
8767
8805
  return selector.replace(_colonHostContextRe, _polyfillHostContext).replace(_colonHostRe, _polyfillHost);
@@ -8800,6 +8838,8 @@ var SafeSelector = class {
8800
8838
  });
8801
8839
  }
8802
8840
  };
8841
+ var _cssScopedPseudoFunctionPrefix = "(:(where|is)\\()?";
8842
+ var _cssPrefixWithPseudoSelectorFunction = /^:(where|is)\(/i;
8803
8843
  var _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim;
8804
8844
  var _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;
8805
8845
  var _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;
@@ -8807,10 +8847,12 @@ var _polyfillHost = "-shadowcsshost";
8807
8847
  var _polyfillHostContext = "-shadowcsscontext";
8808
8848
  var _parenSuffix = "(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)";
8809
8849
  var _cssColonHostRe = new RegExp(_polyfillHost + _parenSuffix, "gim");
8810
- var _cssColonHostContextReGlobal = new RegExp(_polyfillHostContext + _parenSuffix, "gim");
8850
+ var _cssColonHostContextReGlobal = new RegExp(_cssScopedPseudoFunctionPrefix + "(" + _polyfillHostContext + _parenSuffix + ")", "gim");
8811
8851
  var _cssColonHostContextRe = new RegExp(_polyfillHostContext + _parenSuffix, "im");
8812
8852
  var _polyfillHostNoCombinator = _polyfillHost + "-no-combinator";
8853
+ var _polyfillHostNoCombinatorWithinPseudoFunction = new RegExp(`:.*\\(.*${_polyfillHostNoCombinator}.*\\)`);
8813
8854
  var _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/;
8855
+ var _polyfillHostNoCombinatorReGlobal = new RegExp(_polyfillHostNoCombinatorRe, "g");
8814
8856
  var _shadowDOMSelectorsRe = [
8815
8857
  /::shadow/g,
8816
8858
  /::content/g,
@@ -8945,7 +8987,7 @@ function unescapeInStrings(input) {
8945
8987
  function unescapeQuotes(str, isQuoted) {
8946
8988
  return !isQuoted ? str : str.replace(/((?:^|[^\\])(?:\\\\)*)\\(?=['"])/g, "$1");
8947
8989
  }
8948
- function combineHostContextSelectors(contextSelectors, otherSelectors) {
8990
+ function _combineHostContextSelectors(contextSelectors, otherSelectors, pseudoPrefix = "") {
8949
8991
  const hostMarker = _polyfillHostNoCombinator;
8950
8992
  _polyfillHostRe.lastIndex = 0;
8951
8993
  const otherSelectorsHasHost = _polyfillHostRe.test(otherSelectors);
@@ -8963,7 +9005,7 @@ function combineHostContextSelectors(contextSelectors, otherSelectors) {
8963
9005
  combined[i] = contextSelector + previousSelectors;
8964
9006
  }
8965
9007
  }
8966
- return combined.map((s) => otherSelectorsHasHost ? `${s}${otherSelectors}` : `${s}${hostMarker}${otherSelectors}, ${s} ${hostMarker}${otherSelectors}`).join(",");
9008
+ return combined.map((s) => otherSelectorsHasHost ? `${pseudoPrefix}${s}${otherSelectors}` : `${pseudoPrefix}${s}${hostMarker}${otherSelectors}, ${pseudoPrefix}${s} ${hostMarker}${otherSelectors}`).join(",");
8967
9009
  }
8968
9010
  function repeatGroups(groups, multiples) {
8969
9011
  const length = groups.length;
@@ -26226,7 +26268,7 @@ function publishFacade(global) {
26226
26268
  }
26227
26269
 
26228
26270
  // bazel-out/k8-fastbuild/bin/packages/compiler/src/version.mjs
26229
- var VERSION2 = new Version("18.2.7");
26271
+ var VERSION2 = new Version("18.2.9");
26230
26272
 
26231
26273
  // bazel-out/k8-fastbuild/bin/packages/compiler/src/i18n/extractor_merger.mjs
26232
26274
  var _I18N_ATTR = "i18n";
@@ -27343,7 +27385,7 @@ var MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = "18.0.0";
27343
27385
  function compileDeclareClassMetadata(metadata) {
27344
27386
  const definitionMap = new DefinitionMap();
27345
27387
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION));
27346
- definitionMap.set("version", literal("18.2.7"));
27388
+ definitionMap.set("version", literal("18.2.9"));
27347
27389
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27348
27390
  definitionMap.set("type", metadata.type);
27349
27391
  definitionMap.set("decorators", metadata.decorators);
@@ -27362,7 +27404,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
27362
27404
  callbackReturnDefinitionMap.set("ctorParameters", (_a2 = metadata.ctorParameters) != null ? _a2 : literal(null));
27363
27405
  callbackReturnDefinitionMap.set("propDecorators", (_b2 = metadata.propDecorators) != null ? _b2 : literal(null));
27364
27406
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
27365
- definitionMap.set("version", literal("18.2.7"));
27407
+ definitionMap.set("version", literal("18.2.9"));
27366
27408
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27367
27409
  definitionMap.set("type", metadata.type);
27368
27410
  definitionMap.set("resolveDeferredDeps", compileComponentMetadataAsyncResolver(dependencies));
@@ -27430,7 +27472,7 @@ function createDirectiveDefinitionMap(meta) {
27430
27472
  const definitionMap = new DefinitionMap();
27431
27473
  const minVersion = getMinimumVersionForPartialOutput(meta);
27432
27474
  definitionMap.set("minVersion", literal(minVersion));
27433
- definitionMap.set("version", literal("18.2.7"));
27475
+ definitionMap.set("version", literal("18.2.9"));
27434
27476
  definitionMap.set("type", meta.type.value);
27435
27477
  if (meta.isStandalone) {
27436
27478
  definitionMap.set("isStandalone", literal(meta.isStandalone));
@@ -27748,7 +27790,7 @@ var MINIMUM_PARTIAL_LINKER_VERSION2 = "12.0.0";
27748
27790
  function compileDeclareFactoryFunction(meta) {
27749
27791
  const definitionMap = new DefinitionMap();
27750
27792
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION2));
27751
- definitionMap.set("version", literal("18.2.7"));
27793
+ definitionMap.set("version", literal("18.2.9"));
27752
27794
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27753
27795
  definitionMap.set("type", meta.type.value);
27754
27796
  definitionMap.set("deps", compileDependencies(meta.deps));
@@ -27771,7 +27813,7 @@ function compileDeclareInjectableFromMetadata(meta) {
27771
27813
  function createInjectableDefinitionMap(meta) {
27772
27814
  const definitionMap = new DefinitionMap();
27773
27815
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION3));
27774
- definitionMap.set("version", literal("18.2.7"));
27816
+ definitionMap.set("version", literal("18.2.9"));
27775
27817
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27776
27818
  definitionMap.set("type", meta.type.value);
27777
27819
  if (meta.providedIn !== void 0) {
@@ -27809,7 +27851,7 @@ function compileDeclareInjectorFromMetadata(meta) {
27809
27851
  function createInjectorDefinitionMap(meta) {
27810
27852
  const definitionMap = new DefinitionMap();
27811
27853
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION4));
27812
- definitionMap.set("version", literal("18.2.7"));
27854
+ definitionMap.set("version", literal("18.2.9"));
27813
27855
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27814
27856
  definitionMap.set("type", meta.type.value);
27815
27857
  definitionMap.set("providers", meta.providers);
@@ -27833,7 +27875,7 @@ function createNgModuleDefinitionMap(meta) {
27833
27875
  throw new Error("Invalid path! Local compilation mode should not get into the partial compilation path");
27834
27876
  }
27835
27877
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION5));
27836
- definitionMap.set("version", literal("18.2.7"));
27878
+ definitionMap.set("version", literal("18.2.9"));
27837
27879
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27838
27880
  definitionMap.set("type", meta.type.value);
27839
27881
  if (meta.bootstrap.length > 0) {
@@ -27868,7 +27910,7 @@ function compileDeclarePipeFromMetadata(meta) {
27868
27910
  function createPipeDefinitionMap(meta) {
27869
27911
  const definitionMap = new DefinitionMap();
27870
27912
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION6));
27871
- definitionMap.set("version", literal("18.2.7"));
27913
+ definitionMap.set("version", literal("18.2.9"));
27872
27914
  definitionMap.set("ngImport", importExpr(Identifiers.core));
27873
27915
  definitionMap.set("type", meta.type.value);
27874
27916
  if (meta.isStandalone) {
@@ -27885,7 +27927,7 @@ function createPipeDefinitionMap(meta) {
27885
27927
  publishFacade(_global);
27886
27928
 
27887
27929
  // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/version.mjs
27888
- var VERSION3 = new Version("18.2.7");
27930
+ var VERSION3 = new Version("18.2.9");
27889
27931
 
27890
27932
  // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/imports/src/emitter.mjs
27891
27933
  var import_typescript5 = __toESM(require("typescript"), 1);
@@ -29443,7 +29485,7 @@ var DeferredSymbolTracker = class {
29443
29485
  return false;
29444
29486
  }
29445
29487
  const symbolsMap = this.imports.get(importDecl);
29446
- for (const [symbol, refs] of symbolsMap) {
29488
+ for (const refs of symbolsMap.values()) {
29447
29489
  if (refs === AssumeEager || refs.size > 0) {
29448
29490
  return false;
29449
29491
  }
@@ -29462,7 +29504,7 @@ var DeferredSymbolTracker = class {
29462
29504
  lookupIdentifiersInSourceFile(name, importDecl) {
29463
29505
  const results = /* @__PURE__ */ new Set();
29464
29506
  const visit2 = (node) => {
29465
- if (node === importDecl) {
29507
+ if (node === importDecl || import_typescript13.default.isTypeNode(node)) {
29466
29508
  return;
29467
29509
  }
29468
29510
  if (import_typescript13.default.isIdentifier(node) && node.text === name) {
@@ -35317,6 +35359,7 @@ function makeUnknownComponentDeferredImportDiagnostic(ref, rawExpr) {
35317
35359
  }
35318
35360
 
35319
35361
  // bazel-out/k8-fastbuild/bin/packages/compiler-cli/src/ngtsc/scope/src/local.mjs
35362
+ var IN_PROGRESS_RESOLUTION = {};
35320
35363
  var LocalModuleScopeRegistry = class {
35321
35364
  constructor(localReader, fullReader, dependencyScopeReader, refEmitter, aliasingHost) {
35322
35365
  this.localReader = localReader;
@@ -35389,8 +35432,12 @@ var LocalModuleScopeRegistry = class {
35389
35432
  }
35390
35433
  getScopeOfModuleReference(ref) {
35391
35434
  if (this.cache.has(ref.node)) {
35392
- return this.cache.get(ref.node);
35435
+ const cachedValue = this.cache.get(ref.node);
35436
+ if (cachedValue !== IN_PROGRESS_RESOLUTION) {
35437
+ return cachedValue;
35438
+ }
35393
35439
  }
35440
+ this.cache.set(ref.node, IN_PROGRESS_RESOLUTION);
35394
35441
  this.sealed = true;
35395
35442
  const ngModule = this.localReader.getNgModuleMetadata(ref);
35396
35443
  if (ngModule === null) {
@@ -35410,10 +35457,12 @@ var LocalModuleScopeRegistry = class {
35410
35457
  for (const decl of ngModule.imports) {
35411
35458
  const importScope = this.getExportedScope(decl, diagnostics, ref.node, "import");
35412
35459
  if (importScope !== null) {
35413
- if (importScope === "invalid" || importScope.exported.isPoisoned) {
35414
- diagnostics.push(invalidTransitiveNgModuleRef(decl, ngModule.rawImports, "import"));
35460
+ if (importScope === "invalid" || importScope === "cycle" || importScope.exported.isPoisoned) {
35415
35461
  isPoisoned = true;
35416
- if (importScope === "invalid") {
35462
+ if (importScope !== "cycle") {
35463
+ diagnostics.push(invalidTransitiveNgModuleRef(decl, ngModule.rawImports, "import"));
35464
+ }
35465
+ if (importScope === "invalid" || importScope === "cycle") {
35417
35466
  continue;
35418
35467
  }
35419
35468
  }
@@ -35480,10 +35529,12 @@ var LocalModuleScopeRegistry = class {
35480
35529
  }
35481
35530
  for (const decl of ngModule.exports) {
35482
35531
  const exportScope = this.getExportedScope(decl, diagnostics, ref.node, "export");
35483
- if (exportScope === "invalid" || exportScope !== null && exportScope.exported.isPoisoned) {
35484
- diagnostics.push(invalidTransitiveNgModuleRef(decl, ngModule.rawExports, "export"));
35532
+ if (exportScope === "invalid" || exportScope === "cycle" || exportScope !== null && exportScope.exported.isPoisoned) {
35485
35533
  isPoisoned = true;
35486
- if (exportScope === "invalid") {
35534
+ if (exportScope !== "cycle") {
35535
+ diagnostics.push(invalidTransitiveNgModuleRef(decl, ngModule.rawExports, "export"));
35536
+ }
35537
+ if (exportScope === "invalid" || exportScope === "cycle") {
35487
35538
  continue;
35488
35539
  }
35489
35540
  } else if (exportScope !== null) {
@@ -35551,6 +35602,10 @@ var LocalModuleScopeRegistry = class {
35551
35602
  }
35552
35603
  return this.dependencyScopeReader.resolve(ref);
35553
35604
  } else {
35605
+ if (this.cache.get(ref.node) === IN_PROGRESS_RESOLUTION) {
35606
+ diagnostics.push(makeDiagnostic(type === "import" ? ErrorCode.NGMODULE_INVALID_IMPORT : ErrorCode.NGMODULE_INVALID_EXPORT, identifierOfNode(ref.node) || ref.node, `NgModule "${type}" field contains a cycle`));
35607
+ return "cycle";
35608
+ }
35554
35609
  return this.getScopeOfModuleReference(ref);
35555
35610
  }
35556
35611
  }
@@ -46760,7 +46815,7 @@ var ClassExtractor = class {
46760
46815
  extractClassMember(memberDeclaration) {
46761
46816
  if (this.isMethod(memberDeclaration)) {
46762
46817
  return this.extractMethod(memberDeclaration);
46763
- } else if (this.isProperty(memberDeclaration)) {
46818
+ } else if (this.isProperty(memberDeclaration) && !this.hasPrivateComputedProperty(memberDeclaration)) {
46764
46819
  return this.extractClassProperty(memberDeclaration);
46765
46820
  } else if (import_typescript102.default.isAccessor(memberDeclaration)) {
46766
46821
  return this.extractGetterSetter(memberDeclaration);
@@ -46860,9 +46915,15 @@ var ClassExtractor = class {
46860
46915
  return result;
46861
46916
  }
46862
46917
  filterMethodOverloads(declarations) {
46863
- return declarations.filter((declaration) => {
46918
+ return declarations.filter((declaration, index) => {
46919
+ var _a2;
46864
46920
  if (import_typescript102.default.isFunctionDeclaration(declaration) || import_typescript102.default.isMethodDeclaration(declaration)) {
46865
- return !!declaration.body || import_typescript102.default.getCombinedModifierFlags(declaration) & import_typescript102.default.ModifierFlags.Abstract;
46921
+ if (import_typescript102.default.getCombinedModifierFlags(declaration) & import_typescript102.default.ModifierFlags.Abstract) {
46922
+ const previousDeclaration = declarations[index - 1];
46923
+ const samePreviousAbstractMethod = previousDeclaration && import_typescript102.default.isMethodDeclaration(previousDeclaration) && import_typescript102.default.getCombinedModifierFlags(previousDeclaration) & import_typescript102.default.ModifierFlags.Abstract && previousDeclaration.name.getText() === ((_a2 = declaration.name) == null ? void 0 : _a2.getText());
46924
+ return !samePreviousAbstractMethod;
46925
+ }
46926
+ return !!declaration.body;
46866
46927
  }
46867
46928
  return true;
46868
46929
  });
@@ -46917,6 +46978,9 @@ var ClassExtractor = class {
46917
46978
  const modifiers = (_a2 = this.declaration.modifiers) != null ? _a2 : [];
46918
46979
  return modifiers.some((mod) => mod.kind === import_typescript102.default.SyntaxKind.AbstractKeyword);
46919
46980
  }
46981
+ hasPrivateComputedProperty(property2) {
46982
+ return import_typescript102.default.isComputedPropertyName(property2.name) && property2.name.expression.getText().startsWith("\u0275");
46983
+ }
46920
46984
  };
46921
46985
  var DirectiveExtractor = class extends ClassExtractor {
46922
46986
  constructor(declaration, reference2, metadata, checker) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.2.7
2
+ * @license Angular v18.2.9
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -81,6 +81,8 @@ export declare abstract class ComponentFixture<T> {
81
81
  * Set whether the fixture should autodetect changes.
82
82
  *
83
83
  * Also runs detectChanges once so that any existing change is detected.
84
+ *
85
+ * @param autoDetect Whether to autodetect changes. By default, `true`.
84
86
  */
85
87
  abstract autoDetectChanges(autoDetect?: boolean): void;
86
88
  /**