@angular/compiler 20.0.0-next.7 → 20.0.0-next.8

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v20.0.0-next.7
2
+ * @license Angular v20.0.0-next.8
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -397,6 +397,15 @@ class SelectorContext {
397
397
  return result;
398
398
  }
399
399
  }
400
+ class SelectorlessMatcher {
401
+ registry;
402
+ constructor(registry) {
403
+ this.registry = registry;
404
+ }
405
+ match(name) {
406
+ return this.registry.get(name) ?? null;
407
+ }
408
+ }
400
409
 
401
410
  // Attention:
402
411
  // This file duplicates types and values from @angular/core
@@ -928,6 +937,7 @@ var BinaryOperator;
928
937
  BinaryOperator[BinaryOperator["BiggerEquals"] = 16] = "BiggerEquals";
929
938
  BinaryOperator[BinaryOperator["NullishCoalesce"] = 17] = "NullishCoalesce";
930
939
  BinaryOperator[BinaryOperator["Exponentiation"] = 18] = "Exponentiation";
940
+ BinaryOperator[BinaryOperator["In"] = 19] = "In";
931
941
  })(BinaryOperator || (BinaryOperator = {}));
932
942
  function nullSafeIsEquivalent(base, other) {
933
943
  if (base == null || other == null) {
@@ -3835,6 +3845,9 @@ class AbstractEmitterVisitor {
3835
3845
  case BinaryOperator.NullishCoalesce:
3836
3846
  opStr = '??';
3837
3847
  break;
3848
+ case BinaryOperator.In:
3849
+ opStr = 'in';
3850
+ break;
3838
3851
  default:
3839
3852
  throw new Error(`Unknown operator ${ast.operator}`);
3840
3853
  }
@@ -12191,6 +12204,7 @@ const BINARY_OPERATORS = new Map([
12191
12204
  ['??', BinaryOperator.NullishCoalesce],
12192
12205
  ['||', BinaryOperator.Or],
12193
12206
  ['+', BinaryOperator.Plus],
12207
+ ['in', BinaryOperator.In],
12194
12208
  ]);
12195
12209
  function namespaceForKey(namespacePrefixKey) {
12196
12210
  const NAMESPACES = new Map([
@@ -18246,6 +18260,7 @@ const KEYWORDS = [
18246
18260
  'this',
18247
18261
  'typeof',
18248
18262
  'void',
18263
+ 'in',
18249
18264
  ];
18250
18265
  class Lexer {
18251
18266
  tokenize(text) {
@@ -18313,6 +18328,9 @@ class Token {
18313
18328
  isKeywordVoid() {
18314
18329
  return this.type === TokenType.Keyword && this.strValue === 'void';
18315
18330
  }
18331
+ isKeywordIn() {
18332
+ return this.type === TokenType.Keyword && this.strValue === 'in';
18333
+ }
18316
18334
  isError() {
18317
18335
  return this.type === TokenType.Error;
18318
18336
  }
@@ -19356,16 +19374,17 @@ class _ParseAST {
19356
19374
  return result;
19357
19375
  }
19358
19376
  parseRelational() {
19359
- // '<', '>', '<=', '>='
19377
+ // '<', '>', '<=', '>=', 'in'
19360
19378
  const start = this.inputIndex;
19361
19379
  let result = this.parseAdditive();
19362
- while (this.next.type == TokenType.Operator) {
19380
+ while (this.next.type == TokenType.Operator || this.next.isKeywordIn) {
19363
19381
  const operator = this.next.strValue;
19364
19382
  switch (operator) {
19365
19383
  case '<':
19366
19384
  case '>':
19367
19385
  case '<=':
19368
19386
  case '>=':
19387
+ case 'in':
19369
19388
  this.advance();
19370
19389
  const right = this.parseAdditive();
19371
19390
  result = new Binary(this.span(start), this.sourceSpan(start), operator, result, right);
@@ -19528,6 +19547,10 @@ class _ParseAST {
19528
19547
  this.advance();
19529
19548
  return new LiteralPrimitive(this.span(start), this.sourceSpan(start), false);
19530
19549
  }
19550
+ else if (this.next.isKeywordIn()) {
19551
+ this.advance();
19552
+ return new LiteralPrimitive(this.span(start), this.sourceSpan(start), 'in');
19553
+ }
19531
19554
  else if (this.next.isKeywordThis()) {
19532
19555
  this.advance();
19533
19556
  return new ThisReceiver(this.span(start), this.sourceSpan(start));
@@ -29270,6 +29293,7 @@ class HtmlAstToIvyAst {
29270
29293
  return null;
29271
29294
  }
29272
29295
  const { attributes, boundEvents, references, templateVariables, elementHasInlineTemplate, parsedProperties, templateParsedProperties, i18nAttrsMeta, } = this.prepareAttributes(component.attrs, false);
29296
+ this.validateSelectorlessReferences(references);
29273
29297
  const directives = this.extractDirectives(component);
29274
29298
  let children;
29275
29299
  if (component.attrs.find((attr) => attr.name === 'ngNonBindable')) {
@@ -29572,6 +29596,7 @@ class HtmlAstToIvyAst {
29572
29596
  continue;
29573
29597
  }
29574
29598
  const { attributes, parsedProperties, boundEvents, references, i18nAttrsMeta } = this.prepareAttributes(directive.attrs, false);
29599
+ this.validateSelectorlessReferences(references);
29575
29600
  const { bound: inputs } = this.categorizePropertyAttributes(elementName, parsedProperties, i18nAttrsMeta);
29576
29601
  for (const input of inputs) {
29577
29602
  if (input.type !== BindingType.Property && input.type !== BindingType.TwoWay) {
@@ -29655,6 +29680,23 @@ class HtmlAstToIvyAst {
29655
29680
  /* isAssignmentEvent */ true, sourceSpan, valueSpan || sourceSpan, targetMatchableAttrs, events, keySpan);
29656
29681
  addEvents(events, boundEvents);
29657
29682
  }
29683
+ validateSelectorlessReferences(references) {
29684
+ if (references.length === 0) {
29685
+ return;
29686
+ }
29687
+ const seenNames = new Set();
29688
+ for (const ref of references) {
29689
+ if (ref.value.length > 0) {
29690
+ this.reportError('Cannot specify a value for a local reference in this context', ref.valueSpan || ref.sourceSpan);
29691
+ }
29692
+ else if (seenNames.has(ref.name)) {
29693
+ this.reportError('Duplicate reference names are not allowed', ref.sourceSpan);
29694
+ }
29695
+ else {
29696
+ seenNames.add(ref.name);
29697
+ }
29698
+ }
29699
+ }
29658
29700
  reportError(message, sourceSpan, level = ParseErrorLevel.ERROR) {
29659
29701
  this.errors.push(new ParseError(sourceSpan, message, level));
29660
29702
  }
@@ -29756,6 +29798,7 @@ function parseTemplate(template, templateUrl, options = {}) {
29756
29798
  tokenizeExpansionForms: true,
29757
29799
  tokenizeBlocks: options.enableBlockSyntax ?? true,
29758
29800
  tokenizeLet: options.enableLetSyntax ?? true,
29801
+ selectorlessEnabled: options.enableSelectorless ?? false,
29759
29802
  });
29760
29803
  if (!options.alwaysAttemptHtmlToR3AstConversion &&
29761
29804
  parseResult.errors &&
@@ -30514,9 +30557,9 @@ class Scope {
30514
30557
  */
30515
30558
  namedEntities = new Map();
30516
30559
  /**
30517
- * Set of elements that belong to this scope.
30560
+ * Set of element-like nodes that belong to this scope.
30518
30561
  */
30519
- elementsInScope = new Set();
30562
+ elementLikeInScope = new Set();
30520
30563
  /**
30521
30564
  * Child `Scope`s for immediately nested `ScopedNode`s.
30522
30565
  */
@@ -30577,12 +30620,7 @@ class Scope {
30577
30620
  }
30578
30621
  }
30579
30622
  visitElement(element) {
30580
- element.directives.forEach((node) => node.visit(this));
30581
- // `Element`s in the template may have `Reference`s which are captured in the scope.
30582
- element.references.forEach((node) => this.visitReference(node));
30583
- // Recurse into the `Element`'s children.
30584
- element.children.forEach((node) => node.visit(this));
30585
- this.elementsInScope.add(element);
30623
+ this.visitElementLike(element);
30586
30624
  }
30587
30625
  visitTemplate(template) {
30588
30626
  template.directives.forEach((node) => node.visit(this));
@@ -30641,10 +30679,10 @@ class Scope {
30641
30679
  this.maybeDeclare(decl);
30642
30680
  }
30643
30681
  visitComponent(component) {
30644
- throw new Error('TODO');
30682
+ this.visitElementLike(component);
30645
30683
  }
30646
30684
  visitDirective(directive) {
30647
- throw new Error('TODO');
30685
+ directive.references.forEach((current) => this.visitReference(current));
30648
30686
  }
30649
30687
  // Unused visitors.
30650
30688
  visitBoundAttribute(attr) { }
@@ -30655,6 +30693,12 @@ class Scope {
30655
30693
  visitIcu(icu) { }
30656
30694
  visitDeferredTrigger(trigger) { }
30657
30695
  visitUnknownBlock(block) { }
30696
+ visitElementLike(node) {
30697
+ node.directives.forEach((current) => current.visit(this));
30698
+ node.references.forEach((current) => this.visitReference(current));
30699
+ node.children.forEach((current) => current.visit(this));
30700
+ this.elementLikeInScope.add(node);
30701
+ }
30658
30702
  maybeDeclare(thing) {
30659
30703
  // Declare something with a name, as long as that name isn't taken.
30660
30704
  if (!this.namedEntities.has(thing.name)) {
@@ -30704,15 +30748,15 @@ class Scope {
30704
30748
  * Usually used via the static `apply()` method.
30705
30749
  */
30706
30750
  class DirectiveBinder {
30707
- matcher;
30751
+ directiveMatcher;
30708
30752
  directives;
30709
30753
  eagerDirectives;
30710
30754
  bindings;
30711
30755
  references;
30712
30756
  // Indicates whether we are visiting elements within a `defer` block
30713
30757
  isInDeferBlock = false;
30714
- constructor(matcher, directives, eagerDirectives, bindings, references) {
30715
- this.matcher = matcher;
30758
+ constructor(directiveMatcher, directives, eagerDirectives, bindings, references) {
30759
+ this.directiveMatcher = directiveMatcher;
30716
30760
  this.directives = directives;
30717
30761
  this.eagerDirectives = eagerDirectives;
30718
30762
  this.bindings = bindings;
@@ -30730,8 +30774,8 @@ class DirectiveBinder {
30730
30774
  * map which resolves #references (`Reference`s) within the template to the named directive or
30731
30775
  * template node.
30732
30776
  */
30733
- static apply(template, selectorMatcher, directives, eagerDirectives, bindings, references) {
30734
- const matcher = new DirectiveBinder(selectorMatcher, directives, eagerDirectives, bindings, references);
30777
+ static apply(template, directiveMatcher, directives, eagerDirectives, bindings, references) {
30778
+ const matcher = new DirectiveBinder(directiveMatcher, directives, eagerDirectives, bindings, references);
30735
30779
  matcher.ingest(template);
30736
30780
  }
30737
30781
  ingest(template) {
@@ -30743,23 +30787,129 @@ class DirectiveBinder {
30743
30787
  visitTemplate(template) {
30744
30788
  this.visitElementOrTemplate(template);
30745
30789
  }
30790
+ visitDeferredBlock(deferred) {
30791
+ const wasInDeferBlock = this.isInDeferBlock;
30792
+ this.isInDeferBlock = true;
30793
+ deferred.children.forEach((child) => child.visit(this));
30794
+ this.isInDeferBlock = wasInDeferBlock;
30795
+ deferred.placeholder?.visit(this);
30796
+ deferred.loading?.visit(this);
30797
+ deferred.error?.visit(this);
30798
+ }
30799
+ visitDeferredBlockPlaceholder(block) {
30800
+ block.children.forEach((child) => child.visit(this));
30801
+ }
30802
+ visitDeferredBlockError(block) {
30803
+ block.children.forEach((child) => child.visit(this));
30804
+ }
30805
+ visitDeferredBlockLoading(block) {
30806
+ block.children.forEach((child) => child.visit(this));
30807
+ }
30808
+ visitSwitchBlock(block) {
30809
+ block.cases.forEach((node) => node.visit(this));
30810
+ }
30811
+ visitSwitchBlockCase(block) {
30812
+ block.children.forEach((node) => node.visit(this));
30813
+ }
30814
+ visitForLoopBlock(block) {
30815
+ block.item.visit(this);
30816
+ block.contextVariables.forEach((v) => v.visit(this));
30817
+ block.children.forEach((node) => node.visit(this));
30818
+ block.empty?.visit(this);
30819
+ }
30820
+ visitForLoopBlockEmpty(block) {
30821
+ block.children.forEach((node) => node.visit(this));
30822
+ }
30823
+ visitIfBlock(block) {
30824
+ block.branches.forEach((node) => node.visit(this));
30825
+ }
30826
+ visitIfBlockBranch(block) {
30827
+ block.expressionAlias?.visit(this);
30828
+ block.children.forEach((node) => node.visit(this));
30829
+ }
30830
+ visitContent(content) {
30831
+ content.children.forEach((child) => child.visit(this));
30832
+ }
30833
+ visitComponent(node) {
30834
+ const directives = [];
30835
+ let componentMetas = null;
30836
+ if (this.directiveMatcher instanceof SelectorlessMatcher) {
30837
+ componentMetas = this.directiveMatcher.match(node.componentName);
30838
+ if (componentMetas !== null) {
30839
+ directives.push(...componentMetas);
30840
+ }
30841
+ for (const directive of node.directives) {
30842
+ const directiveMetas = this.directiveMatcher.match(directive.name);
30843
+ if (directiveMetas !== null) {
30844
+ directives.push(...directiveMetas);
30845
+ }
30846
+ }
30847
+ }
30848
+ this.trackMatchedDirectives(node, directives);
30849
+ if (componentMetas !== null) {
30850
+ this.trackSelectorlessBindings(node, componentMetas);
30851
+ }
30852
+ node.directives.forEach((directive) => directive.visit(this));
30853
+ node.children.forEach((child) => child.visit(this));
30854
+ }
30855
+ visitDirective(node) {
30856
+ const directives = this.directiveMatcher instanceof SelectorlessMatcher
30857
+ ? this.directiveMatcher.match(node.name)
30858
+ : null;
30859
+ if (directives !== null) {
30860
+ this.trackSelectorlessBindings(node, directives);
30861
+ }
30862
+ }
30746
30863
  visitElementOrTemplate(node) {
30747
- // First, determine the HTML shape of the node for the purpose of directive matching.
30748
- // Do this by building up a `CssSelector` for the node.
30749
- const cssSelector = createCssSelectorFromNode(node);
30750
- // TODO(crisbeto): account for selectorless directives here.
30751
- if (node.directives.length > 0) {
30752
- throw new Error('TODO');
30753
- }
30754
- // Next, use the `SelectorMatcher` to get the list of directives on the node.
30755
30864
  const directives = [];
30756
- this.matcher.match(cssSelector, (_selector, results) => directives.push(...results));
30865
+ if (this.directiveMatcher instanceof SelectorMatcher) {
30866
+ // First, determine the HTML shape of the node for the purpose of directive matching.
30867
+ // Do this by building up a `CssSelector` for the node.
30868
+ const cssSelector = createCssSelectorFromNode(node);
30869
+ this.directiveMatcher.match(cssSelector, (_selector, results) => {
30870
+ directives.push(...results);
30871
+ });
30872
+ this.trackSelectorMatchedBindings(node, directives);
30873
+ }
30874
+ else {
30875
+ for (const directive of node.directives) {
30876
+ const matchedDirectives = this.directiveMatcher.match(directive.name);
30877
+ if (matchedDirectives !== null) {
30878
+ directives.push(...matchedDirectives);
30879
+ }
30880
+ }
30881
+ }
30882
+ this.trackMatchedDirectives(node, directives);
30883
+ node.directives.forEach((directive) => directive.visit(this));
30884
+ node.children.forEach((child) => child.visit(this));
30885
+ }
30886
+ trackMatchedDirectives(node, directives) {
30757
30887
  if (directives.length > 0) {
30758
30888
  this.directives.set(node, directives);
30759
30889
  if (!this.isInDeferBlock) {
30760
30890
  this.eagerDirectives.push(...directives);
30761
30891
  }
30762
30892
  }
30893
+ }
30894
+ trackSelectorlessBindings(node, metas) {
30895
+ const setBinding = (meta, attribute, ioType) => {
30896
+ if (meta[ioType].hasBindingPropertyName(attribute.name)) {
30897
+ this.bindings.set(attribute, meta);
30898
+ }
30899
+ };
30900
+ for (const meta of metas) {
30901
+ node.inputs.forEach((input) => setBinding(meta, input, 'inputs'));
30902
+ node.attributes.forEach((attr) => setBinding(meta, attr, 'inputs'));
30903
+ node.outputs.forEach((output) => setBinding(meta, output, 'outputs'));
30904
+ }
30905
+ // TODO(crisbeto): currently it's unclear how references should behave under selectorless,
30906
+ // given that there's one named class which can bring in multiple host directives.
30907
+ // For the time being only register the first directive as the reference target.
30908
+ if (metas.length > 0) {
30909
+ node.references.forEach((ref) => this.references.set(ref, { directive: metas[0], node: node }));
30910
+ }
30911
+ }
30912
+ trackSelectorMatchedBindings(node, directives) {
30763
30913
  // Resolve any references that are created on this node.
30764
30914
  node.references.forEach((ref) => {
30765
30915
  let dirTarget = null;
@@ -30790,6 +30940,7 @@ class DirectiveBinder {
30790
30940
  this.references.set(ref, node);
30791
30941
  }
30792
30942
  });
30943
+ // Associate attributes/bindings on the node with directives or with the node itself.
30793
30944
  const setAttributeBinding = (attribute, ioType) => {
30794
30945
  const dir = directives.find((dir) => dir[ioType].hasBindingPropertyName(attribute.name));
30795
30946
  const binding = dir !== undefined ? dir : node;
@@ -30804,57 +30955,6 @@ class DirectiveBinder {
30804
30955
  }
30805
30956
  // Node outputs (bound events) can be bound to an output on a directive.
30806
30957
  node.outputs.forEach((output) => setAttributeBinding(output, 'outputs'));
30807
- // Recurse into the node's children.
30808
- node.children.forEach((child) => child.visit(this));
30809
- }
30810
- visitDeferredBlock(deferred) {
30811
- const wasInDeferBlock = this.isInDeferBlock;
30812
- this.isInDeferBlock = true;
30813
- deferred.children.forEach((child) => child.visit(this));
30814
- this.isInDeferBlock = wasInDeferBlock;
30815
- deferred.placeholder?.visit(this);
30816
- deferred.loading?.visit(this);
30817
- deferred.error?.visit(this);
30818
- }
30819
- visitDeferredBlockPlaceholder(block) {
30820
- block.children.forEach((child) => child.visit(this));
30821
- }
30822
- visitDeferredBlockError(block) {
30823
- block.children.forEach((child) => child.visit(this));
30824
- }
30825
- visitDeferredBlockLoading(block) {
30826
- block.children.forEach((child) => child.visit(this));
30827
- }
30828
- visitSwitchBlock(block) {
30829
- block.cases.forEach((node) => node.visit(this));
30830
- }
30831
- visitSwitchBlockCase(block) {
30832
- block.children.forEach((node) => node.visit(this));
30833
- }
30834
- visitForLoopBlock(block) {
30835
- block.item.visit(this);
30836
- block.contextVariables.forEach((v) => v.visit(this));
30837
- block.children.forEach((node) => node.visit(this));
30838
- block.empty?.visit(this);
30839
- }
30840
- visitForLoopBlockEmpty(block) {
30841
- block.children.forEach((node) => node.visit(this));
30842
- }
30843
- visitIfBlock(block) {
30844
- block.branches.forEach((node) => node.visit(this));
30845
- }
30846
- visitIfBlockBranch(block) {
30847
- block.expressionAlias?.visit(this);
30848
- block.children.forEach((node) => node.visit(this));
30849
- }
30850
- visitContent(content) {
30851
- content.children.forEach((child) => child.visit(this));
30852
- }
30853
- visitComponent(component) {
30854
- throw new Error('TODO');
30855
- }
30856
- visitDirective(directive) {
30857
- throw new Error('TODO');
30858
30958
  }
30859
30959
  // Unused visitors.
30860
30960
  visitVariable(variable) { }
@@ -31013,10 +31113,16 @@ class TemplateBinder extends RecursiveAstVisitor {
31013
31113
  }
31014
31114
  }
31015
31115
  visitComponent(component) {
31016
- throw new Error('TODO');
31116
+ component.inputs.forEach(this.visitNode);
31117
+ component.outputs.forEach(this.visitNode);
31118
+ component.directives.forEach(this.visitNode);
31119
+ component.children.forEach(this.visitNode);
31120
+ component.references.forEach(this.visitNode);
31017
31121
  }
31018
31122
  visitDirective(directive) {
31019
- throw new Error('TODO');
31123
+ directive.inputs.forEach(this.visitNode);
31124
+ directive.outputs.forEach(this.visitNode);
31125
+ directive.references.forEach(this.visitNode);
31020
31126
  }
31021
31127
  // Unused template visitors
31022
31128
  visitText(text) { }
@@ -31260,7 +31366,7 @@ class R3BoundTarget {
31260
31366
  const stack = [this.deferredScopes.get(block)];
31261
31367
  while (stack.length > 0) {
31262
31368
  const current = stack.pop();
31263
- if (current.elementsInScope.has(element)) {
31369
+ if (current.elementLikeInScope.has(element)) {
31264
31370
  return true;
31265
31371
  }
31266
31372
  stack.push(...current.childScopes.values());
@@ -31287,7 +31393,9 @@ class R3BoundTarget {
31287
31393
  if (target instanceof Element$1) {
31288
31394
  return target;
31289
31395
  }
31290
- if (target instanceof Template) {
31396
+ if (target instanceof Template ||
31397
+ target.node instanceof Component$1 ||
31398
+ target.node instanceof Directive$1) {
31291
31399
  return null;
31292
31400
  }
31293
31401
  return this.referenceTargetToElement(target.node);
@@ -33767,7 +33875,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
33767
33875
  function compileDeclareClassMetadata(metadata) {
33768
33876
  const definitionMap = new DefinitionMap();
33769
33877
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
33770
- definitionMap.set('version', literal('20.0.0-next.7'));
33878
+ definitionMap.set('version', literal('20.0.0-next.8'));
33771
33879
  definitionMap.set('ngImport', importExpr(Identifiers.core));
33772
33880
  definitionMap.set('type', metadata.type);
33773
33881
  definitionMap.set('decorators', metadata.decorators);
@@ -33785,7 +33893,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
33785
33893
  callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? literal(null));
33786
33894
  callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? literal(null));
33787
33895
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
33788
- definitionMap.set('version', literal('20.0.0-next.7'));
33896
+ definitionMap.set('version', literal('20.0.0-next.8'));
33789
33897
  definitionMap.set('ngImport', importExpr(Identifiers.core));
33790
33898
  definitionMap.set('type', metadata.type);
33791
33899
  definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
@@ -33880,7 +33988,7 @@ function createDirectiveDefinitionMap(meta) {
33880
33988
  const definitionMap = new DefinitionMap();
33881
33989
  const minVersion = getMinimumVersionForPartialOutput(meta);
33882
33990
  definitionMap.set('minVersion', literal(minVersion));
33883
- definitionMap.set('version', literal('20.0.0-next.7'));
33991
+ definitionMap.set('version', literal('20.0.0-next.8'));
33884
33992
  // e.g. `type: MyDirective`
33885
33993
  definitionMap.set('type', meta.type.value);
33886
33994
  if (meta.isStandalone !== undefined) {
@@ -34296,7 +34404,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
34296
34404
  function compileDeclareFactoryFunction(meta) {
34297
34405
  const definitionMap = new DefinitionMap();
34298
34406
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
34299
- definitionMap.set('version', literal('20.0.0-next.7'));
34407
+ definitionMap.set('version', literal('20.0.0-next.8'));
34300
34408
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34301
34409
  definitionMap.set('type', meta.type.value);
34302
34410
  definitionMap.set('deps', compileDependencies(meta.deps));
@@ -34331,7 +34439,7 @@ function compileDeclareInjectableFromMetadata(meta) {
34331
34439
  function createInjectableDefinitionMap(meta) {
34332
34440
  const definitionMap = new DefinitionMap();
34333
34441
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
34334
- definitionMap.set('version', literal('20.0.0-next.7'));
34442
+ definitionMap.set('version', literal('20.0.0-next.8'));
34335
34443
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34336
34444
  definitionMap.set('type', meta.type.value);
34337
34445
  // Only generate providedIn property if it has a non-null value
@@ -34382,7 +34490,7 @@ function compileDeclareInjectorFromMetadata(meta) {
34382
34490
  function createInjectorDefinitionMap(meta) {
34383
34491
  const definitionMap = new DefinitionMap();
34384
34492
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
34385
- definitionMap.set('version', literal('20.0.0-next.7'));
34493
+ definitionMap.set('version', literal('20.0.0-next.8'));
34386
34494
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34387
34495
  definitionMap.set('type', meta.type.value);
34388
34496
  definitionMap.set('providers', meta.providers);
@@ -34415,7 +34523,7 @@ function createNgModuleDefinitionMap(meta) {
34415
34523
  throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
34416
34524
  }
34417
34525
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
34418
- definitionMap.set('version', literal('20.0.0-next.7'));
34526
+ definitionMap.set('version', literal('20.0.0-next.8'));
34419
34527
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34420
34528
  definitionMap.set('type', meta.type.value);
34421
34529
  // We only generate the keys in the metadata if the arrays contain values.
@@ -34466,7 +34574,7 @@ function compileDeclarePipeFromMetadata(meta) {
34466
34574
  function createPipeDefinitionMap(meta) {
34467
34575
  const definitionMap = new DefinitionMap();
34468
34576
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION));
34469
- definitionMap.set('version', literal('20.0.0-next.7'));
34577
+ definitionMap.set('version', literal('20.0.0-next.8'));
34470
34578
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34471
34579
  // e.g. `type: MyPipe`
34472
34580
  definitionMap.set('type', meta.type.value);
@@ -34624,7 +34732,7 @@ function compileHmrUpdateCallback(definitions, constantStatements, meta) {
34624
34732
  * @description
34625
34733
  * Entry point for all public APIs of the compiler package.
34626
34734
  */
34627
- const VERSION = new Version('20.0.0-next.7');
34735
+ const VERSION = new Version('20.0.0-next.8');
34628
34736
 
34629
34737
  //////////////////////////////////////
34630
34738
  // THIS FILE HAS GLOBAL SIDE EFFECT //
@@ -34650,5 +34758,5 @@ const VERSION = new Version('20.0.0-next.7');
34650
34758
  // the late binding of the Compiler to the @angular/core for jit compilation.
34651
34759
  publishFacade(_global);
34652
34760
 
34653
- export { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunctionExpr, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CommaExpr, Comment, CompilerConfig, Component, Conditional, ConditionalExpr, ConstantPool, CssSelector, DEFAULT_INTERPOLATION_CONFIG, DYNAMIC_TYPE, DeclareFunctionStmt, DeclareVarStmt, Directive, DomElementSchemaRegistry, DynamicImportExpr, EOF, Element, ElementSchemaRegistry, EmitterVisitorContext, EmptyExpr$1 as EmptyExpr, Expansion, ExpansionCase, Expression, ExpressionBinding, ExpressionStatement, ExpressionType, ExternalExpr, ExternalReference, FactoryTarget$1 as FactoryTarget, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InterpolationConfig, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, KeyedWrite, LeadingComment, LetDeclaration, Lexer, LiteralArray, LiteralArrayExpr, LiteralExpr, LiteralMap, LiteralMapExpr, LiteralPrimitive, LocalizedString, MapType, MessageBundle, NONE_TYPE, NO_ERRORS_SCHEMA, NodeWithI18n, NonNullAssert, NotExpr, ParenthesizedExpr, ParenthesizedExpression, ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseSpan, ParseTreeResult, ParsedEvent, ParsedEventType, ParsedProperty, ParsedPropertyType, ParsedVariable, Parser, ParserError, PrefixNot, PropertyRead, PropertyWrite, Identifiers as R3Identifiers, R3NgModuleMetadataKind, R3SelectorScopeMode, R3TargetBinder, R3TemplateDependencyKind, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveVisitor, ResourceLoader, ReturnStatement, STRING_TYPE, SafeCall, SafeKeyedRead, SafePropertyRead, SelectorContext, SelectorListContext, SelectorMatcher, Serializer, SplitInterpolation, Statement, StmtModifier, StringToken, StringTokenKind, TagContentType, TaggedTemplateLiteral, TaggedTemplateLiteralExpr, TemplateBindingParseResult, TemplateLiteral, TemplateLiteralElement, TemplateLiteralElementExpr, TemplateLiteralExpr, Text, ThisReceiver, BlockNode as TmplAstBlockNode, BoundAttribute as TmplAstBoundAttribute, BoundDeferredTrigger as TmplAstBoundDeferredTrigger, BoundEvent as TmplAstBoundEvent, BoundText as TmplAstBoundText, Component$1 as TmplAstComponent, Content as TmplAstContent, DeferredBlock as TmplAstDeferredBlock, DeferredBlockError as TmplAstDeferredBlockError, DeferredBlockLoading as TmplAstDeferredBlockLoading, DeferredBlockPlaceholder as TmplAstDeferredBlockPlaceholder, DeferredTrigger as TmplAstDeferredTrigger, Directive$1 as TmplAstDirective, Element$1 as TmplAstElement, ForLoopBlock as TmplAstForLoopBlock, ForLoopBlockEmpty as TmplAstForLoopBlockEmpty, HostElement as TmplAstHostElement, HoverDeferredTrigger as TmplAstHoverDeferredTrigger, Icu$1 as TmplAstIcu, IdleDeferredTrigger as TmplAstIdleDeferredTrigger, IfBlock as TmplAstIfBlock, IfBlockBranch as TmplAstIfBlockBranch, ImmediateDeferredTrigger as TmplAstImmediateDeferredTrigger, InteractionDeferredTrigger as TmplAstInteractionDeferredTrigger, LetDeclaration$1 as TmplAstLetDeclaration, NeverDeferredTrigger as TmplAstNeverDeferredTrigger, RecursiveVisitor$1 as TmplAstRecursiveVisitor, Reference as TmplAstReference, SwitchBlock as TmplAstSwitchBlock, SwitchBlockCase as TmplAstSwitchBlockCase, Template as TmplAstTemplate, Text$3 as TmplAstText, TextAttribute as TmplAstTextAttribute, TimerDeferredTrigger as TmplAstTimerDeferredTrigger, UnknownBlock as TmplAstUnknownBlock, Variable as TmplAstVariable, ViewportDeferredTrigger as TmplAstViewportDeferredTrigger, Token, TokenType, TransplantedType, TreeError, Type, TypeModifier, TypeofExpr, TypeofExpression, Unary, UnaryOperator, UnaryOperatorExpr, VERSION, VariableBinding, Version, ViewEncapsulation, VoidExpr, VoidExpression, WrappedNodeExpr, WriteKeyExpr, WritePropExpr, WriteVarExpr, Xliff, Xliff2, Xmb, XmlParser, Xtb, compileClassDebugInfo, compileClassMetadata, compileComponentClassMetadata, compileComponentDeclareClassMetadata, compileComponentFromMetadata, compileDeclareClassMetadata, compileDeclareComponentFromMetadata, compileDeclareDirectiveFromMetadata, compileDeclareFactoryFunction, compileDeclareInjectableFromMetadata, compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileDeclarePipeFromMetadata, compileDeferResolverFunction, compileDirectiveFromMetadata, compileFactoryFunction, compileHmrInitializer, compileHmrUpdateCallback, compileInjectable, compileInjector, compileNgModule, compileOpaqueAsyncClassMetadata, compilePipeFromMetadata, computeMsgId, core, createCssSelectorFromNode, createInjectableType, createMayBeForwardRefExpression, devOnlyGuardedExpression, emitDistinctChangesOnlyDefaultValue, encapsulateStyle, findMatchingDirectivesAndPipes, getHtmlTagDefinition, getNsPrefix, getSafePropertyAccessString, identifierName, isNgContainer, isNgContent, isNgTemplate, jsDocComment, leadingComment, literal, literalMap, makeBindingParser, mergeNsAndName, output_ast as outputAst, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, sanitizeIdentifier, splitNsName, visitAll$1 as tmplAstVisitAll, verifyHostBindings, visitAll };
34761
+ export { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunctionExpr, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CommaExpr, Comment, CompilerConfig, Component, Conditional, ConditionalExpr, ConstantPool, CssSelector, DEFAULT_INTERPOLATION_CONFIG, DYNAMIC_TYPE, DeclareFunctionStmt, DeclareVarStmt, Directive, DomElementSchemaRegistry, DynamicImportExpr, EOF, Element, ElementSchemaRegistry, EmitterVisitorContext, EmptyExpr$1 as EmptyExpr, Expansion, ExpansionCase, Expression, ExpressionBinding, ExpressionStatement, ExpressionType, ExternalExpr, ExternalReference, FactoryTarget$1 as FactoryTarget, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InterpolationConfig, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, KeyedWrite, LeadingComment, LetDeclaration, Lexer, LiteralArray, LiteralArrayExpr, LiteralExpr, LiteralMap, LiteralMapExpr, LiteralPrimitive, LocalizedString, MapType, MessageBundle, NONE_TYPE, NO_ERRORS_SCHEMA, NodeWithI18n, NonNullAssert, NotExpr, ParenthesizedExpr, ParenthesizedExpression, ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseSpan, ParseTreeResult, ParsedEvent, ParsedEventType, ParsedProperty, ParsedPropertyType, ParsedVariable, Parser, ParserError, PrefixNot, PropertyRead, PropertyWrite, Identifiers as R3Identifiers, R3NgModuleMetadataKind, R3SelectorScopeMode, R3TargetBinder, R3TemplateDependencyKind, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveVisitor, ResourceLoader, ReturnStatement, STRING_TYPE, SafeCall, SafeKeyedRead, SafePropertyRead, SelectorContext, SelectorListContext, SelectorMatcher, SelectorlessMatcher, Serializer, SplitInterpolation, Statement, StmtModifier, StringToken, StringTokenKind, TagContentType, TaggedTemplateLiteral, TaggedTemplateLiteralExpr, TemplateBindingParseResult, TemplateLiteral, TemplateLiteralElement, TemplateLiteralElementExpr, TemplateLiteralExpr, Text, ThisReceiver, BlockNode as TmplAstBlockNode, BoundAttribute as TmplAstBoundAttribute, BoundDeferredTrigger as TmplAstBoundDeferredTrigger, BoundEvent as TmplAstBoundEvent, BoundText as TmplAstBoundText, Component$1 as TmplAstComponent, Content as TmplAstContent, DeferredBlock as TmplAstDeferredBlock, DeferredBlockError as TmplAstDeferredBlockError, DeferredBlockLoading as TmplAstDeferredBlockLoading, DeferredBlockPlaceholder as TmplAstDeferredBlockPlaceholder, DeferredTrigger as TmplAstDeferredTrigger, Directive$1 as TmplAstDirective, Element$1 as TmplAstElement, ForLoopBlock as TmplAstForLoopBlock, ForLoopBlockEmpty as TmplAstForLoopBlockEmpty, HostElement as TmplAstHostElement, HoverDeferredTrigger as TmplAstHoverDeferredTrigger, Icu$1 as TmplAstIcu, IdleDeferredTrigger as TmplAstIdleDeferredTrigger, IfBlock as TmplAstIfBlock, IfBlockBranch as TmplAstIfBlockBranch, ImmediateDeferredTrigger as TmplAstImmediateDeferredTrigger, InteractionDeferredTrigger as TmplAstInteractionDeferredTrigger, LetDeclaration$1 as TmplAstLetDeclaration, NeverDeferredTrigger as TmplAstNeverDeferredTrigger, RecursiveVisitor$1 as TmplAstRecursiveVisitor, Reference as TmplAstReference, SwitchBlock as TmplAstSwitchBlock, SwitchBlockCase as TmplAstSwitchBlockCase, Template as TmplAstTemplate, Text$3 as TmplAstText, TextAttribute as TmplAstTextAttribute, TimerDeferredTrigger as TmplAstTimerDeferredTrigger, UnknownBlock as TmplAstUnknownBlock, Variable as TmplAstVariable, ViewportDeferredTrigger as TmplAstViewportDeferredTrigger, Token, TokenType, TransplantedType, TreeError, Type, TypeModifier, TypeofExpr, TypeofExpression, Unary, UnaryOperator, UnaryOperatorExpr, VERSION, VariableBinding, Version, ViewEncapsulation, VoidExpr, VoidExpression, WrappedNodeExpr, WriteKeyExpr, WritePropExpr, WriteVarExpr, Xliff, Xliff2, Xmb, XmlParser, Xtb, compileClassDebugInfo, compileClassMetadata, compileComponentClassMetadata, compileComponentDeclareClassMetadata, compileComponentFromMetadata, compileDeclareClassMetadata, compileDeclareComponentFromMetadata, compileDeclareDirectiveFromMetadata, compileDeclareFactoryFunction, compileDeclareInjectableFromMetadata, compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileDeclarePipeFromMetadata, compileDeferResolverFunction, compileDirectiveFromMetadata, compileFactoryFunction, compileHmrInitializer, compileHmrUpdateCallback, compileInjectable, compileInjector, compileNgModule, compileOpaqueAsyncClassMetadata, compilePipeFromMetadata, computeMsgId, core, createCssSelectorFromNode, createInjectableType, createMayBeForwardRefExpression, devOnlyGuardedExpression, emitDistinctChangesOnlyDefaultValue, encapsulateStyle, findMatchingDirectivesAndPipes, getHtmlTagDefinition, getNsPrefix, getSafePropertyAccessString, identifierName, isNgContainer, isNgContent, isNgTemplate, jsDocComment, leadingComment, literal, literalMap, makeBindingParser, mergeNsAndName, output_ast as outputAst, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, sanitizeIdentifier, splitNsName, visitAll$1 as tmplAstVisitAll, verifyHostBindings, visitAll };
34654
34762
  //# sourceMappingURL=compiler.mjs.map