@angular/compiler 17.1.0-next.1 → 17.1.0-next.2

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 (30) hide show
  1. package/esm2022/src/compiler.mjs +2 -1
  2. package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
  3. package/esm2022/src/render3/partial/directive.mjs +1 -1
  4. package/esm2022/src/render3/partial/factory.mjs +1 -1
  5. package/esm2022/src/render3/partial/injectable.mjs +1 -1
  6. package/esm2022/src/render3/partial/injector.mjs +1 -1
  7. package/esm2022/src/render3/partial/ng_module.mjs +1 -1
  8. package/esm2022/src/render3/partial/pipe.mjs +1 -1
  9. package/esm2022/src/render3/view/api.mjs +1 -1
  10. package/esm2022/src/render3/view/compiler.mjs +6 -4
  11. package/esm2022/src/render3/view/t2_api.mjs +1 -1
  12. package/esm2022/src/render3/view/t2_binder.mjs +6 -7
  13. package/esm2022/src/render3/view/template.mjs +1 -20
  14. package/esm2022/src/render3/view/util.mjs +24 -2
  15. package/esm2022/src/template/pipeline/ir/src/enums.mjs +9 -1
  16. package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +3 -2
  17. package/esm2022/src/template/pipeline/src/emit.mjs +1 -3
  18. package/esm2022/src/template/pipeline/src/phases/assign_i18n_slot_dependencies.mjs +2 -7
  19. package/esm2022/src/template/pipeline/src/phases/create_i18n_contexts.mjs +20 -6
  20. package/esm2022/src/template/pipeline/src/phases/extract_i18n_messages.mjs +94 -23
  21. package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +3 -2
  22. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_element_placeholders.mjs +70 -57
  23. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_expression_placeholders.mjs +4 -4
  24. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_icu_placeholders.mjs +5 -21
  25. package/esm2022/src/version.mjs +1 -1
  26. package/fesm2022/compiler.mjs +275 -236
  27. package/fesm2022/compiler.mjs.map +1 -1
  28. package/index.d.ts +21 -1
  29. package/package.json +2 -2
  30. package/esm2022/src/template/pipeline/src/phases/merge_i18n_contexts.mjs +0 -59
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.1.0-next.1
2
+ * @license Angular v17.1.0-next.2
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -860,6 +860,11 @@ declare namespace core {
860
860
  }
861
861
  export { core }
862
862
 
863
+ /**
864
+ * Creates a `CssSelector` from an AST node.
865
+ */
866
+ export declare function createCssSelectorFromNode(node: t.Element | t.Template): CssSelector;
867
+
863
868
  export declare function createInjectableType(meta: R3InjectableMetadata): outputAst.ExpressionType;
864
869
 
865
870
  export declare function createMayBeForwardRefExpression<T extends outputAst.Expression>(expression: T, forwardRef: ForwardRefHandling): MaybeForwardRefExpression<T>;
@@ -1045,7 +1050,18 @@ export declare interface DirectiveMeta {
1045
1050
  * Null otherwise
1046
1051
  */
1047
1052
  exportAs: string[] | null;
1053
+ /**
1054
+ * Whether the directive is a structural directive (e.g. `<div *ngIf></div>`).
1055
+ */
1048
1056
  isStructural: boolean;
1057
+ /**
1058
+ * If the directive is a component, includes the selectors of its `ng-content` elements.
1059
+ */
1060
+ ngContentSelectors: string[] | null;
1061
+ /**
1062
+ * Whether the template of the component preserves whitespaces.
1063
+ */
1064
+ preserveWhitespaces: boolean;
1049
1065
  /**
1050
1066
  * The name of animations that the user defines in the component.
1051
1067
  * Only includes the animation names.
@@ -2939,6 +2955,10 @@ export declare interface R3ComponentMetadata<DeclarationT extends R3TemplateDepe
2939
2955
  * element without selector is present.
2940
2956
  */
2941
2957
  ngContentSelectors: string[];
2958
+ /**
2959
+ * Whether the template preserves whitespaces from the user's code.
2960
+ */
2961
+ preserveWhitespaces?: boolean;
2942
2962
  };
2943
2963
  declarations: DeclarationT[];
2944
2964
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/compiler",
3
- "version": "17.1.0-next.1",
3
+ "version": "17.1.0-next.2",
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.1.0-next.1"
14
+ "@angular/core": "17.1.0-next.2"
15
15
  },
