@angular/compiler 21.2.1 → 22.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.2.1
2
+ * @license Angular v22.0.0-next.1
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -4820,7 +4820,13 @@ class BoundDeferredTrigger extends DeferredTrigger {
4820
4820
  }
4821
4821
  }
4822
4822
  class NeverDeferredTrigger extends DeferredTrigger {}
4823
- class IdleDeferredTrigger extends DeferredTrigger {}
4823
+ class IdleDeferredTrigger extends DeferredTrigger {
4824
+ timeout;
4825
+ constructor(nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan, timeout) {
4826
+ super(nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);
4827
+ this.timeout = timeout;
4828
+ }
4829
+ }
4824
4830
  class ImmediateDeferredTrigger extends DeferredTrigger {}
4825
4831
  class HoverDeferredTrigger extends DeferredTrigger {
4826
4832
  reference;
@@ -5328,9 +5334,8 @@ let RecursiveVisitor$1 = class RecursiveVisitor {
5328
5334
  visitAll$1(this, block.branches);
5329
5335
  }
5330
5336
  visitIfBlockBranch(block) {
5331
- const blockItems = block.children;
5332
- block.expressionAlias && blockItems.push(block.expressionAlias);
5333
- visitAll$1(this, blockItems);
5337
+ visitAll$1(this, block.children);
5338
+ block.expressionAlias?.visit(this);
5334
5339
  }
5335
5340
  visitContent(content) {
5336
5341
  visitAll$1(this, content.children);
@@ -16693,9 +16698,6 @@ class _ParseAST {
16693
16698
  } else if (this.next.isKeywordFalse()) {
16694
16699
  this.advance();
16695
16700
  return new LiteralPrimitive(this.span(start), this.sourceSpan(start), false);
16696
- } else if (this.next.isKeywordIn()) {
16697
- this.advance();
16698
- return new LiteralPrimitive(this.span(start), this.sourceSpan(start), 'in');
16699
16701
  } else if (this.next.isKeywordThis()) {
16700
16702
  this.advance();
16701
16703
  return new ThisReceiver(this.span(start), this.sourceSpan(start));
@@ -20073,9 +20075,13 @@ function reifyCreateOperations(unit, ops) {
20073
20075
  let args = [];
20074
20076
  switch (op.trigger.kind) {
20075
20077
  case DeferTriggerKind.Never:
20076
- case DeferTriggerKind.Idle:
20077
20078
  case DeferTriggerKind.Immediate:
20078
20079
  break;
20080
+ case DeferTriggerKind.Idle:
20081
+ if (op.trigger.timeout != null) {
20082
+ args = [literal(op.trigger.timeout)];
20083
+ }
20084
+ break;
20079
20085
  case DeferTriggerKind.Timer:
20080
20086
  args = [literal(op.trigger.delay)];
20081
20087
  break;
@@ -22399,7 +22405,8 @@ function ingestDeferBlock(unit, deferBlock) {
22399
22405
  const hasConcreteTrigger = deferOnOps.some(op => op.modifier === "none") || deferWhenOps.some(op => op.modifier === "none");
22400
22406
  if (!hasConcreteTrigger) {
22401
22407
  deferOnOps.push(createDeferOnOp(deferXref, {
22402
- kind: DeferTriggerKind.Idle
22408
+ kind: DeferTriggerKind.Idle,
22409
+ timeout: null
22403
22410
  }, "none", null));
22404
22411
  }
22405
22412
  unit.create.push(deferOnOps);
@@ -22414,7 +22421,8 @@ function calcDeferBlockFlags(deferBlockDetails) {
22414
22421
  function ingestDeferTriggers(modifier, triggers, onOps, whenOps, unit, deferXref) {
22415
22422
  if (triggers.idle !== undefined) {
22416
22423
  const deferOnOp = createDeferOnOp(deferXref, {
22417
- kind: DeferTriggerKind.Idle
22424
+ kind: DeferTriggerKind.Idle,
22425
+ timeout: triggers.idle.timeout ?? null
22418
22426
  }, modifier, triggers.idle.sourceSpan);
22419
22427
  onOps.push(deferOnOp);
22420
22428
  }
@@ -24108,10 +24116,17 @@ function trackTrigger(name, allTriggers, errors, trigger) {
24108
24116
  }
24109
24117
  }
24110
24118
  function createIdleTrigger(parameters, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan) {
24111
- if (parameters.length > 0) {
24112
- throw new Error(`"${OnTriggerType.IDLE}" trigger cannot have parameters`);
24119
+ if (parameters.length > 1) {
24120
+ throw new Error(`"${OnTriggerType.IDLE}" trigger can only have zero or one parameters`);
24121
+ }
24122
+ let timeout = null;
24123
+ if (parameters[0]) {
24124
+ timeout = parseDeferredTime(parameters[0].expression);
24125
+ if (timeout === null) {
24126
+ throw new Error(`Could not parse time value of trigger "${OnTriggerType.IDLE}"`);
24127
+ }
24113
24128
  }
24114
- return new IdleDeferredTrigger(nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);
24129
+ return new IdleDeferredTrigger(nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan, timeout);
24115
24130
  }
24116
24131
  function createTimerTrigger(parameters, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan) {
24117
24132
  if (parameters.length !== 1) {
@@ -24702,19 +24717,18 @@ class HtmlAstToIvyAst {
24702
24717
  let elementHasInlineTemplate = false;
24703
24718
  for (const attribute of attrs) {
24704
24719
  let hasBinding = false;
24705
- const normalizedName = normalizeAttributeName(attribute.name);
24706
24720
  let isTemplateBinding = false;
24707
24721
  if (attribute.i18n) {
24708
24722
  i18nAttrsMeta[attribute.name] = attribute.i18n;
24709
24723
  }
24710
- if (normalizedName.startsWith(TEMPLATE_ATTR_PREFIX)) {
24724
+ if (attribute.name.startsWith(TEMPLATE_ATTR_PREFIX)) {
24711
24725
  if (elementHasInlineTemplate) {
24712
24726
  this.reportError(`Can't have multiple template bindings on one element. Use only one attribute prefixed with *`, attribute.sourceSpan);
24713
24727
  }
24714
24728
  isTemplateBinding = true;
24715
24729
  elementHasInlineTemplate = true;
24716
24730
  const templateValue = attribute.value;
24717
- const templateKey = normalizedName.substring(TEMPLATE_ATTR_PREFIX.length);
24731
+ const templateKey = attribute.name.substring(TEMPLATE_ATTR_PREFIX.length);
24718
24732
  const parsedVariables = [];
24719
24733
  const absoluteValueOffset = attribute.valueSpan ? attribute.valueSpan.fullStart.offset : attribute.sourceSpan.fullStart.offset + attribute.name.length;
24720
24734
  this.bindingParser.parseInlineTemplateBinding(templateKey, templateValue, attribute.sourceSpan, absoluteValueOffset, [], templateParsedProperties, parsedVariables, true);
@@ -24739,13 +24753,12 @@ class HtmlAstToIvyAst {
24739
24753
  };
24740
24754
  }
24741
24755
  parseAttribute(isTemplateElement, attribute, matchableAttributes, parsedProperties, boundEvents, variables, references) {
24742
- const name = normalizeAttributeName(attribute.name);
24756
+ const name = attribute.name;
24743
24757
  const value = attribute.value;
24744
24758
  const srcSpan = attribute.sourceSpan;
24745
24759
  const absoluteOffset = attribute.valueSpan ? attribute.valueSpan.fullStart.offset : srcSpan.fullStart.offset;
24746
24760
  function createKeySpan(srcSpan, prefix, identifier) {
24747
- const normalizationAdjustment = attribute.name.length - name.length;
24748
- const keySpanStart = srcSpan.start.moveBy(prefix.length + normalizationAdjustment);
24761
+ const keySpanStart = srcSpan.start.moveBy(prefix.length);
24749
24762
  const keySpanEnd = keySpanStart.moveBy(identifier.length);
24750
24763
  return new ParseSourceSpan(keySpanStart, keySpanEnd, keySpanStart, identifier);
24751
24764
  }
@@ -24983,9 +24996,6 @@ class NonBindableVisitor {
24983
24996
  }
24984
24997
  }
24985
24998
  const NON_BINDABLE_VISITOR = new NonBindableVisitor();
24986
- function normalizeAttributeName(attrName) {
24987
- return /^data-/i.test(attrName) ? attrName.substring(5) : attrName;
24988
- }
24989
24999
  function addEvents(events, boundEvents) {
24990
25000
  boundEvents.push(...events.map(e => BoundEvent.fromParsedEvent(e)));
24991
25001
  }
@@ -28530,7 +28540,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
28530
28540
  function compileDeclareClassMetadata(metadata) {
28531
28541
  const definitionMap = new DefinitionMap();
28532
28542
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
28533
- definitionMap.set('version', literal('21.2.1'));
28543
+ definitionMap.set('version', literal('22.0.0-next.1'));
28534
28544
  definitionMap.set('ngImport', importExpr(Identifiers.core));
28535
28545
  definitionMap.set('type', metadata.type);
28536
28546
  definitionMap.set('decorators', metadata.decorators);
@@ -28548,7 +28558,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
28548
28558
  callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? literal(null));
28549
28559
  callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? literal(null));
28550
28560
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
28551
- definitionMap.set('version', literal('21.2.1'));
28561
+ definitionMap.set('version', literal('22.0.0-next.1'));
28552
28562
  definitionMap.set('ngImport', importExpr(Identifiers.core));
28553
28563
  definitionMap.set('type', metadata.type);
28554
28564
  definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
@@ -28621,7 +28631,7 @@ function createDirectiveDefinitionMap(meta) {
28621
28631
  const definitionMap = new DefinitionMap();
28622
28632
  const minVersion = getMinimumVersionForPartialOutput(meta);
28623
28633
  definitionMap.set('minVersion', literal(minVersion));
28624
- definitionMap.set('version', literal('21.2.1'));
28634
+ definitionMap.set('version', literal('22.0.0-next.1'));
28625
28635
  definitionMap.set('type', meta.type.value);
28626
28636
  if (meta.isStandalone !== undefined) {
28627
28637
  definitionMap.set('isStandalone', literal(meta.isStandalone));
@@ -28963,7 +28973,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
28963
28973
  function compileDeclareFactoryFunction(meta) {
28964
28974
  const definitionMap = new DefinitionMap();
28965
28975
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
28966
- definitionMap.set('version', literal('21.2.1'));
28976
+ definitionMap.set('version', literal('22.0.0-next.1'));
28967
28977
  definitionMap.set('ngImport', importExpr(Identifiers.core));
28968
28978
  definitionMap.set('type', meta.type.value);
28969
28979
  definitionMap.set('deps', compileDependencies(meta.deps));
@@ -28989,7 +28999,7 @@ function compileDeclareInjectableFromMetadata(meta) {
28989
28999
  function createInjectableDefinitionMap(meta) {
28990
29000
  const definitionMap = new DefinitionMap();
28991
29001
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
28992
- definitionMap.set('version', literal('21.2.1'));
29002
+ definitionMap.set('version', literal('22.0.0-next.1'));
28993
29003
  definitionMap.set('ngImport', importExpr(Identifiers.core));
28994
29004
  definitionMap.set('type', meta.type.value);
28995
29005
  if (meta.providedIn !== undefined) {
@@ -29030,7 +29040,7 @@ function compileDeclareInjectorFromMetadata(meta) {
29030
29040
  function createInjectorDefinitionMap(meta) {
29031
29041
  const definitionMap = new DefinitionMap();
29032
29042
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
29033
- definitionMap.set('version', literal('21.2.1'));
29043
+ definitionMap.set('version', literal('22.0.0-next.1'));
29034
29044
  definitionMap.set('ngImport', importExpr(Identifiers.core));
29035
29045
  definitionMap.set('type', meta.type.value);
29036
29046
  definitionMap.set('providers', meta.providers);
@@ -29057,7 +29067,7 @@ function createNgModuleDefinitionMap(meta) {
29057
29067
  throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
29058
29068
  }
29059
29069
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
29060
- definitionMap.set('version', literal('21.2.1'));
29070
+ definitionMap.set('version', literal('22.0.0-next.1'));
29061
29071
  definitionMap.set('ngImport', importExpr(Identifiers.core));
29062
29072
  definitionMap.set('type', meta.type.value);
29063
29073
  if (meta.bootstrap.length > 0) {
@@ -29095,7 +29105,7 @@ function compileDeclarePipeFromMetadata(meta) {
29095
29105
  function createPipeDefinitionMap(meta) {
29096
29106
  const definitionMap = new DefinitionMap();
29097
29107
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION));
29098
- definitionMap.set('version', literal('21.2.1'));
29108
+ definitionMap.set('version', literal('22.0.0-next.1'));
29099
29109
  definitionMap.set('ngImport', importExpr(Identifiers.core));
29100
29110
  definitionMap.set('type', meta.type.value);
29101
29111
  if (meta.isStandalone !== undefined) {
@@ -29169,7 +29179,7 @@ function compileHmrUpdateCallback(definitions, constantStatements, meta) {
29169
29179
  return new DeclareFunctionStmt(`${meta.className}_UpdateMetadata`, params, body, null, StmtModifier.Final);
29170
29180
  }
29171
29181
 
29172
- const VERSION = new Version('21.2.1');
29182
+ const VERSION = new Version('22.0.0-next.1');
29173
29183
 
29174
29184
  publishFacade(_global);
29175
29185