@angular/compiler 17.0.0-next.4 → 17.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.
Files changed (35) hide show
  1. package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
  2. package/esm2022/src/render3/partial/directive.mjs +1 -1
  3. package/esm2022/src/render3/partial/factory.mjs +1 -1
  4. package/esm2022/src/render3/partial/injectable.mjs +1 -1
  5. package/esm2022/src/render3/partial/injector.mjs +1 -1
  6. package/esm2022/src/render3/partial/ng_module.mjs +1 -1
  7. package/esm2022/src/render3/partial/pipe.mjs +1 -1
  8. package/esm2022/src/render3/r3_ast.mjs +10 -3
  9. package/esm2022/src/render3/r3_control_flow.mjs +16 -9
  10. package/esm2022/src/render3/r3_deferred_triggers.mjs +7 -7
  11. package/esm2022/src/render3/r3_module_compiler.mjs +9 -11
  12. package/esm2022/src/render3/view/compiler.mjs +4 -1
  13. package/esm2022/src/render3/view/t2_api.mjs +1 -1
  14. package/esm2022/src/render3/view/t2_binder.mjs +178 -78
  15. package/esm2022/src/render3/view/template.mjs +32 -46
  16. package/esm2022/src/template/pipeline/ir/src/enums.mjs +14 -7
  17. package/esm2022/src/template/pipeline/ir/src/expression.mjs +3 -1
  18. package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +28 -3
  19. package/esm2022/src/template/pipeline/src/compilation.mjs +6 -1
  20. package/esm2022/src/template/pipeline/src/conversion.mjs +7 -1
  21. package/esm2022/src/template/pipeline/src/emit.mjs +7 -1
  22. package/esm2022/src/template/pipeline/src/ingest.mjs +16 -3
  23. package/esm2022/src/template/pipeline/src/instruction.mjs +19 -3
  24. package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +22 -29
  25. package/esm2022/src/template/pipeline/src/phases/generate_projection_def.mjs +46 -0
  26. package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +33 -0
  27. package/esm2022/src/template/pipeline/src/phases/phase_remove_content_selectors.mjs +39 -0
  28. package/esm2022/src/template/pipeline/src/phases/reify.mjs +11 -2
  29. package/esm2022/src/version.mjs +1 -1
  30. package/fesm2022/compiler.mjs +516 -247
  31. package/fesm2022/compiler.mjs.map +1 -1
  32. package/fesm2022/testing.mjs +1 -1
  33. package/index.d.ts +53 -40
  34. package/package.json +3 -3
  35. package/testing/index.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.4
