@angular/compiler 21.0.0-next.3 → 21.0.0-next.5

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 v21.0.0-next.3
2
+ * @license Angular v21.0.0-next.5
3
3
  * (c) 2010-2025 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1237,6 +1237,27 @@ class InstantiateExpr extends Expression {
1237
1237
  return new InstantiateExpr(this.classExpr.clone(), this.args.map((arg) => arg.clone()), this.type, this.sourceSpan);
1238
1238
  }
1239
1239
  }
1240
+ let RegularExpressionLiteral$1 = class RegularExpressionLiteral extends Expression {
1241
+ body;
1242
+ flags;
1243
+ constructor(body, flags, sourceSpan) {
1244
+ super(null, sourceSpan);
1245
+ this.body = body;
1246
+ this.flags = flags;
1247
+ }
1248
+ isEquivalent(e) {
1249
+ return e instanceof RegularExpressionLiteral && this.body === e.body && this.flags === e.flags;
1250
+ }
1251
+ isConstant() {
1252
+ return true;
1253
+ }
1254
+ visitExpression(visitor, context) {
1255
+ return visitor.visitRegularExpressionLiteral(this, context);
1256
+ }
1257
+ clone() {
1258
+ return new RegularExpressionLiteral(this.body, this.flags, this.sourceSpan);
1259
+ }
1260
+ };
1240
1261
  class LiteralExpr extends Expression {
1241
1262
  value;
1242
1263
  constructor(value, type, sourceSpan) {
@@ -2030,6 +2051,9 @@ let RecursiveAstVisitor$1 = class RecursiveAstVisitor {
2030
2051
  visitLiteralExpr(ast, context) {
2031
2052
  return this.visitExpression(ast, context);
2032
2053
  }
2054
+ visitRegularExpressionLiteral(ast, context) {
2055
+ return this.visitExpression(ast, context);
2056
+ }
2033
2057
  visitLocalizedString(ast, context) {
2034
2058
  return this.visitExpression(ast, context);
2035
2059
  }
@@ -2290,6 +2314,7 @@ var output_ast = /*#__PURE__*/Object.freeze({
2290
2314
  ReadPropExpr: ReadPropExpr,
2291
2315
  ReadVarExpr: ReadVarExpr,
2292
2316
  RecursiveAstVisitor: RecursiveAstVisitor$1,
2317
+ RegularExpressionLiteral: RegularExpressionLiteral$1,
2293
2318
  ReturnStatement: ReturnStatement,
2294
2319
  STRING_TYPE: STRING_TYPE,
2295
2320
  Statement: Statement,
@@ -2565,6 +2590,9 @@ class GenericKeyFn {
2565
2590
  else if (expr instanceof LiteralExpr) {
2566
2591
  return String(expr.value);
2567
2592
  }
2593
+ else if (expr instanceof RegularExpressionLiteral$1) {
2594
+ return `/${expr.body}/${expr.flags ?? ''}`;
2595
+ }
2568
2596
  else if (expr instanceof LiteralArrayExpr) {
2569
2597
  const entries = [];
2570
2598
  for (const entry of expr.entries) {
@@ -2969,10 +2997,6 @@ class Identifiers {
2969
2997
  name: 'ɵɵExternalStylesFeature',
2970
2998
  moduleName: CORE,
2971
2999
  };
2972
- static AnimationsFeature = {
2973
- name: 'ɵɵAnimationsFeature',
2974
- moduleName: CORE,
2975
- };
2976
3000
  static listener = { name: 'ɵɵlistener', moduleName: CORE };
2977
3001
  static getInheritedFactory = {
2978
3002
  name: 'ɵɵgetInheritedFactory',
@@ -3570,6 +3594,10 @@ class AbstractEmitterVisitor {
3570
3594
  }
3571
3595
  return null;
3572
3596
  }
3597
+ visitRegularExpressionLiteral(ast, ctx) {
3598
+ ctx.print(ast, `/${ast.body}/${ast.flags || ''}`);
3599
+ return null;
3600
+ }
3573
3601
  visitLocalizedString(ast, ctx) {
3574
3602
  const head = ast.serializeI18nHead();
3575
3603
  ctx.print(ast, '$localize `' + head.raw);
@@ -4378,6 +4406,18 @@ class ParenthesizedExpression extends AST {
4378
4406
  return visitor.visitParenthesizedExpression(this, context);
4379
4407
  }
4380
4408
  }
4409
+ class RegularExpressionLiteral extends AST {
4410
+ body;
4411
+ flags;
4412
+ constructor(span, sourceSpan, body, flags) {
4413
+ super(span, sourceSpan);
4414
+ this.body = body;
4415
+ this.flags = flags;
4416
+ }
4417
+ visit(visitor, context) {
4418
+ return visitor.visitRegularExpressionLiteral(this, context);
4419
+ }
4420
+ }
4381
4421
  /**
4382
4422
  * Records the absolute position of a text span in a source file, where `start` and `end` are the
4383
4423
  * starting and ending byte offsets, respectively, of the text span in a source file.
@@ -4538,6 +4578,7 @@ class RecursiveAstVisitor {
4538
4578
  visitParenthesizedExpression(ast, context) {
4539
4579
  this.visit(ast.expression, context);
4540
4580
  }
4581
+ visitRegularExpressionLiteral(ast, context) { }
4541
4582
  // This is not part of the AstVisitor interface, just a helper method
4542
4583
  visitAll(asts, context) {
4543
4584
  for (const ast of asts) {
@@ -10453,7 +10494,8 @@ function transformExpressionsInExpression(expr, transform, flags) {
10453
10494
  }
10454
10495
  else if (expr instanceof ReadVarExpr ||
10455
10496
  expr instanceof ExternalExpr ||
10456
- expr instanceof LiteralExpr) ;
10497
+ expr instanceof LiteralExpr ||
10498
+ expr instanceof RegularExpressionLiteral$1) ;
10457
10499
  else {
10458
10500
  throw new Error(`Unhandled expression kind: ${expr.constructor.name}`);
10459
10501
  }
@@ -11831,6 +11873,16 @@ function extractAttributeOp(unit, op, elements) {
11831
11873
  }
11832
11874
  }
11833
11875
 
11876
+ const ARIA_PREFIX = 'aria-';
11877
+ /**
11878
+ * Returns whether `name` is an ARIA attribute name.
11879
+ *
11880
+ * This is a heuristic based on whether name begins with and is longer than `aria-`.
11881
+ */
11882
+ function isAriaAttribute(name) {
11883
+ return name.startsWith(ARIA_PREFIX) && name.length > ARIA_PREFIX.length;
11884
+ }
11885
+
11834
11886
  /**
11835
11887
  * Looks up an element in the given map by xref ID.
11836
11888
  */
@@ -11876,7 +11928,15 @@ function specializeBindings(job) {
11876
11928
  break;
11877
11929
  case BindingKind.Property:
11878
11930
  case BindingKind.LegacyAnimation:
11879
- if (job.kind === CompilationJobKind.Host) {
11931
+ // Convert a property binding targeting an ARIA attribute (e.g. [aria-label]) into an
11932
+ // attribute binding when we know it can't also target an input. Note that a `Host` job is
11933
+ // always `DomOnly`, so this condition must be checked first.
11934
+ if (job.mode === TemplateCompilationMode.DomOnly && isAriaAttribute(op.name)) {
11935
+ OpList.replace(op, createAttributeOp(op.target,
11936
+ /* namespace= */ null, op.name, op.expression, op.securityContext,
11937
+ /* isTextAttribute= */ false, op.isStructuralTemplateAttribute, op.templateKind, op.i18nMessage, op.sourceSpan));
11938
+ }
11939
+ else if (job.kind === CompilationJobKind.Host) {
11880
11940
  OpList.replace(op, createDomPropertyOp(op.name, op.expression, op.bindingKind, op.i18nContext, op.securityContext, op.sourceSpan));
11881
11941
  }
11882
11942
  else {
@@ -18253,7 +18313,9 @@ var TokenType;
18253
18313
  TokenType[TokenType["String"] = 4] = "String";
18254
18314
  TokenType[TokenType["Operator"] = 5] = "Operator";
18255
18315
  TokenType[TokenType["Number"] = 6] = "Number";
18256
- TokenType[TokenType["Error"] = 7] = "Error";
18316
+ TokenType[TokenType["RegExpBody"] = 7] = "RegExpBody";
18317
+ TokenType[TokenType["RegExpFlags"] = 8] = "RegExpFlags";
18318
+ TokenType[TokenType["Error"] = 9] = "Error";
18257
18319
  })(TokenType || (TokenType = {}));
18258
18320
  var StringTokenKind;
18259
18321
  (function (StringTokenKind) {
@@ -18348,6 +18410,12 @@ class Token {
18348
18410
  isError() {
18349
18411
  return this.type === TokenType.Error;
18350
18412
  }
18413
+ isRegExpBody() {
18414
+ return this.type === TokenType.RegExpBody;
18415
+ }
18416
+ isRegExpFlags() {
18417
+ return this.type === TokenType.RegExpFlags;
18418
+ }
18351
18419
  toNumber() {
18352
18420
  return this.type === TokenType.Number ? this.numValue : -1;
18353
18421
  }
@@ -18374,6 +18442,8 @@ class Token {
18374
18442
  case TokenType.PrivateIdentifier:
18375
18443
  case TokenType.String:
18376
18444
  case TokenType.Error:
18445
+ case TokenType.RegExpBody:
18446
+ case TokenType.RegExpFlags:
18377
18447
  return this.strValue;
18378
18448
  case TokenType.Number:
18379
18449
  return this.numValue.toString();
@@ -18410,6 +18480,12 @@ function newNumberToken(index, end, n) {
18410
18480
  function newErrorToken(index, end, message) {
18411
18481
  return new Token(index, end, TokenType.Error, 0, message);
18412
18482
  }
18483
+ function newRegExpBodyToken(index, end, text) {
18484
+ return new Token(index, end, TokenType.RegExpBody, 0, text);
18485
+ }
18486
+ function newRegExpFlagsToken(index, end, text) {
18487
+ return new Token(index, end, TokenType.RegExpFlags, 0, text);
18488
+ }
18413
18489
  const EOF = new Token(-1, -1, TokenType.Character, 0, '');
18414
18490
  class _Scanner {
18415
18491
  input;
@@ -18493,7 +18569,9 @@ class _Scanner {
18493
18569
  case $MINUS:
18494
18570
  return this.scanComplexOperator(start, '-', $EQ, '=');
18495
18571
  case $SLASH:
18496
- return this.scanComplexOperator(start, '/', $EQ, '=');
18572
+ return this.isStartOfRegex()
18573
+ ? this.scanRegex(index)
18574
+ : this.scanComplexOperator(start, '/', $EQ, '=');
18497
18575
  case $PERCENT:
18498
18576
  return this.scanComplexOperator(start, '%', $EQ, '=');
18499
18577
  case $CARET:
@@ -18756,6 +18834,81 @@ class _Scanner {
18756
18834
  }
18757
18835
  return newOperatorToken(start, this.index, operator);
18758
18836
  }
18837
+ isStartOfRegex() {
18838
+ if (this.tokens.length === 0) {
18839
+ return true;
18840
+ }
18841
+ const prevToken = this.tokens[this.tokens.length - 1];
18842
+ // If a slash is preceded by a `!` operator, we need to distinguish whether it's a
18843
+ // negation or a non-null assertion. Regexes can only be precded by negations.
18844
+ if (prevToken.isOperator('!')) {
18845
+ const beforePrevToken = this.tokens.length > 1 ? this.tokens[this.tokens.length - 2] : null;
18846
+ const isNegation = beforePrevToken === null ||
18847
+ (beforePrevToken.type !== TokenType.Identifier &&
18848
+ !beforePrevToken.isCharacter($RPAREN) &&
18849
+ !beforePrevToken.isCharacter($RBRACKET));
18850
+ return isNegation;
18851
+ }
18852
+ // Only consider the slash a regex if it's preceded either by:
18853
+ // - Any operator, aside from `!` which is special-cased above.
18854
+ // - Opening paren (e.g. `(/a/)`).
18855
+ // - Opening bracket (e.g. `[/a/]`).
18856
+ // - A comma (e.g. `[1, /a/]`).
18857
+ // - A colon (e.g. `{foo: /a/}`).
18858
+ return (prevToken.type === TokenType.Operator ||
18859
+ prevToken.isCharacter($LPAREN) ||
18860
+ prevToken.isCharacter($LBRACKET) ||
18861
+ prevToken.isCharacter($COMMA) ||
18862
+ prevToken.isCharacter($COLON));
18863
+ }
18864
+ scanRegex(tokenStart) {
18865
+ this.advance();
18866
+ const textStart = this.index;
18867
+ let inEscape = false;
18868
+ let inCharacterClass = false;
18869
+ while (true) {
18870
+ const peek = this.peek;
18871
+ if (peek === $EOF) {
18872
+ return this.error('Unterminated regular expression', 0);
18873
+ }
18874
+ if (inEscape) {
18875
+ inEscape = false;
18876
+ }
18877
+ else if (peek === $BACKSLASH) {
18878
+ inEscape = true;
18879
+ }
18880
+ else if (peek === $LBRACKET) {
18881
+ inCharacterClass = true;
18882
+ }
18883
+ else if (peek === $RBRACKET) {
18884
+ inCharacterClass = false;
18885
+ }
18886
+ else if (peek === $SLASH && !inCharacterClass) {
18887
+ break;
18888
+ }
18889
+ this.advance();
18890
+ }
18891
+ // Note that we want the text without the slashes,
18892
+ // but we still want the slashes to be part of the span.
18893
+ const value = this.input.substring(textStart, this.index);
18894
+ this.advance();
18895
+ const bodyToken = newRegExpBodyToken(tokenStart, this.index, value);
18896
+ const flagsToken = this.scanRegexFlags(this.index);
18897
+ if (flagsToken !== null) {
18898
+ this.tokens.push(bodyToken);
18899
+ return flagsToken;
18900
+ }
18901
+ return bodyToken;
18902
+ }
18903
+ scanRegexFlags(start) {
18904
+ if (!isAsciiLetter(this.peek)) {
18905
+ return null;
18906
+ }
18907
+ while (isAsciiLetter(this.peek)) {
18908
+ this.advance();
18909
+ }
18910
+ return newRegExpFlagsToken(start, this.index, this.input.substring(start, this.index));
18911
+ }
18759
18912
  }
18760
18913
  function isIdentifierStart(code) {
18761
18914
  return (($a <= code && code <= $z) ||
@@ -19107,6 +19260,8 @@ var ParseContextFlags;
19107
19260
  */
19108
19261
  ParseContextFlags[ParseContextFlags["Writable"] = 1] = "Writable";
19109
19262
  })(ParseContextFlags || (ParseContextFlags = {}));
19263
+ /** Possible flags that can be used in a regex literal. */
19264
+ const SUPPORTED_REGEX_FLAGS = new Set(['d', 'g', 'i', 'm', 's', 'u', 'v', 'y']);
19110
19265
  class _ParseAST {
19111
19266
  input;
19112
19267
  parseSourceSpan;
@@ -19676,6 +19831,9 @@ class _ParseAST {
19676
19831
  this._reportErrorForPrivateIdentifier(this.next, null);
19677
19832
  return new EmptyExpr$1(this.span(start), this.sourceSpan(start));
19678
19833
  }
19834
+ else if (this.next.isRegExpBody()) {
19835
+ return this.parseRegularExpressionLiteral();
19836
+ }
19679
19837
  else if (this.index >= this.tokens.length) {
19680
19838
  this.error(`Unexpected end of expression: ${this.input}`);
19681
19839
  return new EmptyExpr$1(this.span(start), this.sourceSpan(start));
@@ -20045,6 +20203,35 @@ class _ParseAST {
20045
20203
  }
20046
20204
  return new TemplateLiteral(this.span(start), this.sourceSpan(start), elements, expressions);
20047
20205
  }
20206
+ parseRegularExpressionLiteral() {
20207
+ const bodyToken = this.next;
20208
+ this.advance();
20209
+ if (!bodyToken.isRegExpBody()) {
20210
+ return new EmptyExpr$1(this.span(this.inputIndex), this.sourceSpan(this.inputIndex));
20211
+ }
20212
+ let flagsToken = null;
20213
+ if (this.next.isRegExpFlags()) {
20214
+ flagsToken = this.next;
20215
+ this.advance();
20216
+ const seenFlags = new Set();
20217
+ for (let i = 0; i < flagsToken.strValue.length; i++) {
20218
+ const char = flagsToken.strValue[i];
20219
+ if (!SUPPORTED_REGEX_FLAGS.has(char)) {
20220
+ this.error(`Unsupported regular expression flag "${char}". The supported flags are: ` +
20221
+ Array.from(SUPPORTED_REGEX_FLAGS, (f) => `"${f}"`).join(', '), flagsToken.index + i);
20222
+ }
20223
+ else if (seenFlags.has(char)) {
20224
+ this.error(`Duplicate regular expression flag "${char}"`, flagsToken.index + i);
20225
+ }
20226
+ else {
20227
+ seenFlags.add(char);
20228
+ }
20229
+ }
20230
+ }
20231
+ const start = bodyToken.index;
20232
+ const end = flagsToken ? flagsToken.end : bodyToken.end;
20233
+ return new RegularExpressionLiteral(this.span(start, end), this.sourceSpan(start, end), bodyToken.strValue, flagsToken ? flagsToken.strValue : null);
20234
+ }
20048
20235
  /**
20049
20236
  * Consume the optional statement terminator: semicolon or comma.
20050
20237
  */
@@ -20258,6 +20445,9 @@ class SerializeExpressionVisitor {
20258
20445
  visitVoidExpression(ast, context) {
20259
20446
  return `void ${ast.expression.visit(this, context)}`;
20260
20447
  }
20448
+ visitRegularExpressionLiteral(ast, context) {
20449
+ return `/${ast.body}/${ast.flags || ''}`;
20450
+ }
20261
20451
  visitASTWithSource(ast, context) {
20262
20452
  return ast.ast.visit(this, context);
20263
20453
  }
@@ -20454,7 +20644,7 @@ const OBJECT = 'object';
20454
20644
  //
20455
20645
  // =================================================================================================
20456
20646
  const SCHEMA = [
20457
- '[Element]|textContent,%ariaAtomic,%ariaAutoComplete,%ariaBusy,%ariaChecked,%ariaColCount,%ariaColIndex,%ariaColSpan,%ariaCurrent,%ariaDescription,%ariaDisabled,%ariaExpanded,%ariaHasPopup,%ariaHidden,%ariaKeyShortcuts,%ariaLabel,%ariaLevel,%ariaLive,%ariaModal,%ariaMultiLine,%ariaMultiSelectable,%ariaOrientation,%ariaPlaceholder,%ariaPosInSet,%ariaPressed,%ariaReadOnly,%ariaRelevant,%ariaRequired,%ariaRoleDescription,%ariaRowCount,%ariaRowIndex,%ariaRowSpan,%ariaSelected,%ariaSetSize,%ariaSort,%ariaValueMax,%ariaValueMin,%ariaValueNow,%ariaValueText,%classList,className,elementTiming,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*fullscreenchange,*fullscreenerror,*search,*webkitfullscreenchange,*webkitfullscreenerror,outerHTML,%part,#scrollLeft,#scrollTop,slot' +
20647
+ '[Element]|textContent,%ariaAtomic,%ariaAutoComplete,%ariaBusy,%ariaChecked,%ariaColCount,%ariaColIndex,%ariaColSpan,%ariaCurrent,%ariaDescription,%ariaDisabled,%ariaExpanded,%ariaHasPopup,%ariaHidden,%ariaInvalid,%ariaKeyShortcuts,%ariaLabel,%ariaLevel,%ariaLive,%ariaModal,%ariaMultiLine,%ariaMultiSelectable,%ariaOrientation,%ariaPlaceholder,%ariaPosInSet,%ariaPressed,%ariaReadOnly,%ariaRelevant,%ariaRequired,%ariaRoleDescription,%ariaRowCount,%ariaRowIndex,%ariaRowSpan,%ariaSelected,%ariaSetSize,%ariaSort,%ariaValueMax,%ariaValueMin,%ariaValueNow,%ariaValueText,%classList,className,elementTiming,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*fullscreenchange,*fullscreenerror,*search,*webkitfullscreenchange,*webkitfullscreenerror,outerHTML,%part,#scrollLeft,#scrollTop,slot' +
20458
20648
  /* added manually to avoid breaking changes */
20459
20649
  ',*message,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored',
20460
20650
  '[HTMLElement]^[Element]|accessKey,autocapitalize,!autofocus,contentEditable,dir,!draggable,enterKeyHint,!hidden,!inert,innerText,inputMode,lang,nonce,*abort,*animationend,*animationiteration,*animationstart,*auxclick,*beforexrselect,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*formdata,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*paste,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerrawupdate,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*securitypolicyviolation,*seeked,*seeking,*select,*selectionchange,*selectstart,*slotchange,*stalled,*submit,*suspend,*timeupdate,*toggle,*transitioncancel,*transitionend,*transitionrun,*transitionstart,*volumechange,*waiting,*webkitanimationend,*webkitanimationiteration,*webkitanimationstart,*webkittransitionend,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate,virtualKeyboardPolicy',
@@ -23360,6 +23550,27 @@ function transformLiteralMap(expr) {
23360
23550
  return new PureFunctionExpr(literalMap(derivedEntries), nonConstantArgs);
23361
23551
  }
23362
23552
 
23553
+ /** Optimizes regular expressions used in expressions. */
23554
+ function optimizeRegularExpressions(job) {
23555
+ for (const view of job.units) {
23556
+ for (const op of view.ops()) {
23557
+ transformExpressionsInOp(op, (expr) => {
23558
+ if (expr instanceof RegularExpressionLiteral$1 &&
23559
+ // We can't optimize global regexes, because they're stateful.
23560
+ (expr.flags === null || !expr.flags.includes('g'))) {
23561
+ return job.pool.getSharedConstant(new RegularExpressionConstant(), expr);
23562
+ }
23563
+ return expr;
23564
+ }, VisitorContextFlag.None);
23565
+ }
23566
+ }
23567
+ }
23568
+ class RegularExpressionConstant extends GenericKeyFn {
23569
+ toSharedConstantDeclaration(declName, keyExpr) {
23570
+ return new DeclareVarStmt(declName, keyExpr, undefined, StmtModifier.Final);
23571
+ }
23572
+ }
23573
+
23363
23574
  // This file contains helpers for generating calls to Ivy instructions. In particular, each
23364
23575
  // instruction type is represented as a function, which may select a specific instruction variant
23365
23576
  // depending on the exact arguments.
@@ -23973,7 +24184,6 @@ function callVariadicInstruction(config, baseArgs, interpolationArgs, extraArgs,
23973
24184
  return createStatementOp(callVariadicInstructionExpr(config, baseArgs, interpolationArgs, extraArgs, sourceSpan).toStmt());
23974
24185
  }
23975
24186
 
23976
- const ARIA_PREFIX = 'aria';
23977
24187
  /**
23978
24188
  * Map of target resolvers for event listeners.
23979
24189
  */
@@ -24352,33 +24562,6 @@ function reifyUpdateOperations(unit, ops) {
24352
24562
  }
24353
24563
  }
24354
24564
  }
24355
- /**
24356
- * Converts an ARIA property name to its corresponding attribute name, if necessary.
24357
- *
24358
- * For example, converts `ariaLabel` to `aria-label`.
24359
- *
24360
- * https://www.w3.org/TR/wai-aria-1.2/#accessibilityroleandproperties-correspondence
24361
- *
24362
- * This must be kept in sync with the the function of the same name in
24363
- * packages/core/src/render3/instructions/aria_property.ts.
24364
- *
24365
- * @param name A property name that starts with `aria`.
24366
- * @returns The corresponding attribute name.
24367
- */
24368
- function ariaAttrName(name) {
24369
- return name.charAt(ARIA_PREFIX.length) !== '-'
24370
- ? ARIA_PREFIX + '-' + name.slice(ARIA_PREFIX.length).toLowerCase()
24371
- : name; // Property already has attribute name.
24372
- }
24373
- /**
24374
- * Returns whether `name` is an ARIA property (or attribute) name.
24375
- *
24376
- * This is a heuristic based on whether name begins with and is longer than `aria`. For example,
24377
- * this returns true for both `ariaLabel` and `aria-label`.
24378
- */
24379
- function isAriaProperty(name) {
24380
- return name.startsWith(ARIA_PREFIX) && name.length > ARIA_PREFIX.length;
24381
- }
24382
24565
  /**
24383
24566
  * Reifies a DOM property binding operation.
24384
24567
  *
@@ -24389,9 +24572,7 @@ function isAriaProperty(name) {
24389
24572
  * @returns A statement to update the property at runtime.
24390
24573
  */
24391
24574
  function reifyDomProperty(op) {
24392
- return isAriaProperty(op.name)
24393
- ? attribute(ariaAttrName(op.name), op.expression, null, null, op.sourceSpan)
24394
- : domProperty(DOM_PROPERTY_REMAPPING.get(op.name) ?? op.name, op.expression, op.sanitizer, op.sourceSpan);
24575
+ return domProperty(DOM_PROPERTY_REMAPPING.get(op.name) ?? op.name, op.expression, op.sanitizer, op.sourceSpan);
24395
24576
  }
24396
24577
  /**
24397
24578
  * Reifies a property binding operation.
@@ -24403,7 +24584,7 @@ function reifyDomProperty(op) {
24403
24584
  * @returns A statement to update the property at runtime.
24404
24585
  */
24405
24586
  function reifyProperty(op) {
24406
- return isAriaProperty(op.name)
24587
+ return isAriaAttribute(op.name)
24407
24588
  ? ariaProperty(op.name, op.expression, op.sourceSpan)
24408
24589
  : property(op.name, op.expression, op.sanitizer, op.sourceSpan);
24409
24590
  }
@@ -26451,6 +26632,7 @@ function wrapI18nIcus(job) {
26451
26632
  */
26452
26633
  const phases = [
26453
26634
  { kind: CompilationJobKind.Tmpl, fn: removeContentSelectors },
26635
+ { kind: CompilationJobKind.Both, fn: optimizeRegularExpressions },
26454
26636
  { kind: CompilationJobKind.Host, fn: parseHostStyleProperties },
26455
26637
  { kind: CompilationJobKind.Tmpl, fn: emitNamespaceChanges },
26456
26638
  { kind: CompilationJobKind.Tmpl, fn: propagateI18nBlocks },
@@ -27297,6 +27479,9 @@ function convertAst(ast, job, baseSourceSpan) {
27297
27479
  else if (ast instanceof ParenthesizedExpression) {
27298
27480
  return new ParenthesizedExpr(convertAst(ast.expression, job, baseSourceSpan), undefined, convertSourceSpan(ast.span, baseSourceSpan));
27299
27481
  }
27482
+ else if (ast instanceof RegularExpressionLiteral) {
27483
+ return new RegularExpressionLiteral$1(ast.body, ast.flags, baseSourceSpan);
27484
+ }
27300
27485
  else {
27301
27486
  throw new Error(`Unhandled expression type "${ast.constructor.name}" in file "${baseSourceSpan?.start.file.url}"`);
27302
27487
  }
@@ -30228,184 +30413,9 @@ function makeBindingParser(interpolationConfig = DEFAULT_INTERPOLATION_CONFIG, s
30228
30413
  return new BindingParser(new Parser(new Lexer(), selectorlessEnabled), interpolationConfig, elementRegistry, []);
30229
30414
  }
30230
30415
 
30231
- /*!
30232
- * @license
30233
- * Copyright Google LLC All Rights Reserved.
30234
- *
30235
- * Use of this source code is governed by an MIT-style license that can be
30236
- * found in the LICENSE file at https://angular.dev/license
30237
- */
30238
- /**
30239
- * Visitor that traverses all template and expression AST nodes in a template.
30240
- * Useful for cases where every single node needs to be visited.
30241
- */
30242
- class CombinedRecursiveAstVisitor extends RecursiveAstVisitor {
30243
- visit(node) {
30244
- if (node instanceof ASTWithSource) {
30245
- this.visit(node.ast);
30246
- }
30247
- else {
30248
- node.visit(this);
30249
- }
30250
- }
30251
- visitElement(element) {
30252
- this.visitAllTemplateNodes(element.attributes);
30253
- this.visitAllTemplateNodes(element.inputs);
30254
- this.visitAllTemplateNodes(element.outputs);
30255
- this.visitAllTemplateNodes(element.directives);
30256
- this.visitAllTemplateNodes(element.references);
30257
- this.visitAllTemplateNodes(element.children);
30258
- }
30259
- visitTemplate(template) {
30260
- this.visitAllTemplateNodes(template.attributes);
30261
- this.visitAllTemplateNodes(template.inputs);
30262
- this.visitAllTemplateNodes(template.outputs);
30263
- this.visitAllTemplateNodes(template.directives);
30264
- this.visitAllTemplateNodes(template.templateAttrs);
30265
- this.visitAllTemplateNodes(template.variables);
30266
- this.visitAllTemplateNodes(template.references);
30267
- this.visitAllTemplateNodes(template.children);
30268
- }
30269
- visitContent(content) {
30270
- this.visitAllTemplateNodes(content.children);
30271
- }
30272
- visitBoundAttribute(attribute) {
30273
- this.visit(attribute.value);
30274
- }
30275
- visitBoundEvent(attribute) {
30276
- this.visit(attribute.handler);
30277
- }
30278
- visitBoundText(text) {
30279
- this.visit(text.value);
30280
- }
30281
- visitIcu(icu) {
30282
- Object.keys(icu.vars).forEach((key) => this.visit(icu.vars[key]));
30283
- Object.keys(icu.placeholders).forEach((key) => this.visit(icu.placeholders[key]));
30284
- }
30285
- visitDeferredBlock(deferred) {
30286
- deferred.visitAll(this);
30287
- }
30288
- visitDeferredTrigger(trigger) {
30289
- if (trigger instanceof BoundDeferredTrigger) {
30290
- this.visit(trigger.value);
30291
- }
30292
- }
30293
- visitDeferredBlockPlaceholder(block) {
30294
- this.visitAllTemplateNodes(block.children);
30295
- }
30296
- visitDeferredBlockError(block) {
30297
- this.visitAllTemplateNodes(block.children);
30298
- }
30299
- visitDeferredBlockLoading(block) {
30300
- this.visitAllTemplateNodes(block.children);
30301
- }
30302
- visitSwitchBlock(block) {
30303
- this.visit(block.expression);
30304
- this.visitAllTemplateNodes(block.cases);
30305
- }
30306
- visitSwitchBlockCase(block) {
30307
- block.expression && this.visit(block.expression);
30308
- this.visitAllTemplateNodes(block.children);
30309
- }
30310
- visitForLoopBlock(block) {
30311
- block.item.visit(this);
30312
- this.visitAllTemplateNodes(block.contextVariables);
30313
- this.visit(block.expression);
30314
- this.visitAllTemplateNodes(block.children);
30315
- block.empty?.visit(this);
30316
- }
30317
- visitForLoopBlockEmpty(block) {
30318
- this.visitAllTemplateNodes(block.children);
30319
- }
30320
- visitIfBlock(block) {
30321
- this.visitAllTemplateNodes(block.branches);
30322
- }
30323
- visitIfBlockBranch(block) {
30324
- block.expression && this.visit(block.expression);
30325
- block.expressionAlias?.visit(this);
30326
- this.visitAllTemplateNodes(block.children);
30327
- }
30328
- visitLetDeclaration(decl) {
30329
- this.visit(decl.value);
30330
- }
30331
- visitComponent(component) {
30332
- this.visitAllTemplateNodes(component.attributes);
30333
- this.visitAllTemplateNodes(component.inputs);
30334
- this.visitAllTemplateNodes(component.outputs);
30335
- this.visitAllTemplateNodes(component.directives);
30336
- this.visitAllTemplateNodes(component.references);
30337
- this.visitAllTemplateNodes(component.children);
30338
- }
30339
- visitDirective(directive) {
30340
- this.visitAllTemplateNodes(directive.attributes);
30341
- this.visitAllTemplateNodes(directive.inputs);
30342
- this.visitAllTemplateNodes(directive.outputs);
30343
- this.visitAllTemplateNodes(directive.references);
30344
- }
30345
- visitVariable(variable) { }
30346
- visitReference(reference) { }
30347
- visitTextAttribute(attribute) { }
30348
- visitText(text) { }
30349
- visitUnknownBlock(block) { }
30350
- visitAllTemplateNodes(nodes) {
30351
- for (const node of nodes) {
30352
- this.visit(node);
30353
- }
30354
- }
30355
- }
30356
-
30357
- /*!
30358
- * @license
30359
- * Copyright Google LLC All Rights Reserved.
30360
- *
30361
- * Use of this source code is governed by an MIT-style license that can be
30362
- * found in the LICENSE file at https://angular.dev/license
30363
- */
30364
- const ANIMATE_LEAVE$1 = `animate.leave`;
30365
- /**
30366
- * Analyzes a component's template to determine if it's using animate.enter
30367
- * or animate.leave syntax.
30368
- */
30369
- function analyzeTemplateForAnimations(template) {
30370
- const analyzer = new AnimationsAnalyzer();
30371
- visitAll$1(analyzer, template);
30372
- // The template is considered selectorless only if there
30373
- // are direct references to directives or pipes.
30374
- return analyzer.hasAnimations;
30375
- }
30376
- /**
30377
- * Visitor that traverses all the template nodes and
30378
- * expressions to look for selectorless references.
30379
- */
30380
- class AnimationsAnalyzer extends CombinedRecursiveAstVisitor {
30381
- hasAnimations = false;
30382
- visitElement(element) {
30383
- // check for regular strings
30384
- for (const attr of element.attributes) {
30385
- if (attr.name === ANIMATE_LEAVE$1) {
30386
- this.hasAnimations = true;
30387
- }
30388
- }
30389
- // check for attribute bindings
30390
- for (const input of element.inputs) {
30391
- if (input.name === ANIMATE_LEAVE$1) {
30392
- this.hasAnimations = true;
30393
- }
30394
- }
30395
- // check for event bindings
30396
- for (const output of element.outputs) {
30397
- if (output.name === ANIMATE_LEAVE$1) {
30398
- this.hasAnimations = true;
30399
- }
30400
- }
30401
- super.visitElement(element);
30402
- }
30403
- }
30404
-
30405
30416
  const COMPONENT_VARIABLE = '%COMP%';
30406
30417
  const HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;
30407
30418
  const CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;
30408
- const ANIMATE_LEAVE = `animate.leave`;
30409
30419
  function baseDirectiveFields(meta, constantPool, bindingParser) {
30410
30420
  const definitionMap = new DefinitionMap();
30411
30421
  const selectors = parseSelectorToR3Selector(meta.selector);
@@ -30439,11 +30449,6 @@ function baseDirectiveFields(meta, constantPool, bindingParser) {
30439
30449
  }
30440
30450
  return definitionMap;
30441
30451
  }
30442
- function hasAnimationHostBinding(meta) {
30443
- return (meta.host.attributes[ANIMATE_LEAVE] !== undefined ||
30444
- meta.host.properties[ANIMATE_LEAVE] !== undefined ||
30445
- meta.host.listeners[ANIMATE_LEAVE] !== undefined);
30446
- }
30447
30452
  /**
30448
30453
  * Add features to the definition map.
30449
30454
  */
@@ -30478,12 +30483,6 @@ function addFeatures(definitionMap, meta) {
30478
30483
  const externalStyleNodes = meta.externalStyles.map((externalStyle) => literal(externalStyle));
30479
30484
  features.push(importExpr(Identifiers.ExternalStylesFeature).callFn([literalArr(externalStyleNodes)]));
30480
30485
  }
30481
- const template = meta.template;
30482
- if (hasAnimationHostBinding(meta) || (template && template.nodes.length > 0)) {
30483
- if (hasAnimationHostBinding(meta) || analyzeTemplateForAnimations(template.nodes)) {
30484
- features.push(importExpr(Identifiers.AnimationsFeature).callFn([]));
30485
- }
30486
- }
30487
30486
  if (features.length) {
30488
30487
  definitionMap.set('features', literalArr(features));
30489
30488
  }
@@ -30943,6 +30942,132 @@ function compileDeferResolverFunction(meta) {
30943
30942
  return arrowFn([], literalArr(depExpressions));
30944
30943
  }
30945
30944
 
30945
+ /*!
30946
+ * @license
30947
+ * Copyright Google LLC All Rights Reserved.
30948
+ *
30949
+ * Use of this source code is governed by an MIT-style license that can be
30950
+ * found in the LICENSE file at https://angular.dev/license
30951
+ */
30952
+ /**
30953
+ * Visitor that traverses all template and expression AST nodes in a template.
30954
+ * Useful for cases where every single node needs to be visited.
30955
+ */
30956
+ class CombinedRecursiveAstVisitor extends RecursiveAstVisitor {
30957
+ visit(node) {
30958
+ if (node instanceof ASTWithSource) {
30959
+ this.visit(node.ast);
30960
+ }
30961
+ else {
30962
+ node.visit(this);
30963
+ }
30964
+ }
30965
+ visitElement(element) {
30966
+ this.visitAllTemplateNodes(element.attributes);
30967
+ this.visitAllTemplateNodes(element.inputs);
30968
+ this.visitAllTemplateNodes(element.outputs);
30969
+ this.visitAllTemplateNodes(element.directives);
30970
+ this.visitAllTemplateNodes(element.references);
30971
+ this.visitAllTemplateNodes(element.children);
30972
+ }
30973
+ visitTemplate(template) {
30974
+ this.visitAllTemplateNodes(template.attributes);
30975
+ this.visitAllTemplateNodes(template.inputs);
30976
+ this.visitAllTemplateNodes(template.outputs);
30977
+ this.visitAllTemplateNodes(template.directives);
30978
+ this.visitAllTemplateNodes(template.templateAttrs);
30979
+ this.visitAllTemplateNodes(template.variables);
30980
+ this.visitAllTemplateNodes(template.references);
30981
+ this.visitAllTemplateNodes(template.children);
30982
+ }
30983
+ visitContent(content) {
30984
+ this.visitAllTemplateNodes(content.children);
30985
+ }
30986
+ visitBoundAttribute(attribute) {
30987
+ this.visit(attribute.value);
30988
+ }
30989
+ visitBoundEvent(attribute) {
30990
+ this.visit(attribute.handler);
30991
+ }
30992
+ visitBoundText(text) {
30993
+ this.visit(text.value);
30994
+ }
30995
+ visitIcu(icu) {
30996
+ Object.keys(icu.vars).forEach((key) => this.visit(icu.vars[key]));
30997
+ Object.keys(icu.placeholders).forEach((key) => this.visit(icu.placeholders[key]));
30998
+ }
30999
+ visitDeferredBlock(deferred) {
31000
+ deferred.visitAll(this);
31001
+ }
31002
+ visitDeferredTrigger(trigger) {
31003
+ if (trigger instanceof BoundDeferredTrigger) {
31004
+ this.visit(trigger.value);
31005
+ }
31006
+ }
31007
+ visitDeferredBlockPlaceholder(block) {
31008
+ this.visitAllTemplateNodes(block.children);
31009
+ }
31010
+ visitDeferredBlockError(block) {
31011
+ this.visitAllTemplateNodes(block.children);
31012
+ }
31013
+ visitDeferredBlockLoading(block) {
31014
+ this.visitAllTemplateNodes(block.children);
31015
+ }
31016
+ visitSwitchBlock(block) {
31017
+ this.visit(block.expression);
31018
+ this.visitAllTemplateNodes(block.cases);
31019
+ }
31020
+ visitSwitchBlockCase(block) {
31021
+ block.expression && this.visit(block.expression);
31022
+ this.visitAllTemplateNodes(block.children);
31023
+ }
31024
+ visitForLoopBlock(block) {
31025
+ block.item.visit(this);
31026
+ this.visitAllTemplateNodes(block.contextVariables);
31027
+ this.visit(block.expression);
31028
+ this.visitAllTemplateNodes(block.children);
31029
+ block.empty?.visit(this);
31030
+ }
31031
+ visitForLoopBlockEmpty(block) {
31032
+ this.visitAllTemplateNodes(block.children);
31033
+ }
31034
+ visitIfBlock(block) {
31035
+ this.visitAllTemplateNodes(block.branches);
31036
+ }
31037
+ visitIfBlockBranch(block) {
31038
+ block.expression && this.visit(block.expression);
31039
+ block.expressionAlias?.visit(this);
31040
+ this.visitAllTemplateNodes(block.children);
31041
+ }
31042
+ visitLetDeclaration(decl) {
31043
+ this.visit(decl.value);
31044
+ }
31045
+ visitComponent(component) {
31046
+ this.visitAllTemplateNodes(component.attributes);
31047
+ this.visitAllTemplateNodes(component.inputs);
31048
+ this.visitAllTemplateNodes(component.outputs);
31049
+ this.visitAllTemplateNodes(component.directives);
31050
+ this.visitAllTemplateNodes(component.references);
31051
+ this.visitAllTemplateNodes(component.children);
31052
+ }
31053
+ visitDirective(directive) {
31054
+ this.visitAllTemplateNodes(directive.attributes);
31055
+ this.visitAllTemplateNodes(directive.inputs);
31056
+ this.visitAllTemplateNodes(directive.outputs);
31057
+ this.visitAllTemplateNodes(directive.references);
31058
+ }
31059
+ visitVariable(variable) { }
31060
+ visitReference(reference) { }
31061
+ visitTextAttribute(attribute) { }
31062
+ visitText(text) { }
31063
+ visitUnknownBlock(block) { }
31064
+ visitAllTemplateNodes(nodes) {
31065
+ for (const node of nodes) {
31066
+ this.visit(node);
31067
+ }
31068
+ }
31069
+ }
31070
+
30946
31071
  /**
30947
31072
  * Computes a difference between full list (first argument) and
30948
31073
  * list of items that should be excluded from the full list (second
@@ -34325,7 +34450,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
34325
34450
  function compileDeclareClassMetadata(metadata) {
34326
34451
  const definitionMap = new DefinitionMap();
34327
34452
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
34328
- definitionMap.set('version', literal('21.0.0-next.3'));
34453
+ definitionMap.set('version', literal('21.0.0-next.5'));
34329
34454
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34330
34455
  definitionMap.set('type', metadata.type);
34331
34456
  definitionMap.set('decorators', metadata.decorators);
@@ -34343,7 +34468,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
34343
34468
  callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? literal(null));
34344
34469
  callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? literal(null));
34345
34470
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
34346
- definitionMap.set('version', literal('21.0.0-next.3'));
34471
+ definitionMap.set('version', literal('21.0.0-next.5'));
34347
34472
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34348
34473
  definitionMap.set('type', metadata.type);
34349
34474
  definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
@@ -34438,7 +34563,7 @@ function createDirectiveDefinitionMap(meta) {
34438
34563
  const definitionMap = new DefinitionMap();
34439
34564
  const minVersion = getMinimumVersionForPartialOutput(meta);
34440
34565
  definitionMap.set('minVersion', literal(minVersion));
34441
- definitionMap.set('version', literal('21.0.0-next.3'));
34566
+ definitionMap.set('version', literal('21.0.0-next.5'));
34442
34567
  // e.g. `type: MyDirective`
34443
34568
  definitionMap.set('type', meta.type.value);
34444
34569
  if (meta.isStandalone !== undefined) {
@@ -34854,7 +34979,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
34854
34979
  function compileDeclareFactoryFunction(meta) {
34855
34980
  const definitionMap = new DefinitionMap();
34856
34981
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
34857
- definitionMap.set('version', literal('21.0.0-next.3'));
34982
+ definitionMap.set('version', literal('21.0.0-next.5'));
34858
34983
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34859
34984
  definitionMap.set('type', meta.type.value);
34860
34985
  definitionMap.set('deps', compileDependencies(meta.deps));
@@ -34889,7 +35014,7 @@ function compileDeclareInjectableFromMetadata(meta) {
34889
35014
  function createInjectableDefinitionMap(meta) {
34890
35015
  const definitionMap = new DefinitionMap();
34891
35016
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
34892
- definitionMap.set('version', literal('21.0.0-next.3'));
35017
+ definitionMap.set('version', literal('21.0.0-next.5'));
34893
35018
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34894
35019
  definitionMap.set('type', meta.type.value);
34895
35020
  // Only generate providedIn property if it has a non-null value
@@ -34940,7 +35065,7 @@ function compileDeclareInjectorFromMetadata(meta) {
34940
35065
  function createInjectorDefinitionMap(meta) {
34941
35066
  const definitionMap = new DefinitionMap();
34942
35067
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
34943
- definitionMap.set('version', literal('21.0.0-next.3'));
35068
+ definitionMap.set('version', literal('21.0.0-next.5'));
34944
35069
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34945
35070
  definitionMap.set('type', meta.type.value);
34946
35071
  definitionMap.set('providers', meta.providers);
@@ -34973,7 +35098,7 @@ function createNgModuleDefinitionMap(meta) {
34973
35098
  throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
34974
35099
  }
34975
35100
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
34976
- definitionMap.set('version', literal('21.0.0-next.3'));
35101
+ definitionMap.set('version', literal('21.0.0-next.5'));
34977
35102
  definitionMap.set('ngImport', importExpr(Identifiers.core));
34978
35103
  definitionMap.set('type', meta.type.value);
34979
35104
  // We only generate the keys in the metadata if the arrays contain values.
@@ -35024,7 +35149,7 @@ function compileDeclarePipeFromMetadata(meta) {
35024
35149
  function createPipeDefinitionMap(meta) {
35025
35150
  const definitionMap = new DefinitionMap();
35026
35151
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION));
35027
- definitionMap.set('version', literal('21.0.0-next.3'));
35152
+ definitionMap.set('version', literal('21.0.0-next.5'));
35028
35153
  definitionMap.set('ngImport', importExpr(Identifiers.core));
35029
35154
  // e.g. `type: MyPipe`
35030
35155
  definitionMap.set('type', meta.type.value);
@@ -35180,7 +35305,7 @@ function compileHmrUpdateCallback(definitions, constantStatements, meta) {
35180
35305
  * @description
35181
35306
  * Entry point for all public APIs of the compiler package.
35182
35307
  */
35183
- const VERSION = new Version('21.0.0-next.3');
35308
+ const VERSION = new Version('21.0.0-next.5');
35184
35309
 
35185
35310
  //////////////////////////////////////
35186
35311
  // THIS FILE HAS GLOBAL SIDE EFFECT //
@@ -35206,5 +35331,5 @@ const VERSION = new Version('21.0.0-next.3');
35206
35331
  // the late binding of the Compiler to the @angular/core for jit compilation.
35207
35332
  publishFacade(_global);
35208
35333
 
35209
- export { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunctionExpr, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingPipeType, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CombinedRecursiveAstVisitor, CommaExpr, Comment, CompilerConfig, CompilerFacadeImpl, 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, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InterpolationConfig, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, 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, PrefixNot, PropertyRead, Identifiers as R3Identifiers, R3NgModuleMetadataKind, R3SelectorScopeMode, R3TargetBinder, R3TemplateDependencyKind, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveVisitor, ResourceLoader, ReturnStatement, SECURITY_SCHEMA, 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$1 as ViewEncapsulation, VoidExpr, VoidExpression, WrappedNodeExpr, 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, escapeRegExp, findMatchingDirectivesAndPipes, getHtmlTagDefinition, getNsPrefix, getSafePropertyAccessString, identifierName, isNgContainer, isNgContent, isNgTemplate, jsDocComment, leadingComment, literal, literalMap, makeBindingParser, mergeNsAndName, output_ast as outputAst, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, sanitizeIdentifier, setEnableTemplateSourceLocations, splitNsName, visitAll$1 as tmplAstVisitAll, verifyHostBindings, visitAll };
35334
+ export { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunctionExpr, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingPipeType, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CombinedRecursiveAstVisitor, CommaExpr, Comment, CompilerConfig, CompilerFacadeImpl, 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, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InterpolationConfig, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, 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, PrefixNot, PropertyRead, Identifiers as R3Identifiers, R3NgModuleMetadataKind, R3SelectorScopeMode, R3TargetBinder, R3TemplateDependencyKind, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveVisitor, RegularExpressionLiteral, ResourceLoader, ReturnStatement, SCHEMA, SECURITY_SCHEMA, 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$1 as ViewEncapsulation, VoidExpr, VoidExpression, WrappedNodeExpr, Xliff, Xliff2, Xmb, XmlParser, Xtb, _ATTR_TO_PROP, 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, escapeRegExp, findMatchingDirectivesAndPipes, getHtmlTagDefinition, getNsPrefix, getSafePropertyAccessString, identifierName, isNgContainer, isNgContent, isNgTemplate, jsDocComment, leadingComment, literal, literalMap, makeBindingParser, mergeNsAndName, output_ast as outputAst, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, sanitizeIdentifier, setEnableTemplateSourceLocations, splitNsName, visitAll$1 as tmplAstVisitAll, verifyHostBindings, visitAll };
35210
35335
  //# sourceMappingURL=compiler.mjs.map