@angular/compiler 17.0.0-next.5 → 17.0.0-next.7

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 (79) hide show
  1. package/esm2022/src/compiler.mjs +1 -1
  2. package/esm2022/src/i18n/extractor_merger.mjs +1 -4
  3. package/esm2022/src/i18n/i18n_parser.mjs +1 -6
  4. package/esm2022/src/i18n/serializers/xliff.mjs +1 -3
  5. package/esm2022/src/i18n/serializers/xliff2.mjs +1 -3
  6. package/esm2022/src/i18n/serializers/xtb.mjs +1 -3
  7. package/esm2022/src/injectable_compiler_2.mjs +3 -6
  8. package/esm2022/src/jit_compiler_facade.mjs +34 -13
  9. package/esm2022/src/ml_parser/ast.mjs +1 -17
  10. package/esm2022/src/ml_parser/html_whitespaces.mjs +2 -5
  11. package/esm2022/src/ml_parser/icu_ast_expander.mjs +2 -5
  12. package/esm2022/src/ml_parser/lexer.mjs +60 -50
  13. package/esm2022/src/ml_parser/parser.mjs +26 -71
  14. package/esm2022/src/ml_parser/tokens.mjs +1 -1
  15. package/esm2022/src/output/abstract_emitter.mjs +8 -1
  16. package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
  17. package/esm2022/src/render3/partial/component.mjs +49 -2
  18. package/esm2022/src/render3/partial/directive.mjs +1 -1
  19. package/esm2022/src/render3/partial/factory.mjs +1 -1
  20. package/esm2022/src/render3/partial/injectable.mjs +1 -1
  21. package/esm2022/src/render3/partial/injector.mjs +1 -1
  22. package/esm2022/src/render3/partial/ng_module.mjs +1 -1
  23. package/esm2022/src/render3/partial/pipe.mjs +1 -1
  24. package/esm2022/src/render3/r3_ast.mjs +1 -1
  25. package/esm2022/src/render3/r3_class_metadata_compiler.mjs +14 -16
  26. package/esm2022/src/render3/r3_control_flow.mjs +101 -88
  27. package/esm2022/src/render3/r3_deferred_blocks.mjs +37 -39
  28. package/esm2022/src/render3/r3_deferred_triggers.mjs +30 -22
  29. package/esm2022/src/render3/r3_factory.mjs +2 -2
  30. package/esm2022/src/render3/r3_template_transform.mjs +70 -35
  31. package/esm2022/src/render3/util.mjs +3 -3
  32. package/esm2022/src/render3/view/api.mjs +1 -1
  33. package/esm2022/src/render3/view/block_syntax_switch.mjs +13 -0
  34. package/esm2022/src/render3/view/compiler.mjs +21 -11
  35. package/esm2022/src/render3/view/i18n/meta.mjs +1 -5
  36. package/esm2022/src/render3/view/t2_api.mjs +1 -1
  37. package/esm2022/src/render3/view/t2_binder.mjs +9 -4
  38. package/esm2022/src/render3/view/template.mjs +65 -43
  39. package/esm2022/src/render3/view/util.mjs +8 -2
  40. package/esm2022/src/template/pipeline/ir/src/enums.mjs +42 -9
  41. package/esm2022/src/template/pipeline/ir/src/expression.mjs +64 -19
  42. package/esm2022/src/template/pipeline/ir/src/operations.mjs +2 -2
  43. package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +54 -13
  44. package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +34 -4
  45. package/esm2022/src/template/pipeline/ir/src/traits.mjs +17 -2
  46. package/esm2022/src/template/pipeline/ir/src/variable.mjs +6 -2
  47. package/esm2022/src/template/pipeline/src/conversion.mjs +3 -2
  48. package/esm2022/src/template/pipeline/src/emit.mjs +10 -10
  49. package/esm2022/src/template/pipeline/src/ingest.mjs +229 -54
  50. package/esm2022/src/template/pipeline/src/instruction.mjs +58 -29
  51. package/esm2022/src/template/pipeline/src/phases/apply_i18n_expressions.mjs +37 -0
  52. package/esm2022/src/template/pipeline/src/phases/chaining.mjs +13 -12
  53. package/esm2022/src/template/pipeline/src/phases/conditionals.mjs +22 -9
  54. package/esm2022/src/template/pipeline/src/phases/empty_elements.mjs +14 -3
  55. package/esm2022/src/template/pipeline/src/phases/generate_advance.mjs +19 -1
  56. package/esm2022/src/template/pipeline/src/phases/generate_variables.mjs +6 -2
  57. package/esm2022/src/template/pipeline/src/phases/has_const_trait_collection.mjs +34 -0
  58. package/esm2022/src/template/pipeline/src/phases/host_style_property_parsing.mjs +6 -1
  59. package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +3 -2
  60. package/esm2022/src/template/pipeline/src/phases/i18n_message_extraction.mjs +9 -8
  61. package/esm2022/src/template/pipeline/src/phases/i18n_text_extraction.mjs +31 -5
  62. package/esm2022/src/template/pipeline/src/phases/naming.mjs +3 -3
  63. package/esm2022/src/template/pipeline/src/phases/ng_container.mjs +6 -1
  64. package/esm2022/src/template/pipeline/src/phases/pure_function_extraction.mjs +4 -4
  65. package/esm2022/src/template/pipeline/src/phases/reify.mjs +36 -21
  66. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_placeholders.mjs +79 -37
  67. package/esm2022/src/template/pipeline/src/phases/slot_allocation.mjs +5 -5
  68. package/esm2022/src/template/pipeline/src/phases/temporary_variables.mjs +53 -38
  69. package/esm2022/src/template/pipeline/src/phases/var_counting.mjs +10 -1
  70. package/esm2022/src/template/pipeline/src/phases/variable_optimization.mjs +9 -1
  71. package/esm2022/src/version.mjs +1 -1
  72. package/fesm2022/compiler.mjs +4144 -3494
  73. package/fesm2022/compiler.mjs.map +1 -1
  74. package/fesm2022/testing.mjs +1 -1
  75. package/index.d.ts +111 -115
  76. package/package.json +2 -2
  77. package/testing/index.d.ts +1 -1
  78. package/esm2022/src/template/pipeline/src/phases/generate_i18n_blocks.mjs +0 -38
  79. package/esm2022/src/template/pipeline/src/phases/no_listeners_on_templates.mjs +0 -36
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.5
2
+ * @license Angular v17.0.0-next.7
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.5
2
+ * @license Angular v17.0.0-next.7
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -297,7 +297,7 @@ declare const enum AttributeMarker {
297
297
  }