2
+ * @license Angular v17.0.0-next.5
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.4
2
+ * @license Angular v17.0.0-next.5
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -500,10 +500,7 @@ export declare interface BoundTarget<DirectiveT extends DirectiveMeta> {
500
500
  * For a given `Reference`, get the reference's target - either an `Element`, a `Template`, or
501
501
  * a directive on a particular node.
502
502
  */
503
- getReferenceTarget(ref: TmplAstReference): {
504
- directive: DirectiveT;
505
- node: TmplAstElement | TmplAstTemplate;
506
- } | TmplAstElement | TmplAstTemplate | null;
503
+ getReferenceTarget(ref: TmplAstReference): ReferenceTarget<DirectiveT> | null;
507
504
  /**
508
505
  * For a given binding, get the entity to which the binding is being made.
509
506
  *
@@ -521,25 +518,24 @@ export declare interface BoundTarget<DirectiveT extends DirectiveMeta> {
521
518
  */
522
519
  getExpressionTarget(expr: AST): TmplAstReference | TmplAstVariable | null;
523
520
  /**
524
- * Given a particular `Reference` or `Variable`, get the `Template` which created it.
521
+ * Given a particular `Reference` or `Variable`, get the `ScopedNode` which created it.
525
522
  *
526
- * All `Variable`s are defined on templates, so this will always return a value for a `Variable`
527
- * from the `Target`. For `Reference`s this only returns a value if the `Reference` points to a
528
- * `Template`. Returns `null` otherwise.
523
+ * All `Variable`s are defined on node, so this will always return a value for a `Variable`
524
+ * from the `Target`. Returns `null` otherwise.
529
525
  */
530
- getTemplateOfSymbol(symbol: TmplAstReference | TmplAstVariable): TmplAstTemplate | null;
526
+ getDefinitionNodeOfSymbol(symbol: TmplAstReference | TmplAstVariable): ScopedNode | null;
531
527
  /**
532
- * Get the nesting level of a particular `Template`.
528
+ * Get the nesting level of a particular `ScopedNode`.
533
529
  *
534
- * This starts at 1 for top-level `Template`s within the `Target` and increases for `Template`s
530
+ * This starts at 1 for top-level nodes within the `Target` and increases for nodes
535
531
  * nested at deeper levels.
536
532
  */
537
- getNestingLevel(template: TmplAstTemplate): number;
533
+ getNestingLevel(node: ScopedNode): number;
538
534
  /**
539
- * Get all `Reference`s and `Variables` visible within the given `Template` (or at the top level,
540
- * if `null` is passed).
535
+ * Get all `Reference`s and `Variables` visible within the given `ScopedNode` (or at the top
536
+ * level, if `null` is passed).
541
537
  */
542
- getEntitiesInTemplateScope(template: TmplAstTemplate | null): ReadonlySet<TmplAstReference | TmplAstVariable>;
538
+ getEntitiesInScope(node: ScopedNode | null): ReadonlySet<TmplAstReference | TmplAstVariable>;
543
539
  /**
544
540
  * Get a list of all the directives used by the target,
545
541
  * including directives from `{#defer}` blocks.
@@ -564,6 +560,12 @@ export declare interface BoundTarget<DirectiveT extends DirectiveMeta> {
564
560
  * Get a list of all {#defer} blocks used by the target.
565
561
  */
566
562
  getDeferBlocks(): TmplAstDeferredBlock[];
563
+ /**
564
+ * Gets the element that a specific deferred block trigger is targeting.
565
+ * @param block Block that the trigger belongs to.
566
+ * @param trigger Trigger whose target is being looked up.
567
+ */
568
+ getDeferredTriggerTarget(block: TmplAstDeferredTrigger, trigger: TmplAstDeferredTrigger): TmplAstElement | null;
567
569
  }
568
570
 
