@angular-eslint/bundled-angular-compiler 21.1.1-alpha.1 → 21.1.1-alpha.11

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 (2) hide show
  1. package/dist/index.js +386 -177
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -93,6 +93,8 @@ __export(index_exports, {
93
93
  LiteralExpr: () => LiteralExpr,
94
94
  LiteralMap: () => LiteralMap,
95
95
  LiteralMapExpr: () => LiteralMapExpr,
96
+ LiteralMapPropertyAssignment: () => LiteralMapPropertyAssignment,
97
+ LiteralMapSpreadAssignment: () => LiteralMapSpreadAssignment,
96
98
  LiteralPrimitive: () => LiteralPrimitive,
97
99
  LocalizedString: () => LocalizedString,
98
100
  MapType: () => MapType,
@@ -145,6 +147,8 @@ __export(index_exports, {
145
147
  SelectorlessMatcher: () => SelectorlessMatcher,
146
148
  Serializer: () => Serializer,
147
149
  SplitInterpolation: () => SplitInterpolation,
150
+ SpreadElement: () => SpreadElement,
151
+ SpreadElementExpr: () => SpreadElementExpr,
148
152
  Statement: () => Statement,
149
153
  StmtModifier: () => StmtModifier,
150
154
  StringToken: () => StringToken,
@@ -189,6 +193,7 @@ __export(index_exports, {
189
193
  TmplAstReference: () => Reference,
190
194
  TmplAstSwitchBlock: () => SwitchBlock,
191
195
  TmplAstSwitchBlockCase: () => SwitchBlockCase,
196
+ TmplAstSwitchBlockCaseGroup: () => SwitchBlockCaseGroup,
192
197
  TmplAstTemplate: () => Template,
193
198
  TmplAstText: () => Text$3,
194
199
  TmplAstTextAttribute: () => TextAttribute,
@@ -281,7 +286,7 @@ __export(index_exports, {
281
286
  });
282
287
  module.exports = __toCommonJS(index_exports);
283
288
 
284
- // ../../node_modules/.pnpm/@angular+compiler@21.0.2/node_modules/@angular/compiler/fesm2022/compiler.mjs
289
+ // ../../node_modules/.pnpm/@angular+compiler@21.1.0/node_modules/@angular/compiler/fesm2022/compiler.mjs
285
290
  var _SELECTOR_REGEXP = new RegExp(`(\\:not\\()|(([\\.\\#]?)[-\\w]+)|(?:\\[([-.\\w*\\\\$]+)(?:=(["']?)([^\\]"']*)\\5)?\\])|(\\))|(\\s*,\\s*)`, "g");
286
291
  var CssSelector = class _CssSelector {
287
292
  static {
@@ -1955,9 +1960,9 @@ var LiteralArrayExpr = class _LiteralArrayExpr extends Expression {
1955
1960
  return new _LiteralArrayExpr(this.entries.map((e) => e.clone()), this.type, this.sourceSpan);
1956
1961
  }
1957
1962
  };
1958
- var LiteralMapEntry = class _LiteralMapEntry {
1963
+ var LiteralMapPropertyAssignment = class _LiteralMapPropertyAssignment {
1959
1964
  static {
1960
- __name(this, "LiteralMapEntry");
1965
+ __name(this, "LiteralMapPropertyAssignment");
1961
1966
  }
1962
1967
  key;
1963
1968
  value;
@@ -1971,7 +1976,28 @@ var LiteralMapEntry = class _LiteralMapEntry {
1971
1976
  return this.key === e.key && this.value.isEquivalent(e.value);
1972
1977
  }
1973
1978
  clone() {
1974
- return new _LiteralMapEntry(this.key, this.value.clone(), this.quoted);
1979
+ return new _LiteralMapPropertyAssignment(this.key, this.value.clone(), this.quoted);
1980
+ }
1981
+ isConstant() {
1982
+ return this.value.isConstant();
1983
+ }
1984
+ };
1985
+ var LiteralMapSpreadAssignment = class _LiteralMapSpreadAssignment {
1986
+ static {
1987
+ __name(this, "LiteralMapSpreadAssignment");
1988
+ }
1989
+ expression;
1990
+ constructor(expression) {
1991
+ this.expression = expression;
1992
+ }
1993
+ isEquivalent(e) {
1994
+ return e instanceof _LiteralMapSpreadAssignment && this.expression.isEquivalent(e.expression);
1995
+ }
1996
+ clone() {
1997
+ return new _LiteralMapSpreadAssignment(this.expression.clone());
1998
+ }
1999
+ isConstant() {
2000
+ return this.expression.isConstant();
1975
2001
  }
1976
2002
  };
1977
2003
  var LiteralMapExpr = class _LiteralMapExpr extends Expression {
@@ -1991,7 +2017,7 @@ var LiteralMapExpr = class _LiteralMapExpr extends Expression {
1991
2017
  return e instanceof _LiteralMapExpr && areAllEquivalent(this.entries, e.entries);
1992
2018
  }
1993
2019
  isConstant() {
1994
- return this.entries.every((e) => e.value.isConstant());
2020
+ return this.entries.every((e) => e.isConstant());
1995
2021
  }
1996
2022
  visitExpression(visitor, context) {
1997
2023
  return visitor.visitLiteralMapExpr(this, context);
@@ -2023,6 +2049,28 @@ var CommaExpr = class _CommaExpr extends Expression {
2023
2049
  return new _CommaExpr(this.parts.map((p) => p.clone()));
2024
2050
  }
2025
2051
  };
2052
+ var SpreadElementExpr = class _SpreadElementExpr extends Expression {
2053
+ static {
2054
+ __name(this, "SpreadElementExpr");
2055
+ }
2056
+ expression;
2057
+ constructor(expression, sourceSpan) {
2058
+ super(null, sourceSpan);
2059
+ this.expression = expression;
2060
+ }
2061
+ isEquivalent(e) {
2062
+ return e instanceof _SpreadElementExpr && this.expression.isEquivalent(e.expression);
2063
+ }
2064
+ isConstant() {
2065
+ return this.expression.isConstant();
2066
+ }
2067
+ visitExpression(visitor, context) {
2068
+ return visitor.visitSpreadElementExpr(this, context);
2069
+ }
2070
+ clone() {
2071
+ return new _SpreadElementExpr(this.expression.clone(), this.sourceSpan);
2072
+ }
2073
+ };
2026
2074
  var NULL_EXPR = new LiteralExpr(null, null, null);
2027
2075
  var TYPED_NULL_EXPR = new LiteralExpr(null, INFERRED_TYPE, null);
2028
2076
  var StmtModifier;
@@ -2300,7 +2348,13 @@ var RecursiveAstVisitor$1 = class RecursiveAstVisitor {
2300
2348
  return this.visitExpression(ast, context);
2301
2349
  }
2302
2350
  visitLiteralMapExpr(ast, context) {
2303
- ast.entries.forEach((entry) => entry.value.visitExpression(this, context));
2351
+ ast.entries.forEach((entry) => {
2352
+ if (entry instanceof LiteralMapSpreadAssignment) {
2353
+ entry.expression.visitExpression(this, context);
2354
+ } else {
2355
+ entry.value.visitExpression(this, context);
2356
+ }
2357
+ });
2304
2358
  return this.visitExpression(ast, context);
2305
2359
  }
2306
2360
  visitCommaExpr(ast, context) {
@@ -2319,6 +2373,10 @@ var RecursiveAstVisitor$1 = class RecursiveAstVisitor {
2319
2373
  ast.expr.visitExpression(this, context);
2320
2374
  return this.visitExpression(ast, context);
2321
2375
  }
2376
+ visitSpreadElementExpr(ast, context) {
2377
+ ast.expression.visitExpression(this, context);
2378
+ return this.visitExpression(ast, context);
2379
+ }
2322
2380
  visitAllExpressions(exprs, context) {
2323
2381
  exprs.forEach((expr) => expr.visitExpression(this, context));
2324
2382
  }
@@ -2393,7 +2451,7 @@ function literalArr(values, type, sourceSpan) {
2393
2451
  }
2394
2452
  __name(literalArr, "literalArr");
2395
2453
  function literalMap(values, type = null) {
2396
- return new LiteralMapExpr(values.map((e) => new LiteralMapEntry(e.key, e.value, e.quoted)), type, null);
2454
+ return new LiteralMapExpr(values.map((e) => new LiteralMapPropertyAssignment(e.key, e.value, e.quoted)), type, null);
2397
2455
  }
2398
2456
  __name(literalMap, "literalMap");
2399
2457
  function unary(operator, expr, type, sourceSpan) {
@@ -2497,8 +2555,9 @@ var output_ast = /* @__PURE__ */ Object.freeze({
2497
2555
  LeadingComment,
2498
2556
  LiteralArrayExpr,
2499
2557
  LiteralExpr,
2500
- LiteralMapEntry,
2501
2558
  LiteralMapExpr,
2559
+ LiteralMapPropertyAssignment,
2560
+ LiteralMapSpreadAssignment,
2502
2561
  LiteralPiece,
2503
2562
  LocalizedString,
2504
2563
  MapType,
@@ -2515,6 +2574,7 @@ var output_ast = /* @__PURE__ */ Object.freeze({
2515
2574
  RegularExpressionLiteralExpr,
2516
2575
  ReturnStatement,
2517
2576
  STRING_TYPE,
2577
+ SpreadElementExpr,
2518
2578
  Statement,
2519
2579
  get StmtModifier() {
2520
2580
  return StmtModifier;
@@ -2558,7 +2618,6 @@ var output_ast = /* @__PURE__ */ Object.freeze({
2558
2618
  variable
2559
2619
  });
2560
2620
  var CONSTANT_PREFIX = "_c";
2561
- var UNKNOWN_VALUE_KEY = variable("<unknown>");
2562
2621
  var KEY_CONTEXT = {};
2563
2622
  var POOL_INCLUSION_LENGTH_THRESHOLD_FOR_STRINGS = 50;
2564
2623
  var FixupExpression = class _FixupExpression extends Expression {
@@ -2645,25 +2704,6 @@ var ConstantPool = class {
2645
2704
  }
2646
2705
  return this.sharedConstants.get(key);
2647
2706
  }
2648
- getLiteralFactory(literal2) {
2649
- if (literal2 instanceof LiteralArrayExpr) {
2650
- const argumentsForKey = literal2.entries.map((e) => e.isConstant() ? e : UNKNOWN_VALUE_KEY);
2651
- const key = GenericKeyFn.INSTANCE.keyOf(literalArr(argumentsForKey));
2652
- return this._getLiteralFactory(key, literal2.entries, (entries) => literalArr(entries));
2653
- } else {
2654
- const expressionForKey = literalMap(literal2.entries.map((e) => ({
2655
- key: e.key,
2656
- value: e.value.isConstant() ? e.value : UNKNOWN_VALUE_KEY,
2657
- quoted: e.quoted
2658
- })));
2659
- const key = GenericKeyFn.INSTANCE.keyOf(expressionForKey);
2660
- return this._getLiteralFactory(key, literal2.entries.map((e) => e.value), (entries) => literalMap(entries.map((value, index) => ({
2661
- key: literal2.entries[index].key,
2662
- value,
2663
- quoted: literal2.entries[index].quoted
2664
- }))));
2665
- }
2666
- }
2667
2707
  getSharedFunctionReference(fn2, prefix, useUniqueName = true) {
2668
2708
  const isArrow = fn2 instanceof ArrowFunctionExpr;
2669
2709
  for (const current of this.statements) {
@@ -2678,23 +2718,6 @@ var ConstantPool = class {
2678
2718
  this.statements.push(fn2 instanceof FunctionExpr ? fn2.toDeclStmt(name, StmtModifier.Final) : new DeclareVarStmt(name, fn2, INFERRED_TYPE, StmtModifier.Final, fn2.sourceSpan));
2679
2719
  return variable(name);
2680
2720
  }
2681
- _getLiteralFactory(key, values, resultMap) {
2682
- let literalFactory = this.literalFactories.get(key);
2683
- const literalFactoryArguments = values.filter((e) => !e.isConstant());
2684
- if (!literalFactory) {
2685
- const resultExpressions = values.map((e, index) => e.isConstant() ? this.getConstLiteral(e, true) : variable(`a${index}`));
2686
- const parameters = resultExpressions.filter(isVariable).map((e) => new FnParam(e.name, DYNAMIC_TYPE));
2687
- const pureFunctionDeclaration = arrowFn(parameters, resultMap(resultExpressions), INFERRED_TYPE);
2688
- const name = this.freshName();
2689
- this.statements.push(new DeclareVarStmt(name, pureFunctionDeclaration, INFERRED_TYPE, StmtModifier.Final));
2690
- literalFactory = variable(name);
2691
- this.literalFactories.set(key, literalFactory);
2692
- }
2693
- return {
2694
- literalFactory,
2695
- literalFactoryArguments
2696
- };
2697
- }
2698
2721
  uniqueName(name, alwaysIncludeSuffix = true) {
2699
2722
  const count = this._claimedNames.get(name) ?? 0;
2700
2723
  const result = count === 0 && !alwaysIncludeSuffix ? `${name}` : `${name}${count}`;
@@ -2726,11 +2749,15 @@ var GenericKeyFn = class _GenericKeyFn {
2726
2749
  } else if (expr instanceof LiteralMapExpr) {
2727
2750
  const entries = [];
2728
2751
  for (const entry of expr.entries) {
2729
- let key = entry.key;
2730
- if (entry.quoted) {
2731
- key = `"${key}"`;
2752
+ if (entry instanceof LiteralMapSpreadAssignment) {
2753
+ entries.push("..." + this.keyOf(entry.expression));
2754
+ } else {
2755
+ let key = entry.key;
2756
+ if (entry.quoted) {
2757
+ key = `"${key}"`;
2758
+ }
2759
+ entries.push(key + ":" + this.keyOf(entry.value));
2732
2760
  }
2733
- entries.push(key + ":" + this.keyOf(entry.value));
2734
2761
  }
2735
2762
  return `{${entries.join(",")}}`;
2736
2763
  } else if (expr instanceof ExternalExpr) {
@@ -2739,15 +2766,13 @@ var GenericKeyFn = class _GenericKeyFn {
2739
2766
  return `read(${expr.name})`;
2740
2767
  } else if (expr instanceof TypeofExpr) {
2741
2768
  return `typeof(${this.keyOf(expr.expr)})`;
2769
+ } else if (expr instanceof SpreadElementExpr) {
2770
+ return `...${this.keyOf(expr.expression)}`;
2742
2771
  } else {
2743
2772
  throw new Error(`${this.constructor.name} does not handle expressions of type ${expr.constructor.name}`);
2744
2773
  }
2745
2774
  }
2746
2775
  };
2747
- function isVariable(e) {
2748
- return e instanceof ReadVarExpr;
2749
- }
2750
- __name(isVariable, "isVariable");
2751
2776
  function isLongStringLiteral(expr) {
2752
2777
  return expr instanceof LiteralExpr && typeof expr.value === "string" && expr.value.length >= POOL_INCLUSION_LENGTH_THRESHOLD_FOR_STRINGS;
2753
2778
  }
@@ -4194,8 +4219,13 @@ var AbstractEmitterVisitor = class {
4194
4219
  visitLiteralMapExpr(ast, ctx) {
4195
4220
  ctx.print(ast, `{`);
4196
4221
  this.visitAllObjects((entry) => {
4197
- ctx.print(ast, `${escapeIdentifier(entry.key, this._escapeDollarInStrings, entry.quoted)}:`);
4198
- entry.value.visitExpression(this, ctx);
4222
+ if (entry instanceof LiteralMapSpreadAssignment) {
4223
+ ctx.print(ast, "...");
4224
+ entry.expression.visitExpression(this, ctx);
4225
+ } else {
4226
+ ctx.print(ast, `${escapeIdentifier(entry.key, this._escapeDollarInStrings, entry.quoted)}:`);
4227
+ entry.value.visitExpression(this, ctx);
4228
+ }
4199
4229
  }, ast.entries, ctx, ",");
4200
4230
  ctx.print(ast, `}`);
4201
4231
  return null;
@@ -4209,6 +4239,10 @@ var AbstractEmitterVisitor = class {
4209
4239
  visitParenthesizedExpr(ast, ctx) {
4210
4240
  ast.expr.visitExpression(this, ctx);
4211
4241
  }
4242
+ visitSpreadElementExpr(ast, ctx) {
4243
+ ctx.print(ast, "...");
4244
+ ast.expression.visitExpression(this, ctx);
4245
+ }
4212
4246
  visitAllExpressions(expressions, ctx, separator) {
4213
4247
  this.visitAllObjects((expr) => expr.visitExpression(this, ctx), expressions, ctx, separator);
4214
4248
  }
@@ -4551,7 +4585,7 @@ var ImplicitReceiver = class extends AST {
4551
4585
  return visitor.visitImplicitReceiver(this, context);
4552
4586
  }
4553
4587
  };
4554
- var ThisReceiver = class extends ImplicitReceiver {
4588
+ var ThisReceiver = class extends AST {
4555
4589
  static {
4556
4590
  __name(this, "ThisReceiver");
4557
4591
  }
@@ -4699,6 +4733,19 @@ var LiteralArray = class extends AST {
4699
4733
  return visitor.visitLiteralArray(this, context);
4700
4734
  }
4701
4735
  };
4736
+ var SpreadElement = class extends AST {
4737
+ static {
4738
+ __name(this, "SpreadElement");
4739
+ }
4740
+ expression;
4741
+ constructor(span, sourceSpan, expression) {
4742
+ super(span, sourceSpan);
4743
+ this.expression = expression;
4744
+ }
4745
+ visit(visitor, context = null) {
4746
+ return visitor.visitSpreadElement(this, context);
4747
+ }
4748
+ };
4702
4749
  var LiteralMap = class extends AST {
4703
4750
  static {
4704
4751
  __name(this, "LiteralMap");
@@ -5090,6 +5137,9 @@ var RecursiveAstVisitor2 = class {
5090
5137
  }
5091
5138
  visitRegularExpressionLiteral(ast, context) {
5092
5139
  }
5140
+ visitSpreadElement(ast, context) {
5141
+ this.visit(ast.expression, context);
5142
+ }
5093
5143
  visitAll(asts, context) {
5094
5144
  for (const ast of asts) {
5095
5145
  this.visit(ast, context);
@@ -5622,12 +5672,12 @@ var SwitchBlock = class extends BlockNode {
5622
5672
  __name(this, "SwitchBlock");
5623
5673
  }
5624
5674
  expression;
5625
- cases;
5675
+ groups;
5626
5676
  unknownBlocks;
5627
- constructor(expression, cases, unknownBlocks, sourceSpan, startSourceSpan, endSourceSpan, nameSpan) {
5677
+ constructor(expression, groups, unknownBlocks, sourceSpan, startSourceSpan, endSourceSpan, nameSpan) {
5628
5678
  super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);
5629
5679
  this.expression = expression;
5630
- this.cases = cases;
5680
+ this.groups = groups;
5631
5681
  this.unknownBlocks = unknownBlocks;
5632
5682
  }
5633
5683
  visit(visitor) {
@@ -5639,16 +5689,29 @@ var SwitchBlockCase = class extends BlockNode {
5639
5689
  __name(this, "SwitchBlockCase");
5640
5690
  }
5641
5691
  expression;
5692
+ constructor(expression, sourceSpan, startSourceSpan, endSourceSpan, nameSpan) {
5693
+ super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);
5694
+ this.expression = expression;
5695
+ }
5696
+ visit(visitor) {
5697
+ return visitor.visitSwitchBlockCase(this);
5698
+ }
5699
+ };
5700
+ var SwitchBlockCaseGroup = class extends BlockNode {
5701
+ static {
5702
+ __name(this, "SwitchBlockCaseGroup");
5703
+ }
5704
+ cases;
5642
5705
  children;
5643
5706
  i18n;
5644
- constructor(expression, children, sourceSpan, startSourceSpan, endSourceSpan, nameSpan, i18n2) {
5707
+ constructor(cases, children, sourceSpan, startSourceSpan, endSourceSpan, nameSpan, i18n2) {
5645
5708
  super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);
5646
- this.expression = expression;
5709
+ this.cases = cases;
5647
5710
  this.children = children;
5648
5711
  this.i18n = i18n2;
5649
5712
  }
5650
5713
  visit(visitor) {
5651
- return visitor.visitSwitchBlockCase(this);
5714
+ return visitor.visitSwitchBlockCaseGroup(this);
5652
5715
  }
5653
5716
  };
5654
5717
  var ForLoopBlock = class extends BlockNode {
@@ -6007,9 +6070,12 @@ var RecursiveVisitor$1 = class RecursiveVisitor {
6007
6070
  visitAll$1(this, block.children);
6008
6071
  }
6009
6072
  visitSwitchBlock(block) {
6010
- visitAll$1(this, block.cases);
6073
+ visitAll$1(this, block.groups);
6011
6074
  }
6012
6075
  visitSwitchBlockCase(block) {
6076
+ }
6077
+ visitSwitchBlockCaseGroup(block) {
6078
+ visitAll$1(this, block.cases);
6013
6079
  visitAll$1(this, block.children);
6014
6080
  }
6015
6081
  visitForLoopBlock(block) {
@@ -7419,7 +7485,7 @@ var JitEmitterVisitor = class extends AbstractJsEmitterVisitor {
7419
7485
  this.refResolver = refResolver;
7420
7486
  }
7421
7487
  createReturnStmt(ctx) {
7422
- const stmt = new ReturnStatement(new LiteralMapExpr(this._evalExportedVars.map((resultVar) => new LiteralMapEntry(resultVar, variable(resultVar), false))));
7488
+ const stmt = new ReturnStatement(new LiteralMapExpr(this._evalExportedVars.map((resultVar) => new LiteralMapPropertyAssignment(resultVar, variable(resultVar), false))));
7423
7489
  stmt.visitStatement(this, ctx);
7424
7490
  }
7425
7491
  getArgs() {
@@ -8767,6 +8833,7 @@ function createControlOp(op) {
8767
8833
  return {
8768
8834
  kind: OpKind.Control,
8769
8835
  target: op.target,
8836
+ name: op.name,
8770
8837
  expression: op.expression,
8771
8838
  bindingKind: op.bindingKind,
8772
8839
  securityContext: op.securityContext,
@@ -9746,8 +9813,12 @@ function transformExpressionsInExpression(expr, transform2, flags) {
9746
9813
  expr.entries[i] = transformExpressionsInExpression(expr.entries[i], transform2, flags);
9747
9814
  }
9748
9815
  } else if (expr instanceof LiteralMapExpr) {
9749
- for (let i = 0; i < expr.entries.length; i++) {
9750
- expr.entries[i].value = transformExpressionsInExpression(expr.entries[i].value, transform2, flags);
9816
+ for (const entry of expr.entries) {
9817
+ if (entry instanceof LiteralMapSpreadAssignment) {
9818
+ entry.expression = transformExpressionsInExpression(entry.expression, transform2, flags);
9819
+ } else {
9820
+ entry.value = transformExpressionsInExpression(entry.value, transform2, flags);
9821
+ }
9751
9822
  }
9752
9823
  } else if (expr instanceof ConditionalExpr) {
9753
9824
  expr.condition = transformExpressionsInExpression(expr.condition, transform2, flags);
@@ -9783,6 +9854,8 @@ function transformExpressionsInExpression(expr, transform2, flags) {
9783
9854
  }
9784
9855
  } else if (expr instanceof ParenthesizedExpr) {
9785
9856
  expr.expr = transformExpressionsInExpression(expr.expr, transform2, flags);
9857
+ } else if (expr instanceof SpreadElementExpr) {
9858
+ expr.expression = transformExpressionsInExpression(expr.expression, transform2, flags);
9786
9859
  } else if (expr instanceof ReadVarExpr || expr instanceof ExternalExpr || expr instanceof LiteralExpr || expr instanceof RegularExpressionLiteralExpr) ;
9787
9860
  else {
9788
9861
  throw new Error(`Unhandled expression kind: ${expr.constructor.name}`);
@@ -10834,7 +10907,7 @@ function extractAttributes(job) {
10834
10907
  }
10835
10908
  break;
10836
10909
  case OpKind.Control:
10837
- OpList.insertBefore(createExtractedAttributeOp(op.target, BindingKind.Property, null, "field", null, null, null, op.securityContext), lookupElement$3(elements, op.target));
10910
+ OpList.insertBefore(createExtractedAttributeOp(op.target, BindingKind.Property, null, op.name, null, null, null, op.securityContext), lookupElement$3(elements, op.target));
10838
10911
  break;
10839
10912
  case OpKind.TwoWayProperty:
10840
10913
  OpList.insertBefore(createExtractedAttributeOp(op.target, BindingKind.TwoWayProperty, null, op.name, null, null, null, op.securityContext), lookupElement$3(elements, op.target));
@@ -10947,7 +11020,7 @@ function specializeBindings(job) {
10947
11020
  OpList.replace(op, createAttributeOp(op.target, null, op.name, op.expression, op.securityContext, false, op.isStructuralTemplateAttribute, op.templateKind, op.i18nMessage, op.sourceSpan));
10948
11021
  } else if (job.kind === CompilationJobKind.Host) {
10949
11022
  OpList.replace(op, createDomPropertyOp(op.name, op.expression, op.bindingKind, op.i18nContext, op.securityContext, op.sourceSpan));
10950
- } else if (op.name === "field") {
11023
+ } else if (op.name === "formField") {
10951
11024
  OpList.replace(op, createControlOp(op));
10952
11025
  } else {
10953
11026
  OpList.replace(op, createPropertyOp(op.target, op.name, op.expression, op.bindingKind, op.securityContext, op.isStructuralTemplateAttribute, op.templateKind, op.i18nContext, op.i18nMessage, op.sourceSpan));
@@ -14799,6 +14872,11 @@ var _Tokenizer = class {
14799
14872
  if (this._attemptCharCode($LBRACE)) {
14800
14873
  this._beginToken(25);
14801
14874
  this._endToken([]);
14875
+ } else if (this._isBlockStart() && (startToken.parts[0] === "case" || startToken.parts[0] === "default")) {
14876
+ this._beginToken(25);
14877
+ this._endToken([]);
14878
+ this._beginToken(26);
14879
+ this._endToken([]);
14802
14880
  } else {
14803
14881
  startToken.type = 28;
14804
14882
  }
@@ -16816,7 +16894,18 @@ var _Scanner = class {
16816
16894
  switch (peek) {
16817
16895
  case $PERIOD:
16818
16896
  this.advance();
16819
- return isDigit(this.peek) ? this.scanNumber(start) : newCharacterToken(start, this.index, $PERIOD);
16897
+ if (isDigit(this.peek)) {
16898
+ return this.scanNumber(start);
16899
+ }
16900
+ if (this.peek !== $PERIOD) {
16901
+ return newCharacterToken(start, this.index, $PERIOD);
16902
+ }
16903
+ this.advance();
16904
+ if (this.peek === $PERIOD) {
16905
+ this.advance();
16906
+ return newOperatorToken(start, this.index, "...");
16907
+ }
16908
+ return this.error(`Unexpected character [${String.fromCharCode(peek)}]`, 0);
16820
16909
  case $LPAREN:
16821
16910
  case $RPAREN:
16822
16911
  case $LBRACKET:
@@ -17791,14 +17880,14 @@ var _ParseAST = class {
17791
17880
  return new PrefixNot(this.span(start), this.sourceSpan(start), result);
17792
17881
  }
17793
17882
  } else if (this.next.isKeywordTypeof()) {
17794
- this.advance();
17795
17883
  const start = this.inputIndex;
17796
- let result = this.parsePrefix();
17884
+ this.advance();
17885
+ const result = this.parsePrefix();
17797
17886
  return new TypeofExpression(this.span(start), this.sourceSpan(start), result);
17798
17887
  } else if (this.next.isKeywordVoid()) {
17799
- this.advance();
17800
17888
  const start = this.inputIndex;
17801
- let result = this.parsePrefix();
17889
+ this.advance();
17890
+ const result = this.parsePrefix();
17802
17891
  return new VoidExpression(this.span(start), this.sourceSpan(start), result);
17803
17892
  }
17804
17893
  return this.parseCallChain();
@@ -17860,11 +17949,7 @@ var _ParseAST = class {
17860
17949
  this.advance();
17861
17950
  return new ThisReceiver(this.span(start), this.sourceSpan(start));
17862
17951
  } else if (this.consumeOptionalCharacter($LBRACKET)) {
17863
- this.rbracketsExpected++;
17864
- const elements = this.parseExpressionList($RBRACKET);
17865
- this.rbracketsExpected--;
17866
- this.expectCharacter($RBRACKET);
17867
- return new LiteralArray(this.span(start), this.sourceSpan(start), elements);
17952
+ return this.parseLiteralArray(start);
17868
17953
  } else if (this.next.isCharacter($LBRACE)) {
17869
17954
  return this.parseLiteralMap();
17870
17955
  } else if (this.next.isIdentifier()) {
@@ -17894,16 +17979,21 @@ var _ParseAST = class {
17894
17979
  return new EmptyExpr$1(this.span(start), this.sourceSpan(start));
17895
17980
  }
17896
17981
  }
17897
- parseExpressionList(terminator) {
17898
- const result = [];
17982
+ parseLiteralArray(arrayStart) {
17983
+ this.rbracketsExpected++;
17984
+ const elements = [];
17899
17985
  do {
17900
- if (!this.next.isCharacter(terminator)) {
17901
- result.push(this.parsePipe());
17986
+ if (this.next.isOperator("...")) {
17987
+ elements.push(this.parseSpreadElement());
17988
+ } else if (!this.next.isCharacter($RBRACKET)) {
17989
+ elements.push(this.parsePipe());
17902
17990
  } else {
17903
17991
  break;
17904
17992
  }
17905
17993
  } while (this.consumeOptionalCharacter($COMMA));
17906
- return result;
17994
+ this.rbracketsExpected--;
17995
+ this.expectCharacter($RBRACKET);
17996
+ return new LiteralArray(this.span(arrayStart), this.sourceSpan(arrayStart), elements);
17907
17997
  }
17908
17998
  parseLiteralMap() {
17909
17999
  const keys = [];
@@ -17914,11 +18004,26 @@ var _ParseAST = class {
17914
18004
  this.rbracesExpected++;
17915
18005
  do {
17916
18006
  const keyStart = this.inputIndex;
18007
+ if (this.next.isOperator("...")) {
18008
+ this.advance();
18009
+ keys.push({
18010
+ kind: "spread",
18011
+ span: this.span(keyStart),
18012
+ sourceSpan: this.sourceSpan(keyStart)
18013
+ });
18014
+ values.push(this.parsePipe());
18015
+ continue;
18016
+ }
17917
18017
  const quoted = this.next.isString();
17918
18018
  const key = this.expectIdentifierOrKeywordOrString();
18019
+ const keySpan = this.span(keyStart);
18020
+ const keySourceSpan = this.sourceSpan(keyStart);
17919
18021
  const literalMapKey = {
18022
+ kind: "property",
17920
18023
  key,
17921
- quoted
18024
+ quoted,
18025
+ span: keySpan,
18026
+ sourceSpan: keySourceSpan
17922
18027
  };
17923
18028
  keys.push(literalMapKey);
17924
18029
  if (quoted) {
@@ -17928,9 +18033,7 @@ var _ParseAST = class {
17928
18033
  values.push(this.parsePipe());
17929
18034
  } else {
17930
18035
  literalMapKey.isShorthandInitialized = true;
17931
- const span = this.span(keyStart);
17932
- const sourceSpan = this.sourceSpan(keyStart);
17933
- values.push(new PropertyRead(span, sourceSpan, sourceSpan, new ImplicitReceiver(span, sourceSpan), key));
18036
+ values.push(new PropertyRead(keySpan, keySourceSpan, keySourceSpan, new ImplicitReceiver(keySpan, keySourceSpan), key));
17934
18037
  }
17935
18038
  } while (this.consumeOptionalCharacter($COMMA) && !this.next.isCharacter($RBRACE));
17936
18039
  this.rbracesExpected--;
@@ -17985,13 +18088,26 @@ var _ParseAST = class {
17985
18088
  return isSafe ? new SafeCall(span, sourceSpan, receiver, args, argumentSpan) : new Call(span, sourceSpan, receiver, args, argumentSpan);
17986
18089
  }
17987
18090
  parseCallArguments() {
17988
- if (this.next.isCharacter($RPAREN)) return [];
18091
+ if (this.next.isCharacter($RPAREN)) {
18092
+ return [];
18093
+ }
17989
18094
  const positionals = [];
17990
18095
  do {
17991
- positionals.push(this.parsePipe());
18096
+ positionals.push(this.next.isOperator("...") ? this.parseSpreadElement() : this.parsePipe());
17992
18097
  } while (this.consumeOptionalCharacter($COMMA));
17993
18098
  return positionals;
17994
18099
  }
18100
+ parseSpreadElement() {
18101
+ if (!this.next.isOperator("...")) {
18102
+ this.error("Spread element must start with '...' operator");
18103
+ }
18104
+ const spreadStart = this.inputIndex;
18105
+ this.advance();
18106
+ const expression = this.parsePipe();
18107
+ const span = this.span(spreadStart);
18108
+ const sourceSpan = this.sourceSpan(spreadStart);
18109
+ return new SpreadElement(span, sourceSpan, expression);
18110
+ }
17995
18111
  expectTemplateBindingKey() {
17996
18112
  let result = "";
17997
18113
  let operatorFound = false;
@@ -18284,7 +18400,12 @@ var SerializeExpressionVisitor = class {
18284
18400
  return `[${ast.expressions.map((e) => e.visit(this, context)).join(", ")}]`;
18285
18401
  }
18286
18402
  visitLiteralMap(ast, context) {
18287
- return `{${zip(ast.keys.map((literal2) => literal2.quoted ? `'${literal2.key}'` : literal2.key), ast.values.map((value) => value.visit(this, context))).map(([key, value]) => `${key}: ${value}`).join(", ")}}`;
18403
+ return `{${zip(ast.keys.map((literal2) => {
18404
+ if (literal2.kind === "spread") {
18405
+ return "...";
18406
+ }
18407
+ return literal2.quoted ? `'${literal2.key}'` : literal2.key;
18408
+ }), ast.values.map((value) => value.visit(this, context))).map(([key, value]) => `${key}: ${value}`).join(", ")}}`;
18288
18409
  }
18289
18410
  visitLiteralPrimitive(ast) {
18290
18411
  if (ast.value === null) return "null";
@@ -18310,7 +18431,7 @@ var SerializeExpressionVisitor = class {
18310
18431
  return `${ast.expression.visit(this, context)}!`;
18311
18432
  }
18312
18433
  visitPropertyRead(ast, context) {
18313
- if (ast.receiver instanceof ImplicitReceiver) {
18434
+ if (ast.receiver instanceof ImplicitReceiver || ast.receiver instanceof ThisReceiver) {
18314
18435
  return ast.name;
18315
18436
  } else {
18316
18437
  return `${ast.receiver.visit(this, context)}.${ast.name}`;
@@ -18357,6 +18478,9 @@ var SerializeExpressionVisitor = class {
18357
18478
  visitTaggedTemplateLiteral(ast, context) {
18358
18479
  return ast.tag.visit(this, context) + ast.template.visit(this, context);
18359
18480
  }
18481
+ visitSpreadElement(ast, context) {
18482
+ return `...${ast.expression.visit(this, context)}`;
18483
+ }
18360
18484
  visitParenthesizedExpression(ast, context) {
18361
18485
  return "(" + ast.expression.visit(this, context) + ")";
18362
18486
  }
@@ -18381,8 +18505,8 @@ function SECURITY_SCHEMA() {
18381
18505
  _SECURITY_SCHEMA = {};
18382
18506
  registerContext(SecurityContext.HTML, ["iframe|srcdoc", "*|innerHTML", "*|outerHTML"]);
18383
18507
  registerContext(SecurityContext.STYLE, ["*|style"]);
18384
- registerContext(SecurityContext.URL, ["*|formAction", "area|href", "area|ping", "audio|src", "a|href", "a|xlink:href", "a|ping", "blockquote|cite", "body|background", "del|cite", "form|action", "img|src", "input|src", "ins|cite", "q|cite", "source|src", "track|src", "video|poster", "video|src", "annotation|href", "annotation|xlink:href", "annotation-xml|href", "annotation-xml|xlink:href", "maction|href", "maction|xlink:href", "malignmark|href", "malignmark|xlink:href", "math|href", "math|xlink:href", "mroot|href", "mroot|xlink:href", "msqrt|href", "msqrt|xlink:href", "merror|href", "merror|xlink:href", "mfrac|href", "mfrac|xlink:href", "mglyph|href", "mglyph|xlink:href", "msub|href", "msub|xlink:href", "msup|href", "msup|xlink:href", "msubsup|href", "msubsup|xlink:href", "mmultiscripts|href", "mmultiscripts|xlink:href", "mprescripts|href", "mprescripts|xlink:href", "mi|href", "mi|xlink:href", "mn|href", "mn|xlink:href", "mo|href", "mo|xlink:href", "mpadded|href", "mpadded|xlink:href", "mphantom|href", "mphantom|xlink:href", "mrow|href", "mrow|xlink:href", "ms|href", "ms|xlink:href", "mspace|href", "mspace|xlink:href", "mstyle|href", "mstyle|xlink:href", "mtable|href", "mtable|xlink:href", "mtd|href", "mtd|xlink:href", "mtr|href", "mtr|xlink:href", "mtext|href", "mtext|xlink:href", "mover|href", "mover|xlink:href", "munder|href", "munder|xlink:href", "munderover|href", "munderover|xlink:href", "semantics|href", "semantics|xlink:href", "none|href", "none|xlink:href"]);
18385
- registerContext(SecurityContext.RESOURCE_URL, ["applet|code", "applet|codebase", "base|href", "embed|src", "frame|src", "head|profile", "html|manifest", "iframe|src", "link|href", "media|src", "object|codebase", "object|data", "script|src"]);
18508
+ registerContext(SecurityContext.URL, ["*|formAction", "area|href", "a|href", "a|xlink:href", "form|action", "annotation|href", "annotation|xlink:href", "annotation-xml|href", "annotation-xml|xlink:href", "maction|href", "maction|xlink:href", "malignmark|href", "malignmark|xlink:href", "math|href", "math|xlink:href", "mroot|href", "mroot|xlink:href", "msqrt|href", "msqrt|xlink:href", "merror|href", "merror|xlink:href", "mfrac|href", "mfrac|xlink:href", "mglyph|href", "mglyph|xlink:href", "msub|href", "msub|xlink:href", "msup|href", "msup|xlink:href", "msubsup|href", "msubsup|xlink:href", "mmultiscripts|href", "mmultiscripts|xlink:href", "mprescripts|href", "mprescripts|xlink:href", "mi|href", "mi|xlink:href", "mn|href", "mn|xlink:href", "mo|href", "mo|xlink:href", "mpadded|href", "mpadded|xlink:href", "mphantom|href", "mphantom|xlink:href", "mrow|href", "mrow|xlink:href", "ms|href", "ms|xlink:href", "mspace|href", "mspace|xlink:href", "mstyle|href", "mstyle|xlink:href", "mtable|href", "mtable|xlink:href", "mtd|href", "mtd|xlink:href", "mtr|href", "mtr|xlink:href", "mtext|href", "mtext|xlink:href", "mover|href", "mover|xlink:href", "munder|href", "munder|xlink:href", "munderover|href", "munderover|xlink:href", "semantics|href", "semantics|xlink:href", "none|href", "none|xlink:href", "img|src", "video|src"]);
18509
+ registerContext(SecurityContext.RESOURCE_URL, ["base|href", "embed|src", "frame|src", "iframe|src", "link|href", "object|codebase", "object|data", "script|src", "script|href", "script|xlink:href"]);
18386
18510
  registerContext(SecurityContext.ATTRIBUTE_NO_BINDING, ["animate|attributeName", "set|attributeName", "animateMotion|attributeName", "animateTransform|attributeName", "unknown|attributeName", "iframe|sandbox", "iframe|allow", "iframe|allowFullscreen", "iframe|referrerPolicy", "iframe|csp", "iframe|fetchPriority", "unknown|sandbox", "unknown|allow", "unknown|allowFullscreen", "unknown|referrerPolicy", "unknown|csp", "unknown|fetchPriority"]);
18387
18511
  }
18388
18512
  return _SECURITY_SCHEMA;
@@ -20270,6 +20394,8 @@ var UPDATE_ORDERING = [{
20270
20394
  test: nonInterpolationPropertyKindTest
20271
20395
  }, {
20272
20396
  test: kindWithInterpolationTest(OpKind.Attribute, false)
20397
+ }, {
20398
+ test: kindTest(OpKind.Control)
20273
20399
  }];
20274
20400
  var UPDATE_HOST_ORDERING = [{
20275
20401
  test: kindWithInterpolationTest(OpKind.DomProperty, true)
@@ -20288,7 +20414,7 @@ var UPDATE_HOST_ORDERING = [{
20288
20414
  }, {
20289
20415
  test: kindTest(OpKind.ClassProp)
20290
20416
  }];
20291
- var handledOpKinds = /* @__PURE__ */ new Set([OpKind.Listener, OpKind.TwoWayListener, OpKind.AnimationListener, OpKind.StyleMap, OpKind.ClassMap, OpKind.StyleProp, OpKind.ClassProp, OpKind.Property, OpKind.TwoWayProperty, OpKind.DomProperty, OpKind.Attribute, OpKind.Animation]);
20417
+ var handledOpKinds = /* @__PURE__ */ new Set([OpKind.Listener, OpKind.TwoWayListener, OpKind.AnimationListener, OpKind.StyleMap, OpKind.ClassMap, OpKind.StyleProp, OpKind.ClassProp, OpKind.Property, OpKind.TwoWayProperty, OpKind.DomProperty, OpKind.Attribute, OpKind.Animation, OpKind.Control]);
20292
20418
  function orderOps(job) {
20293
20419
  for (const unit of job.units) {
20294
20420
  orderWithin(unit.create, CREATE_ORDERING);
@@ -20551,6 +20677,16 @@ function transformLiteralArray(expr) {
20551
20677
  const derivedEntries = [];
20552
20678
  const nonConstantArgs = [];
20553
20679
  for (const entry of expr.entries) {
20680
+ if (entry instanceof SpreadElementExpr) {
20681
+ if (entry.expression.isConstant()) {
20682
+ derivedEntries.push(entry);
20683
+ } else {
20684
+ const idx = nonConstantArgs.length;
20685
+ nonConstantArgs.push(entry.expression);
20686
+ derivedEntries.push(new SpreadElementExpr(new PureFunctionParameterExpr(idx)));
20687
+ }
20688
+ continue;
20689
+ }
20554
20690
  if (entry.isConstant()) {
20555
20691
  derivedEntries.push(entry);
20556
20692
  } else {
@@ -20566,15 +20702,25 @@ function transformLiteralMap(expr) {
20566
20702
  let derivedEntries = [];
20567
20703
  const nonConstantArgs = [];
20568
20704
  for (const entry of expr.entries) {
20705
+ if (entry instanceof LiteralMapSpreadAssignment) {
20706
+ if (entry.expression.isConstant()) {
20707
+ derivedEntries.push(entry);
20708
+ } else {
20709
+ const idx = nonConstantArgs.length;
20710
+ nonConstantArgs.push(entry.expression);
20711
+ derivedEntries.push(new LiteralMapSpreadAssignment(new PureFunctionParameterExpr(idx)));
20712
+ }
20713
+ continue;
20714
+ }
20569
20715
  if (entry.value.isConstant()) {
20570
20716
  derivedEntries.push(entry);
20571
20717
  } else {
20572
20718
  const idx = nonConstantArgs.length;
20573
20719
  nonConstantArgs.push(entry.value);
20574
- derivedEntries.push(new LiteralMapEntry(entry.key, new PureFunctionParameterExpr(idx), entry.quoted));
20720
+ derivedEntries.push(new LiteralMapPropertyAssignment(entry.key, new PureFunctionParameterExpr(idx), entry.quoted));
20575
20721
  }
20576
20722
  }
20577
- return new PureFunctionExpr(literalMap(derivedEntries), nonConstantArgs);
20723
+ return new PureFunctionExpr(new LiteralMapExpr(derivedEntries), nonConstantArgs);
20578
20724
  }
20579
20725
  __name(transformLiteralMap, "transformLiteralMap");
20580
20726
  function optimizeRegularExpressions(job) {
@@ -20902,13 +21048,14 @@ function property(name, expression, sanitizer, sourceSpan) {
20902
21048
  return propertyBase(Identifiers.property, name, expression, sanitizer, sourceSpan);
20903
21049
  }
20904
21050
  __name(property, "property");
20905
- function control(expression, sanitizer, sourceSpan) {
21051
+ function control(name, expression, sanitizer, sourceSpan) {
20906
21052
  const args = [];
20907
21053
  if (expression instanceof Interpolation2) {
20908
21054
  args.push(interpolationToExpression(expression, sourceSpan));
20909
21055
  } else {
20910
21056
  args.push(expression);
20911
21057
  }
21058
+ args.push(literal(name));
20912
21059
  if (sanitizer !== null) {
20913
21060
  args.push(sanitizer);
20914
21061
  }
@@ -21021,7 +21168,7 @@ function pipeBindV(slot, varOffset, args) {
21021
21168
  __name(pipeBindV, "pipeBindV");
21022
21169
  function textInterpolate(strings, expressions, sourceSpan) {
21023
21170
  const interpolationArgs = collateInterpolationArgs(strings, expressions);
21024
- return callVariadicInstruction(TEXT_INTERPOLATE_CONFIG, [], interpolationArgs, [], sourceSpan);
21171
+ return callVariadicInstruction(TEXT_INTERPOLATE_CONFIG, [], interpolationArgs, sourceSpan);
21025
21172
  }
21026
21173
  __name(textInterpolate, "textInterpolate");
21027
21174
  function i18nExp(expr, sourceSpan) {
@@ -21066,7 +21213,7 @@ function syntheticHostProperty(name, expression, sourceSpan) {
21066
21213
  }
21067
21214
  __name(syntheticHostProperty, "syntheticHostProperty");
21068
21215
  function pureFunction(varOffset, fn2, args) {
21069
- return callVariadicInstructionExpr(PURE_FUNCTION_CONFIG, [literal(varOffset), fn2], args, [], null);
21216
+ return callVariadicInstructionExpr(PURE_FUNCTION_CONFIG, [literal(varOffset), fn2], args, null);
21070
21217
  }
21071
21218
  __name(pureFunction, "pureFunction");
21072
21219
  function attachSourceLocation(templatePath, locations) {
@@ -21092,7 +21239,7 @@ function collateInterpolationArgs(strings, expressions) {
21092
21239
  __name(collateInterpolationArgs, "collateInterpolationArgs");
21093
21240
  function interpolationToExpression(interpolation, sourceSpan) {
21094
21241
  const interpolationArgs = collateInterpolationArgs(interpolation.strings, interpolation.expressions);
21095
- return callVariadicInstructionExpr(VALUE_INTERPOLATE_CONFIG, [], interpolationArgs, [], sourceSpan);
21242
+ return callVariadicInstructionExpr(VALUE_INTERPOLATE_CONFIG, [], interpolationArgs, sourceSpan);
21096
21243
  }
21097
21244
  __name(interpolationToExpression, "interpolationToExpression");
21098
21245
  function call(instruction, args, sourceSpan) {
@@ -21133,23 +21280,23 @@ var PURE_FUNCTION_CONFIG = {
21133
21280
  variable: Identifiers.pureFunctionV,
21134
21281
  mapping: /* @__PURE__ */ __name((n) => n, "mapping")
21135
21282
  };
21136
- function callVariadicInstructionExpr(config, baseArgs, interpolationArgs, extraArgs, sourceSpan) {
21283
+ function callVariadicInstructionExpr(config, baseArgs, interpolationArgs, sourceSpan) {
21137
21284
  const n = config.mapping(interpolationArgs.length);
21138
21285
  const lastInterpolationArg = interpolationArgs.at(-1);
21139
- if (extraArgs.length === 0 && interpolationArgs.length > 1 && lastInterpolationArg instanceof LiteralExpr && lastInterpolationArg.value === "") {
21286
+ if (interpolationArgs.length > 1 && lastInterpolationArg instanceof LiteralExpr && lastInterpolationArg.value === "") {
21140
21287
  interpolationArgs.pop();
21141
21288
  }
21142
21289
  if (n < config.constant.length) {
21143
- return importExpr(config.constant[n]).callFn([...baseArgs, ...interpolationArgs, ...extraArgs], sourceSpan);
21290
+ return importExpr(config.constant[n]).callFn([...baseArgs, ...interpolationArgs], sourceSpan);
21144
21291
  } else if (config.variable !== null) {
21145
- return importExpr(config.variable).callFn([...baseArgs, literalArr(interpolationArgs), ...extraArgs], sourceSpan);
21292
+ return importExpr(config.variable).callFn([...baseArgs, literalArr(interpolationArgs)], sourceSpan);
21146
21293
  } else {
21147
21294
  throw new Error(`AssertionError: unable to call variadic function`);
21148
21295
  }
21149
21296
  }
21150
21297
  __name(callVariadicInstructionExpr, "callVariadicInstructionExpr");
21151
- function callVariadicInstruction(config, baseArgs, interpolationArgs, extraArgs, sourceSpan) {
21152
- return createStatementOp(callVariadicInstructionExpr(config, baseArgs, interpolationArgs, extraArgs, sourceSpan).toStmt());
21298
+ function callVariadicInstruction(config, baseArgs, interpolationArgs, sourceSpan) {
21299
+ return createStatementOp(callVariadicInstructionExpr(config, baseArgs, interpolationArgs, sourceSpan).toStmt());
21153
21300
  }
21154
21301
  __name(callVariadicInstruction, "callVariadicInstruction");
21155
21302
  var GLOBAL_TARGET_RESOLVERS = /* @__PURE__ */ new Map([["window", Identifiers.resolveWindow], ["document", Identifiers.resolveDocument], ["body", Identifiers.resolveBody]]);
@@ -21497,7 +21644,7 @@ function reifyProperty(op) {
21497
21644
  }
21498
21645
  __name(reifyProperty, "reifyProperty");
21499
21646
  function reifyControl(op) {
21500
- return control(op.expression, op.sanitizer, op.sourceSpan);
21647
+ return control(op.name, op.expression, op.sanitizer, op.sourceSpan);
21501
21648
  }
21502
21649
  __name(reifyControl, "reifyControl");
21503
21650
  function reifyIrExpression(expr) {
@@ -23336,6 +23483,10 @@ function ingestElement(unit, element2) {
23336
23483
  ingestNodes(unit, element2.children);
23337
23484
  const endOp = createElementEndOp(id, element2.endSourceSpan ?? element2.startSourceSpan);
23338
23485
  unit.create.push(endOp);
23486
+ const fieldInput = element2.inputs.find((input) => input.name === "formField" && input.type === BindingType.Property);
23487
+ if (fieldInput) {
23488
+ unit.create.push(createControlCreateOp(fieldInput.sourceSpan));
23489
+ }
23339
23490
  if (i18nBlockId !== null) {
23340
23491
  OpList.insertBefore(createI18nEndOp(i18nBlockId, element2.endSourceSpan ?? element2.startSourceSpan), endOp);
23341
23492
  }
@@ -23448,32 +23599,34 @@ function ingestIfBlock(unit, ifBlock) {
23448
23599
  }
23449
23600
  __name(ingestIfBlock, "ingestIfBlock");
23450
23601
  function ingestSwitchBlock(unit, switchBlock) {
23451
- if (switchBlock.cases.length === 0) {
23602
+ if (switchBlock.groups.length === 0) {
23452
23603
  return;
23453
23604
  }
23454
23605
  let firstXref = null;
23455
23606
  let conditions = [];
23456
- for (let i = 0; i < switchBlock.cases.length; i++) {
23457
- const switchCase = switchBlock.cases[i];
23607
+ for (let i = 0; i < switchBlock.groups.length; i++) {
23608
+ const switchCaseGroup = switchBlock.groups[i];
23458
23609
  const cView = unit.job.allocateView(unit.xref);
23459
- const tagName = ingestControlFlowInsertionPoint(unit, cView.xref, switchCase);
23610
+ const tagName = ingestControlFlowInsertionPoint(unit, cView.xref, switchCaseGroup);
23460
23611
  let switchCaseI18nMeta = void 0;
23461
- if (switchCase.i18n !== void 0) {
23462
- if (!(switchCase.i18n instanceof BlockPlaceholder)) {
23463
- throw Error(`Unhandled i18n metadata type for switch block: ${switchCase.i18n?.constructor.name}`);
23612
+ if (switchCaseGroup.i18n !== void 0) {
23613
+ if (!(switchCaseGroup.i18n instanceof BlockPlaceholder)) {
23614
+ throw Error(`Unhandled i18n metadata type for switch block: ${switchCaseGroup.i18n?.constructor.name}`);
23464
23615
  }
23465
- switchCaseI18nMeta = switchCase.i18n;
23616
+ switchCaseI18nMeta = switchCaseGroup.i18n;
23466
23617
  }
23467
23618
  const createOp = i === 0 ? createConditionalCreateOp : createConditionalBranchCreateOp;
23468
- const conditionalCreateOp = createOp(cView.xref, TemplateKind.Block, tagName, "Case", Namespace.HTML, switchCaseI18nMeta, switchCase.startSourceSpan, switchCase.sourceSpan);
23619
+ const conditionalCreateOp = createOp(cView.xref, TemplateKind.Block, tagName, "Case", Namespace.HTML, switchCaseI18nMeta, switchCaseGroup.startSourceSpan, switchCaseGroup.sourceSpan);
23469
23620
  unit.create.push(conditionalCreateOp);
23470
23621
  if (firstXref === null) {
23471
23622
  firstXref = cView.xref;
23472
23623
  }
23473
- const caseExpr = switchCase.expression ? convertAst(switchCase.expression, unit.job, switchBlock.startSourceSpan) : null;
23474
- const conditionalCaseExpr = new ConditionalCaseExpr(caseExpr, conditionalCreateOp.xref, conditionalCreateOp.handle);
23475
- conditions.push(conditionalCaseExpr);
23476
- ingestNodes(cView, switchCase.children);
23624
+ for (const switchCase of switchCaseGroup.cases) {
23625
+ const caseExpr = switchCase.expression ? convertAst(switchCase.expression, unit.job, switchBlock.startSourceSpan) : null;
23626
+ const conditionalCaseExpr = new ConditionalCaseExpr(caseExpr, conditionalCreateOp.xref, conditionalCreateOp.handle);
23627
+ conditions.push(conditionalCaseExpr);
23628
+ }
23629
+ ingestNodes(cView, switchCaseGroup.children);
23477
23630
  }
23478
23631
  unit.update.push(createConditionalOp(firstXref, convertAst(switchBlock.expression, unit.job, null), conditions, switchBlock.sourceSpan));
23479
23632
  }
@@ -23708,8 +23861,7 @@ function convertAst(ast, job, baseSourceSpan) {
23708
23861
  if (ast instanceof ASTWithSource) {
23709
23862
  return convertAst(ast.ast, job, baseSourceSpan);
23710
23863
  } else if (ast instanceof PropertyRead) {
23711
- const isImplicitReceiver = ast.receiver instanceof ImplicitReceiver && !(ast.receiver instanceof ThisReceiver);
23712
- if (isImplicitReceiver) {
23864
+ if (ast.receiver instanceof ImplicitReceiver) {
23713
23865
  return new LexicalReadExpr(ast.name);
23714
23866
  } else {
23715
23867
  return new ReadPropExpr(convertAst(ast.receiver, job, baseSourceSpan), ast.name, null, convertSourceSpan(ast.span, baseSourceSpan));
@@ -23745,8 +23897,8 @@ function convertAst(ast, job, baseSourceSpan) {
23745
23897
  throw new Error(`AssertionError: Chain in unknown context`);
23746
23898
  } else if (ast instanceof LiteralMap) {
23747
23899
  const entries = ast.keys.map((key, idx) => {
23748
- const value = ast.values[idx];
23749
- return new LiteralMapEntry(key.key, convertAst(value, job, baseSourceSpan), key.quoted);
23900
+ const value = convertAst(ast.values[idx], job, baseSourceSpan);
23901
+ return key.kind === "spread" ? new LiteralMapSpreadAssignment(value) : new LiteralMapPropertyAssignment(key.key, value, key.quoted);
23750
23902
  });
23751
23903
  return new LiteralMapExpr(entries, void 0, convertSourceSpan(ast.span, baseSourceSpan));
23752
23904
  } else if (ast instanceof LiteralArray) {
@@ -23779,6 +23931,8 @@ function convertAst(ast, job, baseSourceSpan) {
23779
23931
  return new ParenthesizedExpr(convertAst(ast.expression, job, baseSourceSpan), void 0, convertSourceSpan(ast.span, baseSourceSpan));
23780
23932
  } else if (ast instanceof RegularExpressionLiteral) {
23781
23933
  return new RegularExpressionLiteralExpr(ast.body, ast.flags, baseSourceSpan);
23934
+ } else if (ast instanceof SpreadElement) {
23935
+ return new SpreadElementExpr(convertAst(ast.expression, job, baseSourceSpan));
23782
23936
  } else {
23783
23937
  throw new Error(`Unhandled expression type "${ast.constructor.name}" in file "${baseSourceSpan?.start.file.url}"`);
23784
23938
  }
@@ -23832,9 +23986,6 @@ function ingestElementBindings(unit, op, element2) {
23832
23986
  console.error(`On component ${unit.job.componentName}, the binding ${input.name} is both an i18n attribute and a property. You may want to remove the property binding. This will become a compilation error in future versions of Angular.`);
23833
23987
  }
23834
23988
  bindings.push(createBindingOp(op.xref, BINDING_KINDS.get(input.type), input.name, convertAstWithInterpolation(unit.job, astOf(input.value), input.i18n), input.unit, input.securityContext, false, false, null, asMessage(input.i18n) ?? null, input.sourceSpan));
23835
- if (input.type === BindingType.Property && input.name === "field") {
23836
- unit.create.push(createControlCreateOp(input.sourceSpan));
23837
- }
23838
23989
  }
23839
23990
  unit.create.push(bindings.filter((b) => b?.kind === OpKind.ExtractedAttribute));
23840
23991
  unit.update.push(bindings.filter((b) => b?.kind === OpKind.Binding));
@@ -24056,7 +24207,7 @@ function getQueryPredicate(query, constantPool) {
24056
24207
  }
24057
24208
  }
24058
24209
  __name(getQueryPredicate, "getQueryPredicate");
24059
- function createQueryCreateCall(query, constantPool, queryTypeFns, prependParams) {
24210
+ function getQueryCreateParameters(query, constantPool, prependParams) {
24060
24211
  const parameters = [];
24061
24212
  if (prependParams !== void 0) {
24062
24213
  parameters.push(...prependParams);
@@ -24068,10 +24219,9 @@ function createQueryCreateCall(query, constantPool, queryTypeFns, prependParams)
24068
24219
  if (query.read) {
24069
24220
  parameters.push(query.read);
24070
24221
  }
24071
- const queryCreateFn = query.isSignal ? queryTypeFns.signalBased : queryTypeFns.nonSignal;
24072
- return importExpr(queryCreateFn).callFn(parameters);
24222
+ return parameters;
24073
24223
  }
24074
- __name(createQueryCreateCall, "createQueryCreateCall");
24224
+ __name(getQueryCreateParameters, "getQueryCreateParameters");
24075
24225
  var queryAdvancePlaceholder = Symbol("queryAdvancePlaceholder");
24076
24226
  function collapseAdvanceStatements(statements) {
24077
24227
  const result = [];
@@ -24099,12 +24249,17 @@ function createViewQueriesFunction(viewQueries, constantPool, name) {
24099
24249
  const createStatements = [];
24100
24250
  const updateStatements = [];
24101
24251
  const tempAllocator = temporaryAllocator((st) => updateStatements.push(st), TEMPORARY_NAME);
24252
+ let viewQuerySignalCall = null;
24253
+ let viewQueryCall = null;
24102
24254
  viewQueries.forEach((query) => {
24103
- const queryDefinitionCall = createQueryCreateCall(query, constantPool, {
24104
- signalBased: Identifiers.viewQuerySignal,
24105
- nonSignal: Identifiers.viewQuery
24106
- });
24107
- createStatements.push(queryDefinitionCall.toStmt());
24255
+ const params = getQueryCreateParameters(query, constantPool);
24256
+ if (query.isSignal) {
24257
+ viewQuerySignalCall ??= importExpr(Identifiers.viewQuerySignal);
24258
+ viewQuerySignalCall = viewQuerySignalCall.callFn(params);
24259
+ } else {
24260
+ viewQueryCall ??= importExpr(Identifiers.viewQuery);
24261
+ viewQueryCall = viewQueryCall.callFn(params);
24262
+ }
24108
24263
  if (query.isSignal) {
24109
24264
  updateStatements.push(queryAdvancePlaceholder);
24110
24265
  return;
@@ -24115,6 +24270,12 @@ function createViewQueriesFunction(viewQueries, constantPool, name) {
24115
24270
  const updateDirective = variable(CONTEXT_NAME).prop(query.propertyName).set(query.first ? temporary.prop("first") : temporary);
24116
24271
  updateStatements.push(refresh.and(updateDirective).toStmt());
24117
24272
  });
24273
+ if (viewQuerySignalCall !== null) {
24274
+ createStatements.push(new ExpressionStatement(viewQuerySignalCall));
24275
+ }
24276
+ if (viewQueryCall !== null) {
24277
+ createStatements.push(new ExpressionStatement(viewQueryCall));
24278
+ }
24118
24279
  const viewQueryFnName = name ? `${name}_Query` : null;
24119
24280
  return fn([new FnParam(RENDER_FLAGS, NUMBER_TYPE), new FnParam(CONTEXT_NAME, null)], [renderFlagCheckIfStmt(1, createStatements), renderFlagCheckIfStmt(2, collapseAdvanceStatements(updateStatements))], INFERRED_TYPE, null, viewQueryFnName);
24120
24281
  }
@@ -24123,11 +24284,17 @@ function createContentQueriesFunction(queries, constantPool, name) {
24123
24284
  const createStatements = [];
24124
24285
  const updateStatements = [];
24125
24286
  const tempAllocator = temporaryAllocator((st) => updateStatements.push(st), TEMPORARY_NAME);
24287
+ let contentQuerySignalCall = null;
24288
+ let contentQueryCall = null;
24126
24289
  for (const query of queries) {
24127
- createStatements.push(createQueryCreateCall(query, constantPool, {
24128
- nonSignal: Identifiers.contentQuery,
24129
- signalBased: Identifiers.contentQuerySignal
24130
- }, [variable("dirIndex")]).toStmt());
24290
+ const params = getQueryCreateParameters(query, constantPool, [variable("dirIndex")]);
24291
+ if (query.isSignal) {
24292
+ contentQuerySignalCall ??= importExpr(Identifiers.contentQuerySignal);
24293
+ contentQuerySignalCall = contentQuerySignalCall.callFn(params);
24294
+ } else {
24295
+ contentQueryCall ??= importExpr(Identifiers.contentQuery);
24296
+ contentQueryCall = contentQueryCall.callFn(params);
24297
+ }
24131
24298
  if (query.isSignal) {
24132
24299
  updateStatements.push(queryAdvancePlaceholder);
24133
24300
  continue;
@@ -24138,6 +24305,12 @@ function createContentQueriesFunction(queries, constantPool, name) {
24138
24305
  const updateDirective = variable(CONTEXT_NAME).prop(query.propertyName).set(query.first ? temporary.prop("first") : temporary);
24139
24306
  updateStatements.push(refresh.and(updateDirective).toStmt());
24140
24307
  }
24308
+ if (contentQuerySignalCall !== null) {
24309
+ createStatements.push(new ExpressionStatement(contentQuerySignalCall));
24310
+ }
24311
+ if (contentQueryCall !== null) {
24312
+ createStatements.push(new ExpressionStatement(contentQueryCall));
24313
+ }
24141
24314
  const contentQueriesFnName = name ? `${name}_ContentQueries` : null;
24142
24315
  return fn([new FnParam(RENDER_FLAGS, NUMBER_TYPE), new FnParam(CONTEXT_NAME, null), new FnParam("dirIndex", null)], [renderFlagCheckIfStmt(1, createStatements), renderFlagCheckIfStmt(2, collapseAdvanceStatements(updateStatements))], INFERRED_TYPE, null, contentQueriesFnName);
24143
24316
  }
@@ -24485,7 +24658,7 @@ var BindingParser = class {
24485
24658
  if (ast instanceof NonNullAssert) {
24486
24659
  return this._isAllowedAssignmentEvent(ast.expression);
24487
24660
  }
24488
- if (ast instanceof Call && ast.args.length === 1 && ast.receiver instanceof PropertyRead && ast.receiver.name === "$any" && ast.receiver.receiver instanceof ImplicitReceiver && !(ast.receiver.receiver instanceof ThisReceiver)) {
24661
+ if (ast instanceof Call && ast.args.length === 1 && ast.receiver instanceof PropertyRead && ast.receiver.name === "$any" && ast.receiver.receiver instanceof ImplicitReceiver) {
24489
24662
  return this._isAllowedAssignmentEvent(ast.args[0]);
24490
24663
  }
24491
24664
  if (ast instanceof PropertyRead || ast instanceof KeyedRead) {
@@ -24706,30 +24879,46 @@ __name(createForLoop, "createForLoop");
24706
24879
  function createSwitchBlock(ast, visitor, bindingParser) {
24707
24880
  const errors = validateSwitchBlock(ast);
24708
24881
  const primaryExpression = ast.parameters.length > 0 ? parseBlockParameterToBinding(ast.parameters[0], bindingParser) : bindingParser.parseBinding("", false, ast.sourceSpan, 0);
24709
- const cases = [];
24882
+ const groups = [];
24710
24883
  const unknownBlocks = [];
24711
- let defaultCase = null;
24712
- for (const node of ast.children) {
24713
- if (!(node instanceof Block)) {
24884
+ let collectedCases = [];
24885
+ let firstCaseStart = null;
24886
+ for (const node2 of ast.children) {
24887
+ if (!(node2 instanceof Block)) {
24714
24888
  continue;
24715
24889
  }
24716
- if ((node.name !== "case" || node.parameters.length === 0) && node.name !== "default") {
24717
- unknownBlocks.push(new UnknownBlock(node.name, node.sourceSpan, node.nameSpan));
24890
+ if ((node2.name !== "case" || node2.parameters.length === 0) && node2.name !== "default") {
24891
+ unknownBlocks.push(new UnknownBlock(node2.name, node2.sourceSpan, node2.nameSpan));
24718
24892
  continue;
24719
24893
  }
24720
- const expression = node.name === "case" ? parseBlockParameterToBinding(node.parameters[0], bindingParser) : null;
24721
- const ast2 = new SwitchBlockCase(expression, visitAll(visitor, node.children, node.children), node.sourceSpan, node.startSourceSpan, node.endSourceSpan, node.nameSpan, node.i18n);
24722
- if (expression === null) {
24723
- defaultCase = ast2;
24724
- } else {
24725
- cases.push(ast2);
24894
+ const isCase = node2.name === "case";
24895
+ let expression = null;
24896
+ if (isCase) {
24897
+ expression = parseBlockParameterToBinding(node2.parameters[0], bindingParser);
24726
24898
  }
24899
+ const switchCase = new SwitchBlockCase(expression, node2.sourceSpan, node2.startSourceSpan, node2.endSourceSpan, node2.nameSpan);
24900
+ collectedCases.push(switchCase);
24901
+ const caseWithoutBody = node2.children.length === 0 && node2.endSourceSpan !== null && node2.endSourceSpan.start.offset === node2.endSourceSpan.end.offset;
24902
+ if (caseWithoutBody) {
24903
+ if (firstCaseStart === null) {
24904
+ firstCaseStart = node2.sourceSpan;
24905
+ }
24906
+ continue;
24907
+ }
24908
+ let sourceSpan = node2.sourceSpan;
24909
+ let startSourceSpan = node2.startSourceSpan;
24910
+ if (firstCaseStart !== null) {
24911
+ sourceSpan = new ParseSourceSpan(firstCaseStart.start, node2.sourceSpan.end);
24912
+ startSourceSpan = new ParseSourceSpan(firstCaseStart.start, node2.startSourceSpan.end);
24913
+ firstCaseStart = null;
24914
+ }
24915
+ const group = new SwitchBlockCaseGroup(collectedCases, visitAll(visitor, node2.children, node2.children), sourceSpan, startSourceSpan, node2.endSourceSpan, node2.nameSpan, node2.i18n);
24916
+ groups.push(group);
24917
+ collectedCases = [];
24727
24918
  }
24728
- if (defaultCase !== null) {
24729
- cases.push(defaultCase);
24730
- }
24919
+ const node = new SwitchBlock(primaryExpression, groups, unknownBlocks, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, ast.nameSpan);
24731
24920
  return {
24732
- node: new SwitchBlock(primaryExpression, cases, unknownBlocks, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, ast.nameSpan),
24921
+ node,
24733
24922
  errors
24734
24923
  };
24735
24924
  }
@@ -25274,17 +25463,19 @@ function createViewportTrigger(start, isHydrationTrigger, bindingParser, paramet
25274
25463
  const parsed = bindingParser.parseBinding(parameters[0].expression, false, sourceSpan, sourceSpan.start.offset + start + parameters[0].start);
25275
25464
  if (!(parsed.ast instanceof LiteralMap)) {
25276
25465
  throw new Error('Options parameter of the "viewport" trigger must be an object literal');
25277
- } else if (parsed.ast.keys.some((key) => key.key === "root")) {
25466
+ } else if (parsed.ast.keys.some((key) => key.kind === "spread")) {
25467
+ throw new Error("Spread operator are not allowed in this context");
25468
+ } else if (parsed.ast.keys.some((key) => key.kind === "property" && key.key === "root")) {
25278
25469
  throw new Error('The "root" option is not supported in the options parameter of the "viewport" trigger');
25279
25470
  }
25280
- const triggerIndex = parsed.ast.keys.findIndex((key) => key.key === "trigger");
25471
+ const triggerIndex = parsed.ast.keys.findIndex((key) => key.kind === "property" && key.key === "trigger");
25281
25472
  if (triggerIndex === -1) {
25282
25473
  reference2 = null;
25283
25474
  options = parsed.ast;
25284
25475
  } else {
25285
25476
  const value = parsed.ast.values[triggerIndex];
25286
25477
  const triggerFilter = /* @__PURE__ */ __name((_, index) => index !== triggerIndex, "triggerFilter");
25287
- if (!(value instanceof PropertyRead) || !(value.receiver instanceof ImplicitReceiver) || value.receiver instanceof ThisReceiver) {
25478
+ if (!(value instanceof PropertyRead) || !(value.receiver instanceof ImplicitReceiver)) {
25288
25479
  throw new Error(`"trigger" option of the "viewport" trigger must be an identifier`);
25289
25480
  }
25290
25481
  reference2 = value.name;
@@ -26736,10 +26927,13 @@ var CombinedRecursiveAstVisitor = class extends RecursiveAstVisitor2 {
26736
26927
  }
26737
26928
  visitSwitchBlock(block) {
26738
26929
  this.visit(block.expression);
26739
- this.visitAllTemplateNodes(block.cases);
26930
+ this.visitAllTemplateNodes(block.groups);
26740
26931
  }
26741
26932
  visitSwitchBlockCase(block) {
26742
26933
  block.expression && this.visit(block.expression);
26934
+ }
26935
+ visitSwitchBlockCaseGroup(block) {
26936
+ this.visitAllTemplateNodes(block.cases);
26743
26937
  this.visitAllTemplateNodes(block.children);
26744
26938
  }
26745
26939
  visitForLoopBlock(block) {
@@ -26910,7 +27104,7 @@ var Scope2 = class _Scope {
26910
27104
  this.visitVariable(nodeOrNodes.item);
26911
27105
  nodeOrNodes.contextVariables.forEach((v) => this.visitVariable(v));
26912
27106
  nodeOrNodes.children.forEach((node) => node.visit(this));
26913
- } else if (nodeOrNodes instanceof SwitchBlockCase || nodeOrNodes instanceof ForLoopBlockEmpty || nodeOrNodes instanceof DeferredBlock || nodeOrNodes instanceof DeferredBlockError || nodeOrNodes instanceof DeferredBlockPlaceholder || nodeOrNodes instanceof DeferredBlockLoading || nodeOrNodes instanceof Content) {
27107
+ } else if (nodeOrNodes instanceof SwitchBlockCaseGroup || nodeOrNodes instanceof ForLoopBlockEmpty || nodeOrNodes instanceof DeferredBlock || nodeOrNodes instanceof DeferredBlockError || nodeOrNodes instanceof DeferredBlockPlaceholder || nodeOrNodes instanceof DeferredBlockLoading || nodeOrNodes instanceof Content) {
26914
27108
  nodeOrNodes.children.forEach((node) => node.visit(this));
26915
27109
  } else if (!(nodeOrNodes instanceof HostElement)) {
26916
27110
  nodeOrNodes.forEach((node) => node.visit(this));
@@ -26946,9 +27140,11 @@ var Scope2 = class _Scope {
26946
27140
  this.ingestScopedNode(block);
26947
27141
  }
26948
27142
  visitSwitchBlock(block) {
26949
- block.cases.forEach((node) => node.visit(this));
27143
+ block.groups.forEach((node) => node.visit(this));
26950
27144
  }
26951
27145
  visitSwitchBlockCase(block) {
27146
+ }
27147
+ visitSwitchBlockCaseGroup(block) {
26952
27148
  this.ingestScopedNode(block);
26953
27149
  }
26954
27150
  visitForLoopBlock(block) {
@@ -27076,9 +27272,11 @@ var DirectiveBinder = class _DirectiveBinder {
27076
27272
  block.children.forEach((child) => child.visit(this));
27077
27273
  }
27078
27274
  visitSwitchBlock(block) {
27079
- block.cases.forEach((node) => node.visit(this));
27275
+ block.groups.forEach((node) => node.visit(this));
27080
27276
  }
27081
27277
  visitSwitchBlockCase(block) {
27278
+ }
27279
+ visitSwitchBlockCaseGroup(block) {
27082
27280
  block.children.forEach((node) => node.visit(this));
27083
27281
  }
27084
27282
  visitForLoopBlock(block) {
@@ -27279,7 +27477,7 @@ var TemplateBinder = class _TemplateBinder extends CombinedRecursiveAstVisitor {
27279
27477
  this.deferBlocks.push([nodeOrNodes, this.scope]);
27280
27478
  nodeOrNodes.children.forEach((node) => node.visit(this));
27281
27479
  this.nestingLevel.set(nodeOrNodes, this.level);
27282
- } else if (nodeOrNodes instanceof SwitchBlockCase || nodeOrNodes instanceof ForLoopBlockEmpty || nodeOrNodes instanceof DeferredBlockError || nodeOrNodes instanceof DeferredBlockPlaceholder || nodeOrNodes instanceof DeferredBlockLoading || nodeOrNodes instanceof Content) {
27480
+ } else if (nodeOrNodes instanceof SwitchBlockCaseGroup || nodeOrNodes instanceof ForLoopBlockEmpty || nodeOrNodes instanceof DeferredBlockError || nodeOrNodes instanceof DeferredBlockPlaceholder || nodeOrNodes instanceof DeferredBlockLoading || nodeOrNodes instanceof Content) {
27283
27481
  nodeOrNodes.children.forEach((node) => node.visit(this));
27284
27482
  this.nestingLevel.set(nodeOrNodes, this.level);
27285
27483
  } else if (nodeOrNodes instanceof HostElement) {
@@ -27327,6 +27525,9 @@ var TemplateBinder = class _TemplateBinder extends CombinedRecursiveAstVisitor {
27327
27525
  }
27328
27526
  visitSwitchBlockCase(block) {
27329
27527
  block.expression?.visit(this);
27528
+ }
27529
+ visitSwitchBlockCaseGroup(block) {
27530
+ block.cases.forEach((caseNode) => caseNode.visit(this));
27330
27531
  this.ingestScopedNode(block);
27331
27532
  }
27332
27533
  visitForLoopBlock(block) {
@@ -27371,7 +27572,7 @@ var TemplateBinder = class _TemplateBinder extends CombinedRecursiveAstVisitor {
27371
27572
  binder.ingest(node);
27372
27573
  }
27373
27574
  maybeMap(ast, name) {
27374
- if (!(ast.receiver instanceof ImplicitReceiver) || ast.receiver instanceof ThisReceiver) {
27575
+ if (!(ast.receiver instanceof ImplicitReceiver)) {
27375
27576
  return;
27376
27577
  }
27377
27578
  const target = this.scope.lookup(name);
@@ -29886,7 +30087,7 @@ var MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = "18.0.0";
29886
30087
  function compileDeclareClassMetadata(metadata) {
29887
30088
  const definitionMap = new DefinitionMap();
29888
30089
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
29889
- definitionMap.set("version", literal("21.0.2"));
30090
+ definitionMap.set("version", literal("21.1.0"));
29890
30091
  definitionMap.set("ngImport", importExpr(Identifiers.core));
29891
30092
  definitionMap.set("type", metadata.type);
29892
30093
  definitionMap.set("decorators", metadata.decorators);
@@ -29905,7 +30106,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
29905
30106
  callbackReturnDefinitionMap.set("ctorParameters", metadata.ctorParameters ?? literal(null));
29906
30107
  callbackReturnDefinitionMap.set("propDecorators", metadata.propDecorators ?? literal(null));
29907
30108
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
29908
- definitionMap.set("version", literal("21.0.2"));
30109
+ definitionMap.set("version", literal("21.1.0"));
29909
30110
  definitionMap.set("ngImport", importExpr(Identifiers.core));
29910
30111
  definitionMap.set("type", metadata.type);
29911
30112
  definitionMap.set("resolveDeferredDeps", compileComponentMetadataAsyncResolver(dependencies));
@@ -29982,7 +30183,7 @@ function createDirectiveDefinitionMap(meta) {
29982
30183
  const definitionMap = new DefinitionMap();
29983
30184
  const minVersion = getMinimumVersionForPartialOutput(meta);
29984
30185
  definitionMap.set("minVersion", literal(minVersion));
29985
- definitionMap.set("version", literal("21.0.2"));
30186
+ definitionMap.set("version", literal("21.1.0"));
29986
30187
  definitionMap.set("type", meta.type.value);
29987
30188
  if (meta.isStandalone !== void 0) {
29988
30189
  definitionMap.set("isStandalone", literal(meta.isStandalone));
@@ -30323,12 +30524,15 @@ var BlockPresenceVisitor = class extends RecursiveVisitor$1 {
30323
30524
  visitSwitchBlockCase() {
30324
30525
  this.hasBlocks = true;
30325
30526
  }
30527
+ visitSwitchBlockCaseGroup() {
30528
+ this.hasBlocks = true;
30529
+ }
30326
30530
  };
30327
30531
  var MINIMUM_PARTIAL_LINKER_VERSION$4 = "12.0.0";
30328
30532
  function compileDeclareFactoryFunction(meta) {
30329
30533
  const definitionMap = new DefinitionMap();
30330
30534
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
30331
- definitionMap.set("version", literal("21.0.2"));
30535
+ definitionMap.set("version", literal("21.1.0"));
30332
30536
  definitionMap.set("ngImport", importExpr(Identifiers.core));
30333
30537
  definitionMap.set("type", meta.type.value);
30334
30538
  definitionMap.set("deps", compileDependencies(meta.deps));
@@ -30355,7 +30559,7 @@ __name(compileDeclareInjectableFromMetadata, "compileDeclareInjectableFromMetada
30355
30559
  function createInjectableDefinitionMap(meta) {
30356
30560
  const definitionMap = new DefinitionMap();
30357
30561
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
30358
- definitionMap.set("version", literal("21.0.2"));
30562
+ definitionMap.set("version", literal("21.1.0"));
30359
30563
  definitionMap.set("ngImport", importExpr(Identifiers.core));
30360
30564
  definitionMap.set("type", meta.type.value);
30361
30565
  if (meta.providedIn !== void 0) {
@@ -30397,7 +30601,7 @@ __name(compileDeclareInjectorFromMetadata, "compileDeclareInjectorFromMetadata")
30397
30601
  function createInjectorDefinitionMap(meta) {
30398
30602
  const definitionMap = new DefinitionMap();
30399
30603
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
30400
- definitionMap.set("version", literal("21.0.2"));
30604
+ definitionMap.set("version", literal("21.1.0"));
30401
30605
  definitionMap.set("ngImport", importExpr(Identifiers.core));
30402
30606
  definitionMap.set("type", meta.type.value);
30403
30607
  definitionMap.set("providers", meta.providers);
@@ -30425,7 +30629,7 @@ function createNgModuleDefinitionMap(meta) {
30425
30629
  throw new Error("Invalid path! Local compilation mode should not get into the partial compilation path");
30426
30630
  }
30427
30631
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
30428
- definitionMap.set("version", literal("21.0.2"));
30632
+ definitionMap.set("version", literal("21.1.0"));
30429
30633
  definitionMap.set("ngImport", importExpr(Identifiers.core));
30430
30634
  definitionMap.set("type", meta.type.value);
30431
30635
  if (meta.bootstrap.length > 0) {
@@ -30464,7 +30668,7 @@ __name(compileDeclarePipeFromMetadata, "compileDeclarePipeFromMetadata");
30464
30668
  function createPipeDefinitionMap(meta) {
30465
30669
  const definitionMap = new DefinitionMap();
30466
30670
  definitionMap.set("minVersion", literal(MINIMUM_PARTIAL_LINKER_VERSION));
30467
- definitionMap.set("version", literal("21.0.2"));
30671
+ definitionMap.set("version", literal("21.1.0"));
30468
30672
  definitionMap.set("ngImport", importExpr(Identifiers.core));
30469
30673
  definitionMap.set("type", meta.type.value);
30470
30674
  if (meta.isStandalone !== void 0) {
@@ -30539,7 +30743,7 @@ function compileHmrUpdateCallback(definitions, constantStatements, meta) {
30539
30743
  return new DeclareFunctionStmt(`${meta.className}_UpdateMetadata`, params, body, null, StmtModifier.Final);
30540
30744
  }
30541
30745
  __name(compileHmrUpdateCallback, "compileHmrUpdateCallback");
30542
- var VERSION = new Version("21.0.2");
30746
+ var VERSION = new Version("21.1.0");
30543
30747
  publishFacade(_global);
30544
30748
  // Annotate the CommonJS export names for ESM import in node:
30545
30749
  0 && (module.exports = {
@@ -30615,6 +30819,8 @@ publishFacade(_global);
30615
30819
  LiteralExpr,
30616
30820
  LiteralMap,
30617
30821
  LiteralMapExpr,
30822
+ LiteralMapPropertyAssignment,
30823
+ LiteralMapSpreadAssignment,
30618
30824
  LiteralPrimitive,
30619
30825
  LocalizedString,
30620
30826
  MapType,
@@ -30667,6 +30873,8 @@ publishFacade(_global);
30667
30873
  SelectorlessMatcher,
30668
30874
  Serializer,
30669
30875
  SplitInterpolation,
30876
+ SpreadElement,
30877
+ SpreadElementExpr,
30670
30878
  Statement,
30671
30879
  StmtModifier,
30672
30880
  StringToken,
@@ -30711,6 +30919,7 @@ publishFacade(_global);
30711
30919
  TmplAstReference,
30712
30920
  TmplAstSwitchBlock,
30713
30921
  TmplAstSwitchBlockCase,
30922
+ TmplAstSwitchBlockCaseGroup,
30714
30923
  TmplAstTemplate,
30715
30924
  TmplAstText,
30716
30925
  TmplAstTextAttribute,
@@ -30805,8 +31014,8 @@ publishFacade(_global);
30805
31014
 
30806
31015
  @angular/compiler/fesm2022/compiler.mjs:
30807
31016
  (**
30808
- * @license Angular v21.0.2
30809
- * (c) 2010-2025 Google LLC. https://angular.dev/
31017
+ * @license Angular v21.1.0
31018
+ * (c) 2010-2026 Google LLC. https://angular.dev/
30810
31019
  * License: MIT
30811
31020
  *)
30812
31021
  (**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular-eslint/bundled-angular-compiler",
3
- "version": "21.1.1-alpha.1",
3
+ "version": "21.1.1-alpha.11",
4
4
  "description": "A CJS bundled version of @angular/compiler",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",