16
16
  "peerDependenciesMeta": {
17
17
  "@angular/core": {
@@ -1,59 +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
- * Merge i18n contexts for child i18n blocks into their ancestor root contexts.
11
- */
12
- export function mergeI18nContexts(job) {
13
- // Record all of the i18n and extracted message ops for use later.
14
- const i18nOps = new Map();
15
- const i18nContexts = new Map();
16
- for (const unit of job.units) {
17
- for (const op of unit.create) {
18
- switch (op.kind) {
19
- case ir.OpKind.I18nStart:
20
- if (!op.context) {
21
- throw Error('I18n op should have its context set.');
22
- }
23
- i18nOps.set(op.xref, op);
24
- break;
25
- case ir.OpKind.I18nContext:
26
- i18nContexts.set(op.xref, op);
27
- break;
28
- }
29
- }
30
- }
31
- // For each non-root i18n op, merge its context into the root i18n op's context.
32
- for (const childI18nOp of i18nOps.values()) {
33
- if (childI18nOp.xref !== childI18nOp.root) {
34
- const childContext = i18nContexts.get(childI18nOp.context);
35
- const rootI18nOp = i18nOps.get(childI18nOp.root);
36
- const rootContext = i18nContexts.get(rootI18nOp.context);
37
- mergeParams(rootContext.params, childContext.params);
38
- mergeParams(rootContext.postprocessingParams, childContext.postprocessingParams);
39
- }
40
- }
41
- }
42
- /**
43
- * Merges the params in the `from` map to into the `to` map.
44
- */
45
- function mergeParams(to, from) {
46
- for (const [placeholder, fromValues] of from) {
47
- const toValues = to.get(placeholder) || [];
48
- // TODO(mmalerba): Child element close tag params should be prepended to maintain the same order
49
- // as TemplateDefinitionBuilder. Can be cleaned up when compatibility is no longer required.
50
- const flags = fromValues[0].flags;
51
- if ((flags & ir.I18nParamValueFlags.CloseTag) && !(flags & ir.I18nParamValueFlags.OpenTag)) {
52
- to.set(placeholder, [...fromValues, ...toValues]);
53
- }
54
- else {
55
- to.set(placeholder, [...toValues, ...fromValues]);
56
- }
57
- }
58
- }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VfaTE4bl9jb250ZXh0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL21lcmdlX2kxOG5fY29udGV4dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7O0dBRUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBNEI7SUFDNUQsa0VBQWtFO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO0lBQ3JELE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBQzVELEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUztvQkFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDaEIsTUFBTSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztvQkFDdEQsQ0FBQztvQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3pCLE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVc7b0JBQ3hCLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDOUIsTUFBTTtZQUNWLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGdGQUFnRjtJQUNoRixLQUFLLE1BQU0sV0FBVyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQzNDLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBUSxDQUFFLENBQUM7WUFDN0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFFLENBQUM7WUFDbEQsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBUSxDQUFFLENBQUM7WUFDM0QsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JELFdBQVcsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxFQUFvQyxFQUFFLElBQXNDO0lBQy9GLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQyxnR0FBZ0c7UUFDaEcsNEZBQTRGO1FBQzVGLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUUsQ0FBQyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzRixFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNOLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQge0NvbXBvbmVudENvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogTWVyZ2UgaTE4biBjb250ZXh0cyBmb3IgY2hpbGQgaTE4biBibG9ja3MgaW50byB0aGVpciBhbmNlc3RvciByb290IGNvbnRleHRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VJMThuQ29udGV4dHMoam9iOiBDb21wb25lbnRDb21waWxhdGlvbkpvYikge1xuICAvLyBSZWNvcmQgYWxsIG9mIHRoZSBpMThuIGFuZCBleHRyYWN0ZWQgbWVzc2FnZSBvcHMgZm9yIHVzZSBsYXRlci5cbiAgY29uc3QgaTE4bk9wcyA9IG5ldyBNYXA8aXIuWHJlZklkLCBpci5JMThuU3RhcnRPcD4oKTtcbiAgY29uc3QgaTE4bkNvbnRleHRzID0gbmV3IE1hcDxpci5YcmVmSWQsIGlyLkkxOG5Db250ZXh0T3A+KCk7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQuY3JlYXRlKSB7XG4gICAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuSTE4blN0YXJ0OlxuICAgICAgICAgIGlmICghb3AuY29udGV4dCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0kxOG4gb3Agc2hvdWxkIGhhdmUgaXRzIGNvbnRleHQgc2V0LicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpMThuT3BzLnNldChvcC54cmVmLCBvcCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkkxOG5Db250ZXh0OlxuICAgICAgICAgIGkxOG5Db250ZXh0cy5zZXQob3AueHJlZiwgb3ApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZvciBlYWNoIG5vbi1yb290IGkxOG4gb3AsIG1lcmdlIGl0cyBjb250ZXh0IGludG8gdGhlIHJvb3QgaTE4biBvcCdzIGNvbnRleHQuXG4gIGZvciAoY29uc3QgY2hpbGRJMThuT3Agb2YgaTE4bk9wcy52YWx1ZXMoKSkge1xuICAgIGlmIChjaGlsZEkxOG5PcC54cmVmICE9PSBjaGlsZEkxOG5PcC5yb290KSB7XG4gICAgICBjb25zdCBjaGlsZENvbnRleHQgPSBpMThuQ29udGV4dHMuZ2V0KGNoaWxkSTE4bk9wLmNvbnRleHQhKSE7XG4gICAgICBjb25zdCByb290STE4bk9wID0gaTE4bk9wcy5nZXQoY2hpbGRJMThuT3Aucm9vdCkhO1xuICAgICAgY29uc3Qgcm9vdENvbnRleHQgPSBpMThuQ29udGV4dHMuZ2V0KHJvb3RJMThuT3AuY29udGV4dCEpITtcbiAgICAgIG1lcmdlUGFyYW1zKHJvb3RDb250ZXh0LnBhcmFtcywgY2hpbGRDb250ZXh0LnBhcmFtcyk7XG4gICAgICBtZXJnZVBhcmFtcyhyb290Q29udGV4dC5wb3N0cHJvY2Vzc2luZ1BhcmFtcywgY2hpbGRDb250ZXh0LnBvc3Rwcm9jZXNzaW5nUGFyYW1zKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBNZXJnZXMgdGhlIHBhcmFtcyBpbiB0aGUgYGZyb21gIG1hcCB0byBpbnRvIHRoZSBgdG9gIG1hcC5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VQYXJhbXModG86IE1hcDxzdHJpbmcsIGlyLkkxOG5QYXJhbVZhbHVlW10+LCBmcm9tOiBNYXA8c3RyaW5nLCBpci5JMThuUGFyYW1WYWx1ZVtdPikge1xuICBmb3IgKGNvbnN0IFtwbGFjZWhvbGRlciwgZnJvbVZhbHVlc10gb2YgZnJvbSkge1xuICAgIGNvbnN0IHRvVmFsdWVzID0gdG8uZ2V0KHBsYWNlaG9sZGVyKSB8fCBbXTtcbiAgICAvLyBUT0RPKG1tYWxlcmJhKTogQ2hpbGQgZWxlbWVudCBjbG9zZSB0YWcgcGFyYW1zIHNob3VsZCBiZSBwcmVwZW5kZWQgdG8gbWFpbnRhaW4gdGhlIHNhbWUgb3JkZXJcbiAgICAvLyBhcyBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyLiBDYW4gYmUgY2xlYW5lZCB1cCB3aGVuIGNvbXBhdGliaWxpdHkgaXMgbm8gbG9uZ2VyIHJlcXVpcmVkLlxuICAgIGNvbnN0IGZsYWdzID0gZnJvbVZhbHVlc1swXSEuZmxhZ3M7XG4gICAgaWYgKChmbGFncyAmIGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuQ2xvc2VUYWcpICYmICEoZmxhZ3MgJiBpci5JMThuUGFyYW1WYWx1ZUZsYWdzLk9wZW5UYWcpKSB7XG4gICAgICB0by5zZXQocGxhY2Vob2xkZXIsIFsuLi5mcm9tVmFsdWVzLCAuLi50b1ZhbHVlc10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0by5zZXQocGxhY2Vob2xkZXIsIFsuLi50b1ZhbHVlcywgLi4uZnJvbVZhbHVlc10pO1xuICAgIH1cbiAgfVxufVxuIl19