569
571
  export declare class BuiltinType extends Type {
@@ -1355,14 +1357,8 @@ declare class FnParam {
1355
1357
  clone(): FnParam;
1356
1358
  }
1357
1359
 
1358
- declare interface ForLoopBlockContext {
1359
- $index?: string;
1360
- $first?: string;
1361
- $last?: string;
1362
- $even?: string;
1363
- $odd?: string;
1364
- $count?: string;
1365
- }
1360
+ /** Context variables that can be used inside a `ForLoopBlock`. */
1361
+ declare type ForLoopBlockContext = Record<'$index' | '$first' | '$last' | '$even' | '$odd' | '$count', TmplAstVariable>;
1366
1362
 
1367
1363
  /**
1368
1364
  * Specifies how a forward ref has been handled in a MaybeForwardRefExpression
@@ -2814,29 +2810,35 @@ export declare class R3BoundTarget<DirectiveT extends DirectiveMeta> implements
2814
2810
  private exprTargets;
2815
2811
  private symbols;
2816
2812
  private nestingLevel;
2817
- private templateEntities;
2813
+ private scopedNodeEntities;
2818
2814
  private usedPipes;
2819
2815
  private eagerPipes;
2820
2816
  private deferredBlocks;
2821
2817
  constructor(target: Target, directives: Map<TmplAstElement | TmplAstTemplate, DirectiveT[]>, eagerDirectives: DirectiveT[], bindings: Map<TmplAstBoundAttribute | TmplAstBoundEvent | TmplAstTextAttribute, DirectiveT | TmplAstElement | TmplAstTemplate>, references: Map<TmplAstBoundAttribute | TmplAstBoundEvent | TmplAstReference | TmplAstTextAttribute, {
2822
2818
  directive: DirectiveT;
2823
2819
  node: TmplAstElement | TmplAstTemplate;
2824
- } | TmplAstElement | TmplAstTemplate>, exprTargets: Map<AST, TmplAstReference | TmplAstVariable>, symbols: Map<TmplAstReference | TmplAstVariable, TmplAstTemplate>, nestingLevel: Map<TmplAstTemplate, number>, templateEntities: Map<TmplAstTemplate | null, ReadonlySet<TmplAstReference | TmplAstVariable>>, usedPipes: Set<string>, eagerPipes: Set<string>, deferredBlocks: Set<TmplAstDeferredBlock>);
2825
- getEntitiesInTemplateScope(template: TmplAstTemplate | null): ReadonlySet<TmplAstReference | TmplAstVariable>;
2820
+ } | TmplAstElement | TmplAstTemplate>, exprTargets: Map<AST, TmplAstReference | TmplAstVariable>, symbols: Map<TmplAstReference | TmplAstVariable, TmplAstTemplate>, nestingLevel: Map<ScopedNode, number>, scopedNodeEntities: Map<ScopedNode | null, ReadonlySet<TmplAstReference | TmplAstVariable>>, usedPipes: Set<string>, eagerPipes: Set<string>, deferredBlocks: Set<TmplAstDeferredBlock>);
2821
+ getEntitiesInScope(node: ScopedNode | null): ReadonlySet<TmplAstReference | TmplAstVariable>;
2826
2822
  getDirectivesOfNode(node: TmplAstElement | TmplAstTemplate): DirectiveT[] | null;
2827
- getReferenceTarget(ref: TmplAstReference): {
2828
- directive: DirectiveT;
2829
- node: TmplAstElement | TmplAstTemplate;
2830
- } | TmplAstElement | TmplAstTemplate | null;
2823
+ getReferenceTarget(ref: TmplAstReference): ReferenceTarget<DirectiveT> | null;
2831
2824
  getConsumerOfBinding(binding: TmplAstBoundAttribute | TmplAstBoundEvent | TmplAstTextAttribute): DirectiveT | TmplAstElement | TmplAstTemplate | null;
2832
2825
  getExpressionTarget(expr: AST): TmplAstReference | TmplAstVariable | null;
2833
- getTemplateOfSymbol(symbol: TmplAstReference | TmplAstVariable): TmplAstTemplate | null;
2834
- getNestingLevel(template: TmplAstTemplate): number;
2826
+ getDefinitionNodeOfSymbol(symbol: TmplAstReference | TmplAstVariable): ScopedNode | null;
2827
+ getNestingLevel(node: ScopedNode): number;
2835
2828
  getUsedDirectives(): DirectiveT[];
2836
2829
  getEagerlyUsedDirectives(): DirectiveT[];
2837
2830
  getUsedPipes(): string[];
2838
2831
  getEagerlyUsedPipes(): string[];
2839
2832
  getDeferBlocks(): TmplAstDeferredBlock[];
2833
+ getDeferredTriggerTarget(block: TmplAstDeferredBlock, trigger: TmplAstDeferredTrigger): TmplAstElement | null;
2834
+ /**
2835
+ * Finds an entity with a specific name in a scope.
2836
+ * @param rootNode Root node of the scope.
2837
+ * @param name Name of the entity.
2838
+ */
2839
+ private findEntityInScope;
2840
+ /** Coerces a `ReferenceTarget` to an `Element`, if possible. */
2841
+ private referenceTargetToElement;
2840
2842
  }
2841
2843
 
2842
2844
  /**
@@ -4312,6 +4314,12 @@ export declare class RecursiveVisitor implements Visitor {
4312
4314
  private visitChildren;
4313
4315
  }
4314
4316
 
4317
+ /** Possible values that a reference can be resolved to. */
4318
+ export declare type ReferenceTarget<DirectiveT> = {
4319
+ directive: DirectiveT;
4320
+ node: TmplAstElement | TmplAstTemplate;
4321
+ } | TmplAstElement | TmplAstTemplate;
4322
+
4315
4323
  /**
4316
4324
  * Flags passed into template functions to determine which blocks (i.e. creation, update)
4317
4325
  * should be executed.
@@ -4372,6 +4380,9 @@ export declare interface SchemaMetadata {
4372
4380
  name: string;
4373
4381
  }
4374
4382
 
4383
+ /** Node that has a `Scope` associated with it. */
4384
+ export declare type ScopedNode = TmplAstTemplate | TmplAstSwitchBlockCase | TmplAstIfBlockBranch | TmplAstForLoopBlock | TmplAstForLoopBlockEmpty | TmplAstDeferredBlock | TmplAstDeferredBlockError | TmplAstDeferredBlockLoading | TmplAstDeferredBlockPlaceholder;
4385
+
4375
4386
  declare enum SecurityContext {
4376
4387
  NONE = 0,
4377
4388
  HTML = 1,
@@ -4833,16 +4844,16 @@ export declare class TmplAstElement implements TmplAstNode {
4833
4844
  }
4834
4845
 
4835
4846
  export declare class TmplAstForLoopBlock implements TmplAstNode {
4836
- itemName: string;
4847
+ item: TmplAstVariable;
4837
4848
  expression: ASTWithSource;
4838
4849
  trackBy: ASTWithSource;
4839
- contextVariables: ForLoopBlockContext | null;
4850
+ contextVariables: ForLoopBlockContext;
4840
4851
  children: TmplAstNode[];
4841
4852
  empty: TmplAstForLoopBlockEmpty | null;
4842
4853
  sourceSpan: ParseSourceSpan;
4843
4854
  startSourceSpan: ParseSourceSpan;
4844
4855
  endSourceSpan: ParseSourceSpan | null;
4845
- constructor(itemName: string, expression: ASTWithSource, trackBy: ASTWithSource, contextVariables: ForLoopBlockContext | null, children: TmplAstNode[], empty: TmplAstForLoopBlockEmpty | null, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null);
4856
+ constructor(item: TmplAstVariable, expression: ASTWithSource, trackBy: ASTWithSource, contextVariables: ForLoopBlockContext, children: TmplAstNode[], empty: TmplAstForLoopBlockEmpty | null, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null);
4846
4857
  visit<Result>(visitor: Visitor_3<Result>): Result;
4847
4858
  }
4848
4859
 
@@ -4855,6 +4866,8 @@ export declare class TmplAstForLoopBlockEmpty implements TmplAstNode {
4855
4866
  }
4856
4867
 
4857
4868
  export declare class TmplAstHoverDeferredTrigger extends TmplAstDeferredTrigger {
4869
+ reference: string;
4870
+ constructor(reference: string, sourceSpan: ParseSourceSpan);
4858
4871
  }
4859
4872
 
4860
4873
  export declare class TmplAstIcu implements TmplAstNode {
@@ -4889,10 +4902,10 @@ export declare class TmplAstIfBlock implements TmplAstNode {
4889
4902
  export declare class TmplAstIfBlockBranch implements TmplAstNode {
4890
4903
  expression: AST | null;
4891
4904
  children: TmplAstNode[];
4892
- expressionAlias: string | null;
4905
+ expressionAlias: TmplAstVariable | null;
4893
4906
  sourceSpan: ParseSourceSpan;
4894
4907
  startSourceSpan: ParseSourceSpan;
4895
- constructor(expression: AST | null, children: TmplAstNode[], expressionAlias: string | null, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan);
4908
+ constructor(expression: AST | null, children: TmplAstNode[], expressionAlias: TmplAstVariable | null, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan);
4896
4909
  visit<Result>(visitor: Visitor_3<Result>): Result;
4897
4910
  }
4898
4911
 
@@ -4900,8 +4913,8 @@ export declare class TmplAstImmediateDeferredTrigger extends TmplAstDeferredTrig
4900
4913
  }
4901
4914
 
4902
4915
  export declare class TmplAstInteractionDeferredTrigger extends TmplAstDeferredTrigger {
4903
- reference: string | null;
4904
- constructor(reference: string | null, sourceSpan: ParseSourceSpan);
4916
+ reference: string;
4917
+ constructor(reference: string, sourceSpan: ParseSourceSpan);
4905
4918
  }
4906
4919
 
4907
4920
  export declare interface TmplAstNode {
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@angular/compiler",
3
- "version": "17.0.0-next.4",
3
+ "version": "17.0.0-next.5",
4
4
  "description": "Angular - the compiler library",
5
5
  "author": "angular",
6
6
  "license": "MIT",
7
7
  "engines": {
8
- "node": "^16.14.0 || >=18.10.0"
8
+ "node": ">=18.13.0"
9
9
  },
10
10
  "dependencies": {
11
11
  "tslib": "^2.3.0"
12
12
  },
13
13
  "peerDependencies": {
14
- "@angular/core": "17.0.0-next.4"
14
+ "@angular/core": "17.0.0-next.5"
15
15
  },
16
16
  "peerDependenciesMeta": {
17
17
  "@angular/core": {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.4
2
+ * @license Angular v17.0.0-next.5
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */