@angular/compiler 17.0.4 → 17.0.6
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.
- package/esm2022/src/compiler.mjs +2 -1
- package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
- package/esm2022/src/render3/partial/directive.mjs +1 -1
- package/esm2022/src/render3/partial/factory.mjs +1 -1
- package/esm2022/src/render3/partial/injectable.mjs +1 -1
- package/esm2022/src/render3/partial/injector.mjs +1 -1
- package/esm2022/src/render3/partial/ng_module.mjs +1 -1
- package/esm2022/src/render3/partial/pipe.mjs +1 -1
- package/esm2022/src/render3/view/api.mjs +1 -1
- package/esm2022/src/render3/view/compiler.mjs +25 -11
- package/esm2022/src/render3/view/t2_api.mjs +1 -1
- package/esm2022/src/render3/view/t2_binder.mjs +6 -7
- package/esm2022/src/render3/view/template.mjs +1 -20
- package/esm2022/src/render3/view/util.mjs +24 -2
- package/esm2022/src/template/pipeline/ir/src/enums.mjs +34 -1
- package/esm2022/src/template/pipeline/ir/src/expression.mjs +8 -1
- package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +27 -8
- package/esm2022/src/template/pipeline/ir/src/ops/host.mjs +3 -2
- package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +23 -14
- package/esm2022/src/template/pipeline/src/emit.mjs +10 -8
- package/esm2022/src/template/pipeline/src/ingest.mjs +86 -36
- package/esm2022/src/template/pipeline/src/instruction.mjs +5 -1
- package/esm2022/src/template/pipeline/src/phases/apply_i18n_expressions.mjs +20 -4
- package/esm2022/src/template/pipeline/src/phases/assign_i18n_slot_dependencies.mjs +43 -10
- package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +19 -5
- package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +4 -4
- package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/convert_i18n_bindings.mjs +52 -0
- package/esm2022/src/template/pipeline/src/phases/create_i18n_contexts.mjs +20 -6
- package/esm2022/src/template/pipeline/src/phases/extract_i18n_messages.mjs +67 -19
- package/esm2022/src/template/pipeline/src/phases/generate_advance.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +143 -35
- package/esm2022/src/template/pipeline/src/phases/i18n_text_extraction.mjs +5 -3
- package/esm2022/src/template/pipeline/src/phases/parse_extracted_styles.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/phase_remove_content_selectors.mjs +15 -3
- package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +7 -2
- package/esm2022/src/template/pipeline/src/phases/reify.mjs +7 -1
- package/esm2022/src/template/pipeline/src/phases/remove_unused_i18n_attrs.mjs +33 -0
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_element_placeholders.mjs +169 -58
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_expression_placeholders.mjs +10 -5
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_icu_placeholders.mjs +5 -21
- package/esm2022/src/version.mjs +1 -1
- package/fesm2022/compiler.mjs +873 -358
- package/fesm2022/compiler.mjs.map +1 -1
- package/index.d.ts +21 -1
- package/package.json +2 -2
- 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.0.
|
|
2
|
+
* @license Angular v17.0.6
|
|
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.0.
|
|
3
|
+
"version": "17.0.6",
|
|
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.
|
|
14
|
+
"@angular/core": "17.0.6"
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VfaTE4bl9jb250ZXh0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL21lcmdlX2kxOG5fY29udGV4dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7O0dBRUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBNEI7SUFDNUQsa0VBQWtFO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO0lBQ3JELE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBQzVELEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtRQUM1QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO29CQUN0QixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRTt3QkFDZixNQUFNLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3FCQUNyRDtvQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3pCLE1BQU07Z0JBQ1IsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVc7b0JBQ3hCLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDOUIsTUFBTTthQUNUO1NBQ0Y7S0FDRjtJQUVELGdGQUFnRjtJQUNoRixLQUFLLE1BQU0sV0FBVyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUMxQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLElBQUksRUFBRTtZQUN6QyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxPQUFRLENBQUUsQ0FBQztZQUM3RCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUUsQ0FBQztZQUNsRCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFRLENBQUUsQ0FBQztZQUMzRCxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckQsV0FBVyxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNsRjtLQUNGO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxXQUFXLENBQUMsRUFBb0MsRUFBRSxJQUFzQztJQUMvRixLQUFLLE1BQU0sQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxFQUFFO1FBQzVDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNDLGdHQUFnRztRQUNoRyw0RkFBNEY7UUFDNUYsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxRixFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUNuRDthQUFNO1lBQ0wsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7U0FDbkQ7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHtDb21wb25lbnRDb21waWxhdGlvbkpvYn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIE1lcmdlIGkxOG4gY29udGV4dHMgZm9yIGNoaWxkIGkxOG4gYmxvY2tzIGludG8gdGhlaXIgYW5jZXN0b3Igcm9vdCBjb250ZXh0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlSTE4bkNvbnRleHRzKGpvYjogQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpIHtcbiAgLy8gUmVjb3JkIGFsbCBvZiB0aGUgaTE4biBhbmQgZXh0cmFjdGVkIG1lc3NhZ2Ugb3BzIGZvciB1c2UgbGF0ZXIuXG4gIGNvbnN0IGkxOG5PcHMgPSBuZXcgTWFwPGlyLlhyZWZJZCwgaXIuSTE4blN0YXJ0T3A+KCk7XG4gIGNvbnN0IGkxOG5Db250ZXh0cyA9IG5ldyBNYXA8aXIuWHJlZklkLCBpci5JMThuQ29udGV4dE9wPigpO1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkkxOG5TdGFydDpcbiAgICAgICAgICBpZiAoIW9wLmNvbnRleHQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdJMThuIG9wIHNob3VsZCBoYXZlIGl0cyBjb250ZXh0IHNldC4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaTE4bk9wcy5zZXQob3AueHJlZiwgb3ApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGlyLk9wS2luZC5JMThuQ29udGV4dDpcbiAgICAgICAgICBpMThuQ29udGV4dHMuc2V0KG9wLnhyZWYsIG9wKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGb3IgZWFjaCBub24tcm9vdCBpMThuIG9wLCBtZXJnZSBpdHMgY29udGV4dCBpbnRvIHRoZSByb290IGkxOG4gb3AncyBjb250ZXh0LlxuICBmb3IgKGNvbnN0IGNoaWxkSTE4bk9wIG9mIGkxOG5PcHMudmFsdWVzKCkpIHtcbiAgICBpZiAoY2hpbGRJMThuT3AueHJlZiAhPT0gY2hpbGRJMThuT3Aucm9vdCkge1xuICAgICAgY29uc3QgY2hpbGRDb250ZXh0ID0gaTE4bkNvbnRleHRzLmdldChjaGlsZEkxOG5PcC5jb250ZXh0ISkhO1xuICAgICAgY29uc3Qgcm9vdEkxOG5PcCA9IGkxOG5PcHMuZ2V0KGNoaWxkSTE4bk9wLnJvb3QpITtcbiAgICAgIGNvbnN0IHJvb3RDb250ZXh0ID0gaTE4bkNvbnRleHRzLmdldChyb290STE4bk9wLmNvbnRleHQhKSE7XG4gICAgICBtZXJnZVBhcmFtcyhyb290Q29udGV4dC5wYXJhbXMsIGNoaWxkQ29udGV4dC5wYXJhbXMpO1xuICAgICAgbWVyZ2VQYXJhbXMocm9vdENvbnRleHQucG9zdHByb2Nlc3NpbmdQYXJhbXMsIGNoaWxkQ29udGV4dC5wb3N0cHJvY2Vzc2luZ1BhcmFtcyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTWVyZ2VzIHRoZSBwYXJhbXMgaW4gdGhlIGBmcm9tYCBtYXAgdG8gaW50byB0aGUgYHRvYCBtYXAuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlUGFyYW1zKHRvOiBNYXA8c3RyaW5nLCBpci5JMThuUGFyYW1WYWx1ZVtdPiwgZnJvbTogTWFwPHN0cmluZywgaXIuSTE4blBhcmFtVmFsdWVbXT4pIHtcbiAgZm9yIChjb25zdCBbcGxhY2Vob2xkZXIsIGZyb21WYWx1ZXNdIG9mIGZyb20pIHtcbiAgICBjb25zdCB0b1ZhbHVlcyA9IHRvLmdldChwbGFjZWhvbGRlcikgfHwgW107XG4gICAgLy8gVE9ETyhtbWFsZXJiYSk6IENoaWxkIGVsZW1lbnQgY2xvc2UgdGFnIHBhcmFtcyBzaG91bGQgYmUgcHJlcGVuZGVkIHRvIG1haW50YWluIHRoZSBzYW1lIG9yZGVyXG4gICAgLy8gYXMgVGVtcGxhdGVEZWZpbml0aW9uQnVpbGRlci4gQ2FuIGJlIGNsZWFuZWQgdXAgd2hlbiBjb21wYXRpYmlsaXR5IGlzIG5vIGxvbmdlciByZXF1aXJlZC5cbiAgICBjb25zdCBmbGFncyA9IGZyb21WYWx1ZXNbMF0hLmZsYWdzO1xuICAgIGlmICgoZmxhZ3MgJiBpci5JMThuUGFyYW1WYWx1ZUZsYWdzLkNsb3NlVGFnKSAmJiAhKGZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5PcGVuVGFnKSkge1xuICAgICAgdG8uc2V0KHBsYWNlaG9sZGVyLCBbLi4uZnJvbVZhbHVlcywgLi4udG9WYWx1ZXNdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG8uc2V0KHBsYWNlaG9sZGVyLCBbLi4udG9WYWx1ZXMsIC4uLmZyb21WYWx1ZXNdKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|