298
298
 
299
299
  declare interface AttributeValueInterpolationToken extends TokenBase {
300
- type: TokenType_2.ATTR_VALUE_INTERPOLATION;
300
+ type: LexerTokenType.ATTR_VALUE_INTERPOLATION;
301
301
  parts: [startMarker: string, expression: string, endMarker: string] | [
302
302
  startMarker: string,
303
303
  expression: string
@@ -305,7 +305,7 @@ declare interface AttributeValueInterpolationToken extends TokenBase {
305
305
  }
306
306
 
307
307
  declare interface AttributeValueTextToken extends TokenBase {
308
- type: TokenType_2.ATTR_VALUE_TEXT;
308
+ type: LexerTokenType.ATTR_VALUE_TEXT;
309
309
  parts: [value: string];
310
310
  }
311
311
 
@@ -448,15 +448,6 @@ export declare class Block implements BaseNode {
448
448
  visit(visitor: Visitor, context: any): any;
449
449
  }
450
450
 
451
- export declare class BlockGroup implements BaseNode {
452
- blocks: Block[];
453
- sourceSpan: ParseSourceSpan;
454
- startSourceSpan: ParseSourceSpan;
455
- endSourceSpan: ParseSourceSpan | null;
456
- constructor(blocks: Block[], sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan?: ParseSourceSpan | null);
457
- visit(visitor: Visitor, context: any): any;
458
- }
459
-
460
451
  export declare class BlockParameter implements BaseNode {
461
452
  expression: string;
462
453
  sourceSpan: ParseSourceSpan;
@@ -538,26 +529,26 @@ export declare interface BoundTarget<DirectiveT extends DirectiveMeta> {
538
529
  getEntitiesInScope(node: ScopedNode | null): ReadonlySet<TmplAstReference | TmplAstVariable>;
539
530
  /**
540
531
  * Get a list of all the directives used by the target,
541
- * including directives from `{#defer}` blocks.
532
+ * including directives from `@defer` blocks.
542
533
  */
543
534
  getUsedDirectives(): DirectiveT[];
544
535
  /**
545
536
  * Get a list of eagerly used directives from the target.
546
- * Note: this list *excludes* directives from `{#defer}` blocks.
537
+ * Note: this list *excludes* directives from `@defer` blocks.
547
538
  */
548
539
  getEagerlyUsedDirectives(): DirectiveT[];
549
540
  /**
550
541
  * Get a list of all the pipes used by the target,
551
- * including pipes from `{#defer}` blocks.
542
+ * including pipes from `@defer` blocks.
552
543
  */
553
544
  getUsedPipes(): string[];
554
545
  /**
555
546
  * Get a list of eagerly used pipes from the target.
556
- * Note: this list *excludes* pipes from `{#defer}` blocks.
547
+ * Note: this list *excludes* pipes from `@defer` blocks.
557
548
  */
558
549
  getEagerlyUsedPipes(): string[];
559
550
  /**
560
- * Get a list of all {#defer} blocks used by the target.
551
+ * Get a list of all `@defer` blocks used by the target.
561
552
  */
562
553
  getDeferBlocks(): TmplAstDeferredBlock[];
563
554
  /**
@@ -652,16 +643,14 @@ export declare type CompileClassMetadataFn = (metadata: R3ClassMetadata) => outp
652
643
 
653
644
  /**
654
645
  * Wraps the `setClassMetadata` function with extra logic that dynamically
655
- * loads dependencies from `{#defer}` blocks.
646
+ * loads dependencies from `@defer` blocks.
656
647
  *
657
648
  * Generates a call like this:
658
649
  * ```
659
- * setClassMetadataAsync(type, () => {
660
- * return [
661
- * import('./cmp-a').then(m => m.CmpA);
662
- * import('./cmp-b').then(m => m.CmpB);
663
- * ];
664
- * }, (CmpA, CmpB) => {
650
+ * setClassMetadataAsync(type, () => [
651
+ * import('./cmp-a').then(m => m.CmpA);
652
+ * import('./cmp-b').then(m => m.CmpB);
653
+ * ], (CmpA, CmpB) => {
665
654
  * setClassMetadata(type, decorators, ctorParameters, propParameters);
666
655
  * });
667
656
  * ```
@@ -995,38 +984,6 @@ export declare class DeclareVarStmt extends Statement {
995
984
 
996
985
  export declare const DEFAULT_INTERPOLATION_CONFIG: InterpolationConfig;
997
986
 
998
- /**
999
- * Describes a dependency used within a `{#defer}` block.
1000
- */
1001
- export declare interface DeferBlockTemplateDependency {
1002
- /**
1003
- * Reference to a dependency.
1004
- */
1005
- type: outputAst.WrappedNodeExpr<unknown>;
1006
- /**
1007
- * Dependency class name.
1008
- */
1009
- symbolName: string;
1010
- /**
1011
- * Whether this dependency can be defer-loaded.
1012
- */
1013
- isDeferrable: boolean;
1014
- /**
1015
- * Import path where this dependency is located.
1016
- */
1017
- importPath: string | null;
1018
- }
1019
-
1020
- declare interface DeferredBlockTriggers {
1021
- when?: TmplAstBoundDeferredTrigger;
1022
- idle?: TmplAstIdleDeferredTrigger;
1023
- immediate?: TmplAstImmediateDeferredTrigger;
1024
- hover?: TmplAstHoverDeferredTrigger;
1025
- timer?: TmplAstTimerDeferredTrigger;
1026
- interaction?: TmplAstInteractionDeferredTrigger;
1027
- viewport?: TmplAstViewportDeferredTrigger;
1028
- }
1029
-
1030
987
  export declare function devOnlyGuardedExpression(expr: outputAst.Expression): outputAst.Expression;
1031
988
 
1032
989
  /**
@@ -1180,7 +1137,7 @@ export declare class EmptyExpr extends AST {
1180
1137
  }
1181
1138
 
1182
1139
  declare interface EncodedEntityToken extends TokenBase {
1183
- type: TokenType_2.ENCODED_ENTITY;
1140
+ type: LexerTokenType.ENCODED_ENTITY;
1184
1141
  parts: [decoded: string, encoded: string];
1185
1142
  }
1186
1143
 
@@ -1422,7 +1379,6 @@ declare namespace html {
1422
1379
  Attribute,
1423
1380
  Element_2 as Element,
1424
1381
  Comment_2 as Comment,
1425
- BlockGroup,
1426
1382
  Block,
1427
1383
  BlockParameter,
1428
1384
  Visitor,
@@ -1623,7 +1579,7 @@ export declare interface InterpolationPiece {
1623
1579
  }
1624
1580
 
1625
1581
  declare interface InterpolationToken extends TokenBase {
1626
- type: TokenType_2.INTERPOLATION;
1582
+ type: LexerTokenType.INTERPOLATION;
1627
1583
  parts: [startMarker: string, expression: string, endMarker: string] | [
1628
1584
  startMarker: string,
1629
1585
  expression: string
@@ -1753,6 +1709,38 @@ export declare interface LexerRange {
1753
1709
  endPos: number;
1754
1710
  }
1755
1711
 
1712
+ export declare const enum LexerTokenType {
1713
+ TAG_OPEN_START = 0,
1714
+ TAG_OPEN_END = 1,
1715
+ TAG_OPEN_END_VOID = 2,
1716
+ TAG_CLOSE = 3,
1717
+ INCOMPLETE_TAG_OPEN = 4,
1718
+ TEXT = 5,
1719
+ ESCAPABLE_RAW_TEXT = 6,
1720
+ RAW_TEXT = 7,
1721
+ INTERPOLATION = 8,
1722
+ ENCODED_ENTITY = 9,
1723
+ COMMENT_START = 10,
1724
+ COMMENT_END = 11,
1725
+ CDATA_START = 12,
1726
+ CDATA_END = 13,
1727
+ ATTR_NAME = 14,
1728
+ ATTR_QUOTE = 15,
1729
+ ATTR_VALUE_TEXT = 16,
1730
+ ATTR_VALUE_INTERPOLATION = 17,
1731
+ DOC_TYPE = 18,
1732
+ EXPANSION_FORM_START = 19,
1733
+ EXPANSION_CASE_VALUE = 20,
1734
+ EXPANSION_CASE_EXP_START = 21,
1735
+ EXPANSION_CASE_EXP_END = 22,
1736
+ EXPANSION_FORM_END = 23,
1737
+ BLOCK_OPEN_START = 24,
1738
+ BLOCK_OPEN_END = 25,
1739
+ BLOCK_CLOSE = 26,
1740
+ BLOCK_PARAMETER = 27,
1741
+ EOF = 28
1742
+ }
1743
+
1756
1744
  declare function literal(value: any, type?: Type | null, sourceSpan?: ParseSourceSpan | null): LiteralExpr;
1757
1745
 
1758
1746
  declare function literalArr(values: Expression[], type?: Type | null, sourceSpan?: ParseSourceSpan | null): LiteralArrayExpr;
@@ -1990,7 +1978,7 @@ declare enum MissingTranslationStrategy {
1990
1978
 
1991
1979
  export declare const NO_ERRORS_SCHEMA: SchemaMetadata;
1992
1980
 
1993
- declare type Node_2 = Attribute | Comment_2 | Element_2 | Expansion | ExpansionCase | Text_2 | BlockGroup | Block | BlockParameter;
1981
+ declare type Node_2 = Attribute | Comment_2 | Element_2 | Expansion | ExpansionCase | Text_2 | Block | BlockParameter;
1994
1982
  export { Node_2 as Node }
1995
1983
 
1996
1984
  declare interface Node_3 {
@@ -2723,11 +2711,8 @@ export declare interface ParseTemplateOptions {
2723
2711
  * rules on a case by case basis, instead of for their whole project within a configuration file.
2724
2712
  */
2725
2713
  collectCommentNodes?: boolean;
2726
- /**
2727
- * Names of the blocks that should be enabled. E.g. `enabledBlockTypes: new Set(['defer'])`
2728
- * would allow usages of `{#defer}{/defer}` in templates.
2729
- */
2730
- enabledBlockTypes?: Set<string>;
2714
+ /** Whether the @ block syntax is enabled. */
2715
+ enableBlockSyntax?: boolean;
2731
2716
  }
2732
2717
 
2733
2718
  export declare class ParseTreeResult {
@@ -2902,9 +2887,9 @@ export declare interface R3ComponentMetadata<DeclarationT extends R3TemplateDepe
2902
2887
  */
2903
2888
  deferrableDeclToImportDecl: Map<outputAst.Expression, outputAst.Expression>;
2904
2889
  /**
2905
- * Map of {#defer} blocks -> their corresponding dependencies.
2890
+ * Map of `@defer` blocks -> their corresponding metadata.
2906
2891
  */
2907
- deferBlocks: Map<t.DeferredBlock, Array<DeferBlockTemplateDependency>>;
2892
+ deferBlocks: Map<t.DeferredBlock, R3DeferBlockMetadata>;
2908
2893
  /**
2909
2894
  * Specifies how the 'directives' and/or `pipes` array, if generated, need to be emitted.
2910
2895
  */
@@ -2947,8 +2932,12 @@ export declare interface R3ComponentMetadata<DeclarationT extends R3TemplateDepe
2947
2932
  interpolation: InterpolationConfig;
2948
2933
  /**
2949
2934
  * Strategy used for detecting changes in the component.
2935
+ *
2936
+ * In global compilation mode the value is ChangeDetectionStrategy if available as it is
2937
+ * statically resolved during analysis phase. Whereas in local compilation mode the value is the
2938
+ * expression as appears in the decorator.
2950
2939
  */
2951
- changeDetection?: ChangeDetectionStrategy;
2940
+ changeDetection: ChangeDetectionStrategy | outputAst.Expression | null;
2952
2941
  /**
2953
2942
  * The imports expression as appears on the component decorate for standalone component. This
2954
2943
  * field is currently needed only for local compilation, and so in other compilation modes it may
@@ -3453,6 +3442,38 @@ export declare interface R3DeclareQueryMetadata {
3453
3442
 
3454
3443
  export declare type R3DeclareTemplateDependencyMetadata = R3DeclareDirectiveDependencyMetadata | R3DeclarePipeDependencyMetadata | R3DeclareNgModuleDependencyMetadata;
3455
3444
 
3445
+ /**
3446
+ * Information necessary to compile a `defer` block.
3447
+ */
3448
+ export declare interface R3DeferBlockMetadata {
3449
+ /** Dependencies used within the block. */
3450
+ deps: R3DeferBlockTemplateDependency[];
3451
+ /** Mapping between triggers and the DOM nodes they refer to. */
3452
+ triggerElements: Map<t.DeferredTrigger, t.Element | null>;
3453
+ }
3454
+
3455
+ /**
3456
+ * Describes a dependency used within a `@defer` block.
3457
+ */
3458
+ export declare interface R3DeferBlockTemplateDependency {
3459
+ /**
3460
+ * Reference to a dependency.
3461
+ */
3462
+ type: outputAst.WrappedNodeExpr<unknown>;
3463
+ /**
3464
+ * Dependency class name.
3465
+ */
3466
+ symbolName: string;
3467
+ /**
3468
+ * Whether this dependency can be defer-loaded.
3469
+ */
3470
+ isDeferrable: boolean;
3471
+ /**
3472
+ * Import path where this dependency is located.
3473
+ */
3474
+ importPath: string | null;
3475
+ }
3476
+
3456
3477
  declare interface R3DelegatedFnOrClassMetadata extends R3ConstructorFactoryMetadata {
3457
3478
  delegate: outputAst.Expression;
3458
3479
  delegateType: R3FactoryDelegateType;
@@ -4308,7 +4329,6 @@ export declare class RecursiveVisitor implements Visitor {
4308
4329
  visitComment(ast: Comment_2, context: any): any;
4309
4330
  visitExpansion(ast: Expansion, context: any): any;
4310
4331
  visitExpansionCase(ast: ExpansionCase, context: any): any;
4311
- visitBlockGroup(ast: BlockGroup, context: any): any;
4312
4332
  visitBlock(block: Block, context: any): any;
4313
4333
  visitBlockParameter(ast: BlockParameter, context: any): any;
4314
4334
  private visitChildren;
@@ -4558,7 +4578,7 @@ declare namespace t {
4558
4578
  TmplAstDeferredBlockPlaceholder as DeferredBlockPlaceholder,
4559
4579
  TmplAstDeferredBlockLoading as DeferredBlockLoading,
4560
4580
  TmplAstDeferredBlockError as DeferredBlockError,
4561
- DeferredBlockTriggers,
4581
+ TmplAstDeferredBlockTriggers as DeferredBlockTriggers,
4562
4582
  TmplAstDeferredBlock as DeferredBlock,
4563
4583
  TmplAstSwitchBlock as SwitchBlock,
4564
4584
  TmplAstSwitchBlockCase as SwitchBlockCase,
@@ -4706,7 +4726,7 @@ declare class Text_3 implements Node_3 {
4706
4726
  }
4707
4727
 
4708
4728
  declare interface TextToken extends TokenBase {
4709
- type: TokenType_2.TEXT | TokenType_2.ESCAPABLE_RAW_TEXT | TokenType_2.RAW_TEXT;
4729
+ type: LexerTokenType.TEXT | LexerTokenType.ESCAPABLE_RAW_TEXT | LexerTokenType.RAW_TEXT;
4710
4730
  parts: [text: string];
4711
4731
  }
4712
4732
 
@@ -4782,11 +4802,11 @@ export declare class TmplAstDeferredBlock implements TmplAstNode {
4782
4802
  sourceSpan: ParseSourceSpan;
4783
4803
  startSourceSpan: ParseSourceSpan;
4784
4804
  endSourceSpan: ParseSourceSpan | null;
4785
- readonly triggers: Readonly<DeferredBlockTriggers>;
4786
- readonly prefetchTriggers: Readonly<DeferredBlockTriggers>;
4805
+ readonly triggers: Readonly<TmplAstDeferredBlockTriggers>;
4806
+ readonly prefetchTriggers: Readonly<TmplAstDeferredBlockTriggers>;
4787
4807
  private readonly definedTriggers;
4788
4808
  private readonly definedPrefetchTriggers;
4789
- constructor(children: TmplAstNode[], triggers: DeferredBlockTriggers, prefetchTriggers: DeferredBlockTriggers, placeholder: TmplAstDeferredBlockPlaceholder | null, loading: TmplAstDeferredBlockLoading | null, error: TmplAstDeferredBlockError | null, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null);
4809
+ constructor(children: TmplAstNode[], triggers: TmplAstDeferredBlockTriggers, prefetchTriggers: TmplAstDeferredBlockTriggers, placeholder: TmplAstDeferredBlockPlaceholder | null, loading: TmplAstDeferredBlockLoading | null, error: TmplAstDeferredBlockError | null, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null);
4790
4810
  visit<Result>(visitor: Visitor_3<Result>): Result;
4791
4811
  visitAll(visitor: Visitor_3<unknown>): void;
4792
4812
  private visitTriggers;
@@ -4822,6 +4842,16 @@ export declare class TmplAstDeferredBlockPlaceholder implements TmplAstNode {
4822
4842
  visit<Result>(visitor: Visitor_3<Result>): Result;
4823
4843
  }
4824
4844
 
4845
+ export declare interface TmplAstDeferredBlockTriggers {
4846
+ when?: TmplAstBoundDeferredTrigger;
4847
+ idle?: TmplAstIdleDeferredTrigger;
4848
+ immediate?: TmplAstImmediateDeferredTrigger;
4849
+ hover?: TmplAstHoverDeferredTrigger;
4850
+ timer?: TmplAstTimerDeferredTrigger;
4851
+ interaction?: TmplAstInteractionDeferredTrigger;
4852
+ viewport?: TmplAstViewportDeferredTrigger;
4853
+ }
4854
+
4825
4855
  export declare abstract class TmplAstDeferredTrigger implements TmplAstNode {
4826
4856
  sourceSpan: ParseSourceSpan;
4827
4857
  constructor(sourceSpan: ParseSourceSpan);
@@ -4866,8 +4896,8 @@ export declare class TmplAstForLoopBlockEmpty implements TmplAstNode {
4866
4896
  }
4867
4897
 
4868
4898
  export declare class TmplAstHoverDeferredTrigger extends TmplAstDeferredTrigger {
4869
- reference: string;
4870
- constructor(reference: string, sourceSpan: ParseSourceSpan);
4899
+ reference: string | null;
4900
+ constructor(reference: string | null, sourceSpan: ParseSourceSpan);
4871
4901
  }
4872
4902
 
4873
4903
  export declare class TmplAstIcu implements TmplAstNode {
@@ -4913,8 +4943,8 @@ export declare class TmplAstImmediateDeferredTrigger extends TmplAstDeferredTrig
4913
4943
  }
4914
4944
 
4915
4945
  export declare class TmplAstInteractionDeferredTrigger extends TmplAstDeferredTrigger {
4916
- reference: string;
4917
- constructor(reference: string, sourceSpan: ParseSourceSpan);
4946
+ reference: string | null;
4947
+ constructor(reference: string | null, sourceSpan: ParseSourceSpan);
4918
4948
  }
4919
4949
 
4920
4950
  export declare interface TmplAstNode {
@@ -5064,7 +5094,7 @@ export declare class Token {
5064
5094
  }
5065
5095
 
5066
5096
  declare interface TokenBase {
5067
- type: TokenType_2;
5097
+ type: LexerTokenType;
5068
5098
  parts: string[];
5069
5099
  sourceSpan: ParseSourceSpan;
5070
5100
  }
@@ -5126,7 +5156,8 @@ declare interface TokenizeOptions {
5126
5156
  */
5127
5157
  preserveLineEndings?: boolean;
5128
5158
  /**
5129
- * Whether the block syntax is enabled at the compiler level.
5159
+ * Whether to tokenize @ block syntax. Otherwise considered text,
5160
+ * or ICU tokens if `tokenizeExpansionForms` is enabled.
5130
5161
  */
5131
5162
  tokenizeBlocks?: boolean;
5132
5163
  }
@@ -5143,40 +5174,6 @@ export declare enum TokenType {
5143
5174
  Error = 7
5144
5175
  }
5145
5176
 
5146
- declare const enum TokenType_2 {
5147
- TAG_OPEN_START = 0,
5148
- TAG_OPEN_END = 1,
5149
- TAG_OPEN_END_VOID = 2,
5150
- TAG_CLOSE = 3,
5151
- INCOMPLETE_TAG_OPEN = 4,
5152
- TEXT = 5,
5153
- ESCAPABLE_RAW_TEXT = 6,
5154
- RAW_TEXT = 7,
5155
- INTERPOLATION = 8,
5156
- ENCODED_ENTITY = 9,
5157
- COMMENT_START = 10,
5158
- COMMENT_END = 11,
5159
- CDATA_START = 12,
5160
- CDATA_END = 13,
5161
- ATTR_NAME = 14,
5162
- ATTR_QUOTE = 15,
5163
- ATTR_VALUE_TEXT = 16,
5164
- ATTR_VALUE_INTERPOLATION = 17,
5165
- DOC_TYPE = 18,
5166
- EXPANSION_FORM_START = 19,
5167
- EXPANSION_CASE_VALUE = 20,
5168
- EXPANSION_CASE_EXP_START = 21,
5169
- EXPANSION_CASE_EXP_END = 22,
5170
- EXPANSION_FORM_END = 23,
5171
- EOF = 24,
5172
- BLOCK_GROUP_OPEN_START = 25,
5173
- BLOCK_GROUP_OPEN_END = 26,
5174
- BLOCK_GROUP_CLOSE = 27,
5175
- BLOCK_PARAMETER = 28,
5176
- BLOCK_OPEN_START = 29,
5177
- BLOCK_OPEN_END = 30
5178
- }
5179
-
5180
5177
  export declare class TransplantedType<T> extends Type {
5181
5178
  readonly type: T;
5182
5179
  constructor(type: T, modifiers?: TypeModifier);
@@ -5327,7 +5324,6 @@ export declare interface Visitor {
5327
5324
  visitComment(comment: Comment_2, context: any): any;
5328
5325
  visitExpansion(expansion: Expansion, context: any): any;
5329
5326
  visitExpansionCase(expansionCase: ExpansionCase, context: any): any;
5330
- visitBlockGroup(group: BlockGroup, context: any): any;
5331
5327
  visitBlock(block: Block, context: any): any;
5332
5328
  visitBlockParameter(parameter: BlockParameter, context: any): any;
5333
5329
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/compiler",
3
- "version": "17.0.0-next.5",
3
+ "version": "17.0.0-next.7",
4
4
  "description": "Angular - the compiler library",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -11,7 +11,7 @@
11
11
  "tslib": "^2.3.0"
12
12
  },
13
13
  "peerDependencies": {
14
- "@angular/core": "17.0.0-next.5"
14
+ "@angular/core": "17.0.0-next.7"
15
15
  },
16
16
  "peerDependenciesMeta": {
17
17
  "@angular/core": {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.5
2
+ * @license Angular v17.0.0-next.7
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,38 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import * as i18n from '../../../../i18n/i18n_ast';
9
- import * as ir from '../../ir';
10
- import { getElementsByXrefId } from '../util/elements';
11
- /**
12
- * Generate i18n start and end isntructions to mark i18n blocks.
13
- */
14
- export function phaseGenerateI18nBlocks(job) {
15
- for (const unit of job.units) {
16
- const elements = getElementsByXrefId(unit);
17
- for (const op of unit.create) {
18
- switch (op.kind) {
19
- case ir.OpKind.ElementEnd:
20
- const start = elements.get(op.xref);
21
- if (start.i18n instanceof i18n.Message) {
22
- const id = job.allocateXrefId();
23
- ir.OpList.insertAfter(ir.createI18nStartOp(id, start.i18n), start);
24
- ir.OpList.insertBefore(ir.createI18nEndOp(id), op);
25
- }
26
- break;
27
- case ir.OpKind.Template:
28
- if (op.i18n !== undefined) {
29
- const id = job.allocateXrefId();
30
- ir.OpList.insertBefore(ir.createI18nStartOp(id, op.i18n), op);
31
- ir.OpList.insertAfter(ir.createI18nEndOp(id), op);
32
- }
33
- break;
34
- }
35
- }
36
- }
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfaTE4bl9ibG9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9nZW5lcmF0ZV9pMThuX2Jsb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssSUFBSSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9CLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXJEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEdBQW1CO0lBQ3pELEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtRQUM1QixNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVO29CQUN2QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUUsQ0FBQztvQkFDckMsSUFBSSxLQUFLLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQyxPQUFPLEVBQUU7d0JBQ3RDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDaEMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQWMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQ2hGLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFjLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7cUJBQ2pFO29CQUNELE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVE7b0JBQ3JCLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7d0JBQ3pCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDaEMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQWMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQzNFLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFjLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7cUJBQ2hFO29CQUNELE1BQU07YUFDVDtTQUNGO0tBQ0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGkxOG4gZnJvbSAnLi4vLi4vLi4vLi4vaTE4bi9pMThuX2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQge0NvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5pbXBvcnQge2dldEVsZW1lbnRzQnlYcmVmSWR9IGZyb20gJy4uL3V0aWwvZWxlbWVudHMnO1xuXG4vKipcbiAqIEdlbmVyYXRlIGkxOG4gc3RhcnQgYW5kIGVuZCBpc250cnVjdGlvbnMgdG8gbWFyayBpMThuIGJsb2Nrcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBoYXNlR2VuZXJhdGVJMThuQmxvY2tzKGpvYjogQ29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0RWxlbWVudHNCeVhyZWZJZCh1bml0KTtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQuY3JlYXRlKSB7XG4gICAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuRWxlbWVudEVuZDpcbiAgICAgICAgICBjb25zdCBzdGFydCA9IGVsZW1lbnRzLmdldChvcC54cmVmKSE7XG4gICAgICAgICAgaWYgKHN0YXJ0LmkxOG4gaW5zdGFuY2VvZiBpMThuLk1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gam9iLmFsbG9jYXRlWHJlZklkKCk7XG4gICAgICAgICAgICBpci5PcExpc3QuaW5zZXJ0QWZ0ZXI8aXIuQ3JlYXRlT3A+KGlyLmNyZWF0ZUkxOG5TdGFydE9wKGlkLCBzdGFydC5pMThuKSwgc3RhcnQpO1xuICAgICAgICAgICAgaXIuT3BMaXN0Lmluc2VydEJlZm9yZTxpci5DcmVhdGVPcD4oaXIuY3JlYXRlSTE4bkVuZE9wKGlkKSwgb3ApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuVGVtcGxhdGU6XG4gICAgICAgICAgaWYgKG9wLmkxOG4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBqb2IuYWxsb2NhdGVYcmVmSWQoKTtcbiAgICAgICAgICAgIGlyLk9wTGlzdC5pbnNlcnRCZWZvcmU8aXIuQ3JlYXRlT3A+KGlyLmNyZWF0ZUkxOG5TdGFydE9wKGlkLCBvcC5pMThuKSwgb3ApO1xuICAgICAgICAgICAgaXIuT3BMaXN0Lmluc2VydEFmdGVyPGlyLkNyZWF0ZU9wPihpci5jcmVhdGVJMThuRW5kT3AoaWQpLCBvcCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -1,36 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import * as ir from '../../ir';
9
- /**
10
- * Transforms special-case bindings with 'style' or 'class' in their names. Must run before the
11
- * main binding specialization pass.
12
- */
13
- export function phaseNoListenersOnTemplates(job) {
14
- for (const unit of job.units) {
15
- let inTemplate = false;
16
- for (const op of unit.create) {
17
- switch (op.kind) {
18
- case ir.OpKind.Template:
19
- inTemplate = true;
20
- break;
21
- case ir.OpKind.ElementStart:
22
- case ir.OpKind.Element:
23
- case ir.OpKind.ContainerStart:
24
- case ir.OpKind.Container:
25
- inTemplate = false;
26
- break;
27
- case ir.OpKind.Listener:
28
- if (inTemplate) {
29
- ir.OpList.remove(op);
30
- }
31
- break;
32
- }
33
- }
34
- }
35
- }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9fbGlzdGVuZXJzX29uX3RlbXBsYXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL25vX2xpc3RlbmVyc19vbl90ZW1wbGF0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLEdBQW1CO0lBQzdELEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtRQUM1QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDdkIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzVCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRTtnQkFDZixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtvQkFDckIsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDbEIsTUFBTTtnQkFDUixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO2dCQUM1QixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUN2QixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO2dCQUM5QixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUztvQkFDdEIsVUFBVSxHQUFHLEtBQUssQ0FBQztvQkFDbkIsTUFBTTtnQkFDUixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtvQkFDckIsSUFBSSxVQUFVLEVBQUU7d0JBQ2QsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7cUJBQ25DO29CQUNELE1BQU07YUFDVDtTQUNGO0tBQ0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHR5cGUge0NvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogVHJhbnNmb3JtcyBzcGVjaWFsLWNhc2UgYmluZGluZ3Mgd2l0aCAnc3R5bGUnIG9yICdjbGFzcycgaW4gdGhlaXIgbmFtZXMuIE11c3QgcnVuIGJlZm9yZSB0aGVcbiAqIG1haW4gYmluZGluZyBzcGVjaWFsaXphdGlvbiBwYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGhhc2VOb0xpc3RlbmVyc09uVGVtcGxhdGVzKGpvYjogQ29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGxldCBpblRlbXBsYXRlID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLlRlbXBsYXRlOlxuICAgICAgICAgIGluVGVtcGxhdGUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGlyLk9wS2luZC5FbGVtZW50U3RhcnQ6XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkVsZW1lbnQ6XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkNvbnRhaW5lclN0YXJ0OlxuICAgICAgICBjYXNlIGlyLk9wS2luZC5Db250YWluZXI6XG4gICAgICAgICAgaW5UZW1wbGF0ZSA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGlyLk9wS2luZC5MaXN0ZW5lcjpcbiAgICAgICAgICBpZiAoaW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgaXIuT3BMaXN0LnJlbW92ZTxpci5DcmVhdGVPcD4ob3ApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==