@angular/compiler 20.1.0-next.2 → 20.1.0-rc.0
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/fesm2022/compiler.mjs +450 -328
- package/fesm2022/compiler.mjs.map +1 -1
- package/index.d.ts +51 -35
- package/package.json +1 -1
package/fesm2022/compiler.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.1.0-
|
|
2
|
+
* @license Angular v20.1.0-rc.0
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -961,6 +961,15 @@ var BinaryOperator;
|
|
|
961
961
|
BinaryOperator[BinaryOperator["NullishCoalesce"] = 18] = "NullishCoalesce";
|
|
962
962
|
BinaryOperator[BinaryOperator["Exponentiation"] = 19] = "Exponentiation";
|
|
963
963
|
BinaryOperator[BinaryOperator["In"] = 20] = "In";
|
|
964
|
+
BinaryOperator[BinaryOperator["AdditionAssignment"] = 21] = "AdditionAssignment";
|
|
965
|
+
BinaryOperator[BinaryOperator["SubtractionAssignment"] = 22] = "SubtractionAssignment";
|
|
966
|
+
BinaryOperator[BinaryOperator["MultiplicationAssignment"] = 23] = "MultiplicationAssignment";
|
|
967
|
+
BinaryOperator[BinaryOperator["DivisionAssignment"] = 24] = "DivisionAssignment";
|
|
968
|
+
BinaryOperator[BinaryOperator["RemainderAssignment"] = 25] = "RemainderAssignment";
|
|
969
|
+
BinaryOperator[BinaryOperator["ExponentiationAssignment"] = 26] = "ExponentiationAssignment";
|
|
970
|
+
BinaryOperator[BinaryOperator["AndAssignment"] = 27] = "AndAssignment";
|
|
971
|
+
BinaryOperator[BinaryOperator["OrAssignment"] = 28] = "OrAssignment";
|
|
972
|
+
BinaryOperator[BinaryOperator["NullishCoalesceAssignment"] = 29] = "NullishCoalesceAssignment";
|
|
964
973
|
})(BinaryOperator || (BinaryOperator = {}));
|
|
965
974
|
function nullSafeIsEquivalent(base, other) {
|
|
966
975
|
if (base == null || other == null) {
|
|
@@ -1680,6 +1689,19 @@ class BinaryOperatorExpr extends Expression {
|
|
|
1680
1689
|
clone() {
|
|
1681
1690
|
return new BinaryOperatorExpr(this.operator, this.lhs.clone(), this.rhs.clone(), this.type, this.sourceSpan);
|
|
1682
1691
|
}
|
|
1692
|
+
isAssignment() {
|
|
1693
|
+
const op = this.operator;
|
|
1694
|
+
return (op === BinaryOperator.Assign ||
|
|
1695
|
+
op === BinaryOperator.AdditionAssignment ||
|
|
1696
|
+
op === BinaryOperator.SubtractionAssignment ||
|
|
1697
|
+
op === BinaryOperator.MultiplicationAssignment ||
|
|
1698
|
+
op === BinaryOperator.DivisionAssignment ||
|
|
1699
|
+
op === BinaryOperator.RemainderAssignment ||
|
|
1700
|
+
op === BinaryOperator.ExponentiationAssignment ||
|
|
1701
|
+
op === BinaryOperator.AndAssignment ||
|
|
1702
|
+
op === BinaryOperator.OrAssignment ||
|
|
1703
|
+
op === BinaryOperator.NullishCoalesceAssignment);
|
|
1704
|
+
}
|
|
1683
1705
|
}
|
|
1684
1706
|
class ReadPropExpr extends Expression {
|
|
1685
1707
|
receiver;
|
|
@@ -2596,6 +2618,23 @@ class Identifiers {
|
|
|
2596
2618
|
static element = { name: 'ɵɵelement', moduleName: CORE };
|
|
2597
2619
|
static elementStart = { name: 'ɵɵelementStart', moduleName: CORE };
|
|
2598
2620
|
static elementEnd = { name: 'ɵɵelementEnd', moduleName: CORE };
|
|
2621
|
+
static domElement = { name: 'ɵɵdomElement', moduleName: CORE };
|
|
2622
|
+
static domElementStart = { name: 'ɵɵdomElementStart', moduleName: CORE };
|
|
2623
|
+
static domElementEnd = { name: 'ɵɵdomElementEnd', moduleName: CORE };
|
|
2624
|
+
static domElementContainer = {
|
|
2625
|
+
name: 'ɵɵdomElementContainer',
|
|
2626
|
+
moduleName: CORE,
|
|
2627
|
+
};
|
|
2628
|
+
static domElementContainerStart = {
|
|
2629
|
+
name: 'ɵɵdomElementContainerStart',
|
|
2630
|
+
moduleName: CORE,
|
|
2631
|
+
};
|
|
2632
|
+
static domElementContainerEnd = {
|
|
2633
|
+
name: 'ɵɵdomElementContainerEnd',
|
|
2634
|
+
moduleName: CORE,
|
|
2635
|
+
};
|
|
2636
|
+
static domTemplate = { name: 'ɵɵdomTemplate', moduleName: CORE };
|
|
2637
|
+
static domListener = { name: 'ɵɵdomListener', moduleName: CORE };
|
|
2599
2638
|
static advance = { name: 'ɵɵadvance', moduleName: CORE };
|
|
2600
2639
|
static syntheticHostProperty = {
|
|
2601
2640
|
name: 'ɵɵsyntheticHostProperty',
|
|
@@ -3210,6 +3249,38 @@ class _EmittedLine {
|
|
|
3210
3249
|
this.indent = indent;
|
|
3211
3250
|
}
|
|
3212
3251
|
}
|
|
3252
|
+
const BINARY_OPERATORS$1 = new Map([
|
|
3253
|
+
[BinaryOperator.And, '&&'],
|
|
3254
|
+
[BinaryOperator.Bigger, '>'],
|
|
3255
|
+
[BinaryOperator.BiggerEquals, '>='],
|
|
3256
|
+
[BinaryOperator.BitwiseOr, '|'],
|
|
3257
|
+
[BinaryOperator.BitwiseAnd, '&'],
|
|
3258
|
+
[BinaryOperator.Divide, '/'],
|
|
3259
|
+
[BinaryOperator.Assign, '='],
|
|
3260
|
+
[BinaryOperator.Equals, '=='],
|
|
3261
|
+
[BinaryOperator.Identical, '==='],
|
|
3262
|
+
[BinaryOperator.Lower, '<'],
|
|
3263
|
+
[BinaryOperator.LowerEquals, '<='],
|
|
3264
|
+
[BinaryOperator.Minus, '-'],
|
|
3265
|
+
[BinaryOperator.Modulo, '%'],
|
|
3266
|
+
[BinaryOperator.Exponentiation, '**'],
|
|
3267
|
+
[BinaryOperator.Multiply, '*'],
|
|
3268
|
+
[BinaryOperator.NotEquals, '!='],
|
|
3269
|
+
[BinaryOperator.NotIdentical, '!=='],
|
|
3270
|
+
[BinaryOperator.NullishCoalesce, '??'],
|
|
3271
|
+
[BinaryOperator.Or, '||'],
|
|
3272
|
+
[BinaryOperator.Plus, '+'],
|
|
3273
|
+
[BinaryOperator.In, 'in'],
|
|
3274
|
+
[BinaryOperator.AdditionAssignment, '+='],
|
|
3275
|
+
[BinaryOperator.SubtractionAssignment, '-='],
|
|
3276
|
+
[BinaryOperator.MultiplicationAssignment, '*='],
|
|
3277
|
+
[BinaryOperator.DivisionAssignment, '/='],
|
|
3278
|
+
[BinaryOperator.RemainderAssignment, '%='],
|
|
3279
|
+
[BinaryOperator.ExponentiationAssignment, '**='],
|
|
3280
|
+
[BinaryOperator.AndAssignment, '&&='],
|
|
3281
|
+
[BinaryOperator.OrAssignment, '||='],
|
|
3282
|
+
[BinaryOperator.NullishCoalesceAssignment, '??='],
|
|
3283
|
+
]);
|
|
3213
3284
|
class EmitterVisitorContext {
|
|
3214
3285
|
_indent;
|
|
3215
3286
|
static createRoot() {
|
|
@@ -3532,79 +3603,15 @@ class AbstractEmitterVisitor {
|
|
|
3532
3603
|
return null;
|
|
3533
3604
|
}
|
|
3534
3605
|
visitBinaryOperatorExpr(ast, ctx) {
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
|
|
3538
|
-
opStr = '=';
|
|
3539
|
-
break;
|
|
3540
|
-
case BinaryOperator.Equals:
|
|
3541
|
-
opStr = '==';
|
|
3542
|
-
break;
|
|
3543
|
-
case BinaryOperator.Identical:
|
|
3544
|
-
opStr = '===';
|
|
3545
|
-
break;
|
|
3546
|
-
case BinaryOperator.NotEquals:
|
|
3547
|
-
opStr = '!=';
|
|
3548
|
-
break;
|
|
3549
|
-
case BinaryOperator.NotIdentical:
|
|
3550
|
-
opStr = '!==';
|
|
3551
|
-
break;
|
|
3552
|
-
case BinaryOperator.And:
|
|
3553
|
-
opStr = '&&';
|
|
3554
|
-
break;
|
|
3555
|
-
case BinaryOperator.BitwiseOr:
|
|
3556
|
-
opStr = '|';
|
|
3557
|
-
break;
|
|
3558
|
-
case BinaryOperator.BitwiseAnd:
|
|
3559
|
-
opStr = '&';
|
|
3560
|
-
break;
|
|
3561
|
-
case BinaryOperator.Or:
|
|
3562
|
-
opStr = '||';
|
|
3563
|
-
break;
|
|
3564
|
-
case BinaryOperator.Plus:
|
|
3565
|
-
opStr = '+';
|
|
3566
|
-
break;
|
|
3567
|
-
case BinaryOperator.Minus:
|
|
3568
|
-
opStr = '-';
|
|
3569
|
-
break;
|
|
3570
|
-
case BinaryOperator.Divide:
|
|
3571
|
-
opStr = '/';
|
|
3572
|
-
break;
|
|
3573
|
-
case BinaryOperator.Multiply:
|
|
3574
|
-
opStr = '*';
|
|
3575
|
-
break;
|
|
3576
|
-
case BinaryOperator.Modulo:
|
|
3577
|
-
opStr = '%';
|
|
3578
|
-
break;
|
|
3579
|
-
case BinaryOperator.Exponentiation:
|
|
3580
|
-
opStr = '**';
|
|
3581
|
-
break;
|
|
3582
|
-
case BinaryOperator.Lower:
|
|
3583
|
-
opStr = '<';
|
|
3584
|
-
break;
|
|
3585
|
-
case BinaryOperator.LowerEquals:
|
|
3586
|
-
opStr = '<=';
|
|
3587
|
-
break;
|
|
3588
|
-
case BinaryOperator.Bigger:
|
|
3589
|
-
opStr = '>';
|
|
3590
|
-
break;
|
|
3591
|
-
case BinaryOperator.BiggerEquals:
|
|
3592
|
-
opStr = '>=';
|
|
3593
|
-
break;
|
|
3594
|
-
case BinaryOperator.NullishCoalesce:
|
|
3595
|
-
opStr = '??';
|
|
3596
|
-
break;
|
|
3597
|
-
case BinaryOperator.In:
|
|
3598
|
-
opStr = 'in';
|
|
3599
|
-
break;
|
|
3600
|
-
default:
|
|
3601
|
-
throw new Error(`Unknown operator ${ast.operator}`);
|
|
3606
|
+
const operator = BINARY_OPERATORS$1.get(ast.operator);
|
|
3607
|
+
if (!operator) {
|
|
3608
|
+
throw new Error(`Unknown operator ${ast.operator}`);
|
|
3602
3609
|
}
|
|
3603
3610
|
const parens = ast !== this.lastIfCondition;
|
|
3604
3611
|
if (parens)
|
|
3605
3612
|
ctx.print(ast, `(`);
|
|
3606
3613
|
ast.lhs.visitExpression(this, ctx);
|
|
3607
|
-
ctx.print(ast, ` ${
|
|
3614
|
+
ctx.print(ast, ` ${operator} `);
|
|
3608
3615
|
ast.rhs.visitExpression(this, ctx);
|
|
3609
3616
|
if (parens)
|
|
3610
3617
|
ctx.print(ast, `)`);
|
|
@@ -3969,18 +3976,6 @@ function getInjectFn(target) {
|
|
|
3969
3976
|
}
|
|
3970
3977
|
}
|
|
3971
3978
|
|
|
3972
|
-
class ParserError {
|
|
3973
|
-
input;
|
|
3974
|
-
errLocation;
|
|
3975
|
-
ctxLocation;
|
|
3976
|
-
message;
|
|
3977
|
-
constructor(message, input, errLocation, ctxLocation) {
|
|
3978
|
-
this.input = input;
|
|
3979
|
-
this.errLocation = errLocation;
|
|
3980
|
-
this.ctxLocation = ctxLocation;
|
|
3981
|
-
this.message = `Parser Error: ${message} ${errLocation} [${input}] in ${ctxLocation}`;
|
|
3982
|
-
}
|
|
3983
|
-
}
|
|
3984
3979
|
class ParseSpan {
|
|
3985
3980
|
start;
|
|
3986
3981
|
end;
|
|
@@ -4199,6 +4194,18 @@ class Binary extends AST {
|
|
|
4199
4194
|
visit(visitor, context = null) {
|
|
4200
4195
|
return visitor.visitBinary(this, context);
|
|
4201
4196
|
}
|
|
4197
|
+
static isAssignmentOperation(op) {
|
|
4198
|
+
return (op === '=' ||
|
|
4199
|
+
op === '+=' ||
|
|
4200
|
+
op === '-=' ||
|
|
4201
|
+
op === '*=' ||
|
|
4202
|
+
op === '/=' ||
|
|
4203
|
+
op === '%=' ||
|
|
4204
|
+
op === '**=' ||
|
|
4205
|
+
op === '&&=' ||
|
|
4206
|
+
op === '||=' ||
|
|
4207
|
+
op === '??=');
|
|
4208
|
+
}
|
|
4202
4209
|
}
|
|
4203
4210
|
/**
|
|
4204
4211
|
* For backwards compatibility reasons, `Unary` inherits from `Binary` and mimics the binary AST
|
|
@@ -4529,7 +4536,7 @@ class ParsedProperty {
|
|
|
4529
4536
|
keySpan;
|
|
4530
4537
|
valueSpan;
|
|
4531
4538
|
isLiteral;
|
|
4532
|
-
|
|
4539
|
+
isLegacyAnimation;
|
|
4533
4540
|
constructor(name, expression, type, sourceSpan, keySpan, valueSpan) {
|
|
4534
4541
|
this.name = name;
|
|
4535
4542
|
this.expression = expression;
|
|
@@ -4538,22 +4545,22 @@ class ParsedProperty {
|
|
|
4538
4545
|
this.keySpan = keySpan;
|
|
4539
4546
|
this.valueSpan = valueSpan;
|
|
4540
4547
|
this.isLiteral = this.type === ParsedPropertyType.LITERAL_ATTR;
|
|
4541
|
-
this.
|
|
4548
|
+
this.isLegacyAnimation = this.type === ParsedPropertyType.LEGACY_ANIMATION;
|
|
4542
4549
|
}
|
|
4543
4550
|
}
|
|
4544
4551
|
var ParsedPropertyType;
|
|
4545
4552
|
(function (ParsedPropertyType) {
|
|
4546
4553
|
ParsedPropertyType[ParsedPropertyType["DEFAULT"] = 0] = "DEFAULT";
|
|
4547
4554
|
ParsedPropertyType[ParsedPropertyType["LITERAL_ATTR"] = 1] = "LITERAL_ATTR";
|
|
4548
|
-
ParsedPropertyType[ParsedPropertyType["
|
|
4555
|
+
ParsedPropertyType[ParsedPropertyType["LEGACY_ANIMATION"] = 2] = "LEGACY_ANIMATION";
|
|
4549
4556
|
ParsedPropertyType[ParsedPropertyType["TWO_WAY"] = 3] = "TWO_WAY";
|
|
4550
4557
|
})(ParsedPropertyType || (ParsedPropertyType = {}));
|
|
4551
4558
|
var ParsedEventType;
|
|
4552
4559
|
(function (ParsedEventType) {
|
|
4553
4560
|
// DOM or Directive event
|
|
4554
4561
|
ParsedEventType[ParsedEventType["Regular"] = 0] = "Regular";
|
|
4555
|
-
//
|
|
4556
|
-
ParsedEventType[ParsedEventType["
|
|
4562
|
+
// Legacy animation specific event
|
|
4563
|
+
ParsedEventType[ParsedEventType["LegacyAnimation"] = 1] = "LegacyAnimation";
|
|
4557
4564
|
// Event side of a two-way binding (e.g. `[(property)]="expression"`).
|
|
4558
4565
|
ParsedEventType[ParsedEventType["TwoWay"] = 2] = "TwoWay";
|
|
4559
4566
|
})(ParsedEventType || (ParsedEventType = {}));
|
|
@@ -4602,8 +4609,8 @@ var BindingType;
|
|
|
4602
4609
|
BindingType[BindingType["Class"] = 2] = "Class";
|
|
4603
4610
|
// A binding to a style rule (e.g. `[style.rule]="expression"`).
|
|
4604
4611
|
BindingType[BindingType["Style"] = 3] = "Style";
|
|
4605
|
-
// A binding to
|
|
4606
|
-
BindingType[BindingType["
|
|
4612
|
+
// A binding to a legacy animation reference (e.g. `[animate.key]="expression"`).
|
|
4613
|
+
BindingType[BindingType["LegacyAnimation"] = 4] = "LegacyAnimation";
|
|
4607
4614
|
// Property side of a two-way binding (e.g. `[(property)]="expression"`).
|
|
4608
4615
|
BindingType[BindingType["TwoWay"] = 5] = "TwoWay";
|
|
4609
4616
|
})(BindingType || (BindingType = {}));
|
|
@@ -4786,7 +4793,7 @@ class BoundEvent {
|
|
|
4786
4793
|
}
|
|
4787
4794
|
static fromParsedEvent(event) {
|
|
4788
4795
|
const target = event.type === ParsedEventType.Regular ? event.targetOrPhase : null;
|
|
4789
|
-
const phase = event.type === ParsedEventType.
|
|
4796
|
+
const phase = event.type === ParsedEventType.LegacyAnimation ? event.targetOrPhase : null;
|
|
4790
4797
|
if (event.keySpan === undefined) {
|
|
4791
4798
|
throw new Error(`Unexpected state: keySpan must be defined for bound event but was not for ${event.name}: ${event.sourceSpan}`);
|
|
4792
4799
|
}
|
|
@@ -8912,9 +8919,9 @@ var BindingKind;
|
|
|
8912
8919
|
*/
|
|
8913
8920
|
BindingKind[BindingKind["I18n"] = 5] = "I18n";
|
|
8914
8921
|
/**
|
|
8915
|
-
*
|
|
8922
|
+
* Legacy animation property bindings.
|
|
8916
8923
|
*/
|
|
8917
|
-
BindingKind[BindingKind["
|
|
8924
|
+
BindingKind[BindingKind["LegacyAnimation"] = 6] = "LegacyAnimation";
|
|
8918
8925
|
/**
|
|
8919
8926
|
* Property side of a two-way binding.
|
|
8920
8927
|
*/
|
|
@@ -9159,13 +9166,13 @@ function createBindingOp(target, kind, name, expression, unit, securityContext,
|
|
|
9159
9166
|
/**
|
|
9160
9167
|
* Create a `PropertyOp`.
|
|
9161
9168
|
*/
|
|
9162
|
-
function createPropertyOp(target, name, expression,
|
|
9169
|
+
function createPropertyOp(target, name, expression, isLegacyAnimationTrigger, securityContext, isStructuralTemplateAttribute, templateKind, i18nContext, i18nMessage, sourceSpan) {
|
|
9163
9170
|
return {
|
|
9164
9171
|
kind: OpKind.Property,
|
|
9165
9172
|
target,
|
|
9166
9173
|
name,
|
|
9167
9174
|
expression,
|
|
9168
|
-
|
|
9175
|
+
isLegacyAnimationTrigger,
|
|
9169
9176
|
securityContext,
|
|
9170
9177
|
sanitizer: null,
|
|
9171
9178
|
isStructuralTemplateAttribute,
|
|
@@ -10852,7 +10859,7 @@ function createTextOp(xref, initialValue, icuPlaceholder, sourceSpan) {
|
|
|
10852
10859
|
/**
|
|
10853
10860
|
* Create a `ListenerOp`. Host bindings reuse all the listener logic.
|
|
10854
10861
|
*/
|
|
10855
|
-
function createListenerOp(target, targetSlot, name, tag, handlerOps,
|
|
10862
|
+
function createListenerOp(target, targetSlot, name, tag, handlerOps, legacyAnimationPhase, eventTarget, hostListener, sourceSpan) {
|
|
10856
10863
|
const handlerList = new OpList();
|
|
10857
10864
|
handlerList.push(handlerOps);
|
|
10858
10865
|
return {
|
|
@@ -10865,8 +10872,8 @@ function createListenerOp(target, targetSlot, name, tag, handlerOps, animationPh
|
|
|
10865
10872
|
handlerOps: handlerList,
|
|
10866
10873
|
handlerFnName: null,
|
|
10867
10874
|
consumesDollarEvent: false,
|
|
10868
|
-
|
|
10869
|
-
|
|
10875
|
+
isLegacyAnimationListener: legacyAnimationPhase !== null,
|
|
10876
|
+
legacyAnimationPhase: legacyAnimationPhase,
|
|
10870
10877
|
eventTarget,
|
|
10871
10878
|
sourceSpan,
|
|
10872
10879
|
...NEW_OP,
|
|
@@ -11121,12 +11128,12 @@ function createSourceLocationOp(templatePath, locations) {
|
|
|
11121
11128
|
};
|
|
11122
11129
|
}
|
|
11123
11130
|
|
|
11124
|
-
function createDomPropertyOp(name, expression,
|
|
11131
|
+
function createDomPropertyOp(name, expression, isLegacyAnimationTrigger, i18nContext, securityContext, sourceSpan) {
|
|
11125
11132
|
return {
|
|
11126
11133
|
kind: OpKind.DomProperty,
|
|
11127
11134
|
name,
|
|
11128
11135
|
expression,
|
|
11129
|
-
|
|
11136
|
+
isLegacyAnimationTrigger,
|
|
11130
11137
|
i18nContext,
|
|
11131
11138
|
securityContext,
|
|
11132
11139
|
sanitizer: null,
|
|
@@ -11148,6 +11155,14 @@ var CompilationJobKind;
|
|
|
11148
11155
|
CompilationJobKind[CompilationJobKind["Host"] = 1] = "Host";
|
|
11149
11156
|
CompilationJobKind[CompilationJobKind["Both"] = 2] = "Both";
|
|
11150
11157
|
})(CompilationJobKind || (CompilationJobKind = {}));
|
|
11158
|
+
/** Possible modes in which a component's template can be compiled. */
|
|
11159
|
+
var TemplateCompilationMode;
|
|
11160
|
+
(function (TemplateCompilationMode) {
|
|
11161
|
+
/** Supports the full instruction set, including directives. */
|
|
11162
|
+
TemplateCompilationMode[TemplateCompilationMode["Full"] = 0] = "Full";
|
|
11163
|
+
/** Uses a narrower instruction set that doesn't support directives and allows optimizations. */
|
|
11164
|
+
TemplateCompilationMode[TemplateCompilationMode["DomOnly"] = 1] = "DomOnly";
|
|
11165
|
+
})(TemplateCompilationMode || (TemplateCompilationMode = {}));
|
|
11151
11166
|
/**
|
|
11152
11167
|
* An entire ongoing compilation, which will result in one or more template functions when complete.
|
|
11153
11168
|
* Contains one or more corresponding compilation units.
|
|
@@ -11156,10 +11171,12 @@ class CompilationJob {
|
|
|
11156
11171
|
componentName;
|
|
11157
11172
|
pool;
|
|
11158
11173
|
compatibility;
|
|
11159
|
-
|
|
11174
|
+
mode;
|
|
11175
|
+
constructor(componentName, pool, compatibility, mode) {
|
|
11160
11176
|
this.componentName = componentName;
|
|
11161
11177
|
this.pool = pool;
|
|
11162
11178
|
this.compatibility = compatibility;
|
|
11179
|
+
this.mode = mode;
|
|
11163
11180
|
}
|
|
11164
11181
|
kind = CompilationJobKind.Both;
|
|
11165
11182
|
/**
|
|
@@ -11184,8 +11201,8 @@ class ComponentCompilationJob extends CompilationJob {
|
|
|
11184
11201
|
allDeferrableDepsFn;
|
|
11185
11202
|
relativeTemplatePath;
|
|
11186
11203
|
enableDebugLocations;
|
|
11187
|
-
constructor(componentName, pool, compatibility, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations) {
|
|
11188
|
-
super(componentName, pool, compatibility);
|
|
11204
|
+
constructor(componentName, pool, compatibility, mode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations) {
|
|
11205
|
+
super(componentName, pool, compatibility, mode);
|
|
11189
11206
|
this.relativeContextFilePath = relativeContextFilePath;
|
|
11190
11207
|
this.i18nUseExternalIds = i18nUseExternalIds;
|
|
11191
11208
|
this.deferMeta = deferMeta;
|
|
@@ -11330,8 +11347,8 @@ class ViewCompilationUnit extends CompilationUnit {
|
|
|
11330
11347
|
* Compilation-in-progress of a host binding, which contains a single unit for that host binding.
|
|
11331
11348
|
*/
|
|
11332
11349
|
class HostBindingCompilationJob extends CompilationJob {
|
|
11333
|
-
constructor(componentName, pool, compatibility) {
|
|
11334
|
-
super(componentName, pool, compatibility);
|
|
11350
|
+
constructor(componentName, pool, compatibility, mode) {
|
|
11351
|
+
super(componentName, pool, compatibility, mode);
|
|
11335
11352
|
this.root = new HostBindingCompilationUnit(this);
|
|
11336
11353
|
}
|
|
11337
11354
|
kind = CompilationJobKind.Host;
|
|
@@ -11563,7 +11580,7 @@ function extractAttributes(job) {
|
|
|
11563
11580
|
extractAttributeOp(unit, op, elements);
|
|
11564
11581
|
break;
|
|
11565
11582
|
case OpKind.Property:
|
|
11566
|
-
if (!op.
|
|
11583
|
+
if (!op.isLegacyAnimationTrigger) {
|
|
11567
11584
|
let bindingKind;
|
|
11568
11585
|
if (op.i18nMessage !== null && op.templateKind === null) {
|
|
11569
11586
|
// If the binding has an i18n context, it is an i18n attribute, and should have that
|
|
@@ -11605,7 +11622,7 @@ function extractAttributes(job) {
|
|
|
11605
11622
|
}
|
|
11606
11623
|
break;
|
|
11607
11624
|
case OpKind.Listener:
|
|
11608
|
-
if (!op.
|
|
11625
|
+
if (!op.isLegacyAnimationListener) {
|
|
11609
11626
|
const extractedAttributeOp = createExtractedAttributeOp(op.target, BindingKind.Property, null, op.name,
|
|
11610
11627
|
/* expression */ null,
|
|
11611
11628
|
/* i18nContext */ null,
|
|
@@ -11715,12 +11732,12 @@ function specializeBindings(job) {
|
|
|
11715
11732
|
}
|
|
11716
11733
|
break;
|
|
11717
11734
|
case BindingKind.Property:
|
|
11718
|
-
case BindingKind.
|
|
11735
|
+
case BindingKind.LegacyAnimation:
|
|
11719
11736
|
if (job.kind === CompilationJobKind.Host) {
|
|
11720
|
-
OpList.replace(op, createDomPropertyOp(op.name, op.expression, op.bindingKind === BindingKind.
|
|
11737
|
+
OpList.replace(op, createDomPropertyOp(op.name, op.expression, op.bindingKind === BindingKind.LegacyAnimation, op.i18nContext, op.securityContext, op.sourceSpan));
|
|
11721
11738
|
}
|
|
11722
11739
|
else {
|
|
11723
|
-
OpList.replace(op, createPropertyOp(op.target, op.name, op.expression, op.bindingKind === BindingKind.
|
|
11740
|
+
OpList.replace(op, createPropertyOp(op.target, op.name, op.expression, op.bindingKind === BindingKind.LegacyAnimation, op.securityContext, op.isStructuralTemplateAttribute, op.templateKind, op.i18nContext, op.i18nMessage, op.sourceSpan));
|
|
11724
11741
|
}
|
|
11725
11742
|
break;
|
|
11726
11743
|
case BindingKind.TwoWayProperty:
|
|
@@ -11764,6 +11781,14 @@ const CHAIN_COMPATIBILITY = new Map([
|
|
|
11764
11781
|
[Identifiers.declareLet, Identifiers.declareLet],
|
|
11765
11782
|
[Identifiers.conditionalCreate, Identifiers.conditionalBranchCreate],
|
|
11766
11783
|
[Identifiers.conditionalBranchCreate, Identifiers.conditionalBranchCreate],
|
|
11784
|
+
[Identifiers.domElement, Identifiers.domElement],
|
|
11785
|
+
[Identifiers.domElementStart, Identifiers.domElementStart],
|
|
11786
|
+
[Identifiers.domElementEnd, Identifiers.domElementEnd],
|
|
11787
|
+
[Identifiers.domElementContainer, Identifiers.domElementContainer],
|
|
11788
|
+
[Identifiers.domElementContainerStart, Identifiers.domElementContainerStart],
|
|
11789
|
+
[Identifiers.domElementContainerEnd, Identifiers.domElementContainerEnd],
|
|
11790
|
+
[Identifiers.domListener, Identifiers.domListener],
|
|
11791
|
+
[Identifiers.domTemplate, Identifiers.domTemplate],
|
|
11767
11792
|
]);
|
|
11768
11793
|
/**
|
|
11769
11794
|
* Chaining results in repeated call expressions, causing a deep AST of receiver expressions. To prevent running out of
|
|
@@ -11936,6 +11961,15 @@ const BINARY_OPERATORS = new Map([
|
|
|
11936
11961
|
['||', BinaryOperator.Or],
|
|
11937
11962
|
['+', BinaryOperator.Plus],
|
|
11938
11963
|
['in', BinaryOperator.In],
|
|
11964
|
+
['+=', BinaryOperator.AdditionAssignment],
|
|
11965
|
+
['-=', BinaryOperator.SubtractionAssignment],
|
|
11966
|
+
['*=', BinaryOperator.MultiplicationAssignment],
|
|
11967
|
+
['/=', BinaryOperator.DivisionAssignment],
|
|
11968
|
+
['%=', BinaryOperator.RemainderAssignment],
|
|
11969
|
+
['**=', BinaryOperator.ExponentiationAssignment],
|
|
11970
|
+
['&&=', BinaryOperator.AndAssignment],
|
|
11971
|
+
['||=', BinaryOperator.OrAssignment],
|
|
11972
|
+
['??=', BinaryOperator.NullishCoalesceAssignment],
|
|
11939
11973
|
]);
|
|
11940
11974
|
function namespaceForKey(namespacePrefixKey) {
|
|
11941
11975
|
const NAMESPACES = new Map([
|
|
@@ -15714,13 +15748,6 @@ const NAMED_ENTITIES = {
|
|
|
15714
15748
|
const NGSP_UNICODE = '\uE500';
|
|
15715
15749
|
NAMED_ENTITIES['ngsp'] = NGSP_UNICODE;
|
|
15716
15750
|
|
|
15717
|
-
class TokenError extends ParseError {
|
|
15718
|
-
tokenType;
|
|
15719
|
-
constructor(errorMsg, tokenType, span) {
|
|
15720
|
-
super(span, errorMsg);
|
|
15721
|
-
this.tokenType = tokenType;
|
|
15722
|
-
}
|
|
15723
|
-
}
|
|
15724
15751
|
class TokenizeResult {
|
|
15725
15752
|
tokens;
|
|
15726
15753
|
errors;
|
|
@@ -15752,12 +15779,6 @@ var CharacterReferenceType;
|
|
|
15752
15779
|
CharacterReferenceType["HEX"] = "hexadecimal";
|
|
15753
15780
|
CharacterReferenceType["DEC"] = "decimal";
|
|
15754
15781
|
})(CharacterReferenceType || (CharacterReferenceType = {}));
|
|
15755
|
-
class _ControlFlowError {
|
|
15756
|
-
error;
|
|
15757
|
-
constructor(error) {
|
|
15758
|
-
this.error = error;
|
|
15759
|
-
}
|
|
15760
|
-
}
|
|
15761
15782
|
// See https://www.w3.org/TR/html51/syntax.html#writing-html-documents
|
|
15762
15783
|
class _Tokenizer {
|
|
15763
15784
|
_getTagDefinition;
|
|
@@ -16067,10 +16088,10 @@ class _Tokenizer {
|
|
|
16067
16088
|
}
|
|
16068
16089
|
_endToken(parts, end) {
|
|
16069
16090
|
if (this._currentTokenStart === null) {
|
|
16070
|
-
throw new
|
|
16091
|
+
throw new ParseError(this._cursor.getSpan(end), 'Programming error - attempted to end a token when there was no start to the token');
|
|
16071
16092
|
}
|
|
16072
16093
|
if (this._currentTokenType === null) {
|
|
16073
|
-
throw new
|
|
16094
|
+
throw new ParseError(this._cursor.getSpan(this._currentTokenStart), 'Programming error - attempted to end a token which has no token type');
|
|
16074
16095
|
}
|
|
16075
16096
|
const token = {
|
|
16076
16097
|
type: this._currentTokenType,
|
|
@@ -16086,17 +16107,17 @@ class _Tokenizer {
|
|
|
16086
16107
|
if (this._isInExpansionForm()) {
|
|
16087
16108
|
msg += ` (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.)`;
|
|
16088
16109
|
}
|
|
16089
|
-
const error = new
|
|
16110
|
+
const error = new ParseError(span, msg);
|
|
16090
16111
|
this._currentTokenStart = null;
|
|
16091
16112
|
this._currentTokenType = null;
|
|
16092
|
-
return
|
|
16113
|
+
return error;
|
|
16093
16114
|
}
|
|
16094
16115
|
handleError(e) {
|
|
16095
16116
|
if (e instanceof CursorError) {
|
|
16096
16117
|
e = this._createError(e.msg, this._cursor.getSpan(e.cursor));
|
|
16097
16118
|
}
|
|
16098
|
-
if (e instanceof
|
|
16099
|
-
this.errors.push(e
|
|
16119
|
+
if (e instanceof ParseError) {
|
|
16120
|
+
this.errors.push(e);
|
|
16100
16121
|
}
|
|
16101
16122
|
else {
|
|
16102
16123
|
throw e;
|
|
@@ -16336,7 +16357,7 @@ class _Tokenizer {
|
|
|
16336
16357
|
}
|
|
16337
16358
|
}
|
|
16338
16359
|
catch (e) {
|
|
16339
|
-
if (e instanceof
|
|
16360
|
+
if (e instanceof ParseError) {
|
|
16340
16361
|
if (openToken) {
|
|
16341
16362
|
// We errored before we could close the opening tag, so it is incomplete.
|
|
16342
16363
|
openToken.type =
|
|
@@ -17117,7 +17138,7 @@ let Parser$1 = class Parser {
|
|
|
17117
17138
|
const tokenizeResult = tokenize(source, url, this.getTagDefinition, options);
|
|
17118
17139
|
const parser = new _TreeBuilder(tokenizeResult.tokens, this.getTagDefinition);
|
|
17119
17140
|
parser.build();
|
|
17120
|
-
return new ParseTreeResult(parser.rootNodes, tokenizeResult.errors
|
|
17141
|
+
return new ParseTreeResult(parser.rootNodes, [...tokenizeResult.errors, ...parser.errors]);
|
|
17121
17142
|
}
|
|
17122
17143
|
};
|
|
17123
17144
|
class _TreeBuilder {
|
|
@@ -18208,13 +18229,17 @@ class _Scanner {
|
|
|
18208
18229
|
case $HASH:
|
|
18209
18230
|
return this.scanPrivateIdentifier();
|
|
18210
18231
|
case $PLUS:
|
|
18232
|
+
return this.scanComplexOperator(start, '+', $EQ, '=');
|
|
18211
18233
|
case $MINUS:
|
|
18234
|
+
return this.scanComplexOperator(start, '-', $EQ, '=');
|
|
18212
18235
|
case $SLASH:
|
|
18236
|
+
return this.scanComplexOperator(start, '/', $EQ, '=');
|
|
18213
18237
|
case $PERCENT:
|
|
18238
|
+
return this.scanComplexOperator(start, '%', $EQ, '=');
|
|
18214
18239
|
case $CARET:
|
|
18215
|
-
return this.scanOperator(start,
|
|
18240
|
+
return this.scanOperator(start, '^');
|
|
18216
18241
|
case $STAR:
|
|
18217
|
-
return this.
|
|
18242
|
+
return this.scanStar(start);
|
|
18218
18243
|
case $QUESTION:
|
|
18219
18244
|
return this.scanQuestion(start);
|
|
18220
18245
|
case $LT:
|
|
@@ -18224,9 +18249,9 @@ class _Scanner {
|
|
|
18224
18249
|
case $EQ:
|
|
18225
18250
|
return this.scanComplexOperator(start, String.fromCharCode(peek), $EQ, '=', $EQ, '=');
|
|
18226
18251
|
case $AMPERSAND:
|
|
18227
|
-
return this.scanComplexOperator(start, '&', $AMPERSAND, '&');
|
|
18252
|
+
return this.scanComplexOperator(start, '&', $AMPERSAND, '&', $EQ, '=');
|
|
18228
18253
|
case $BAR:
|
|
18229
|
-
return this.scanComplexOperator(start, '|', $BAR, '|');
|
|
18254
|
+
return this.scanComplexOperator(start, '|', $BAR, '|', $EQ, '=');
|
|
18230
18255
|
case $NBSP:
|
|
18231
18256
|
while (isWhitespace(this.peek))
|
|
18232
18257
|
this.advance();
|
|
@@ -18372,13 +18397,23 @@ class _Scanner {
|
|
|
18372
18397
|
}
|
|
18373
18398
|
scanQuestion(start) {
|
|
18374
18399
|
this.advance();
|
|
18375
|
-
let
|
|
18376
|
-
//
|
|
18377
|
-
if (this.peek === $QUESTION
|
|
18378
|
-
|
|
18400
|
+
let operator = '?';
|
|
18401
|
+
// `a ?? b` or `a ??= b`.
|
|
18402
|
+
if (this.peek === $QUESTION) {
|
|
18403
|
+
operator += '?';
|
|
18379
18404
|
this.advance();
|
|
18405
|
+
// @ts-expect-error
|
|
18406
|
+
if (this.peek === $EQ) {
|
|
18407
|
+
operator += '=';
|
|
18408
|
+
this.advance();
|
|
18409
|
+
}
|
|
18380
18410
|
}
|
|
18381
|
-
|
|
18411
|
+
else if (this.peek === $PERIOD) {
|
|
18412
|
+
// `a?.b`
|
|
18413
|
+
operator += '.';
|
|
18414
|
+
this.advance();
|
|
18415
|
+
}
|
|
18416
|
+
return newOperatorToken(start, this.index, operator);
|
|
18382
18417
|
}
|
|
18383
18418
|
scanTemplateLiteralPart(start) {
|
|
18384
18419
|
let buffer = '';
|
|
@@ -18442,6 +18477,25 @@ class _Scanner {
|
|
|
18442
18477
|
buffer += String.fromCharCode(unescapedCode);
|
|
18443
18478
|
return buffer;
|
|
18444
18479
|
}
|
|
18480
|
+
scanStar(start) {
|
|
18481
|
+
this.advance();
|
|
18482
|
+
// `*`, `**`, `**=` or `*=`
|
|
18483
|
+
let operator = '*';
|
|
18484
|
+
if (this.peek === $STAR) {
|
|
18485
|
+
operator += '*';
|
|
18486
|
+
this.advance();
|
|
18487
|
+
// @ts-expect-error
|
|
18488
|
+
if (this.peek === $EQ) {
|
|
18489
|
+
operator += '=';
|
|
18490
|
+
this.advance();
|
|
18491
|
+
}
|
|
18492
|
+
}
|
|
18493
|
+
else if (this.peek === $EQ) {
|
|
18494
|
+
operator += '=';
|
|
18495
|
+
this.advance();
|
|
18496
|
+
}
|
|
18497
|
+
return newOperatorToken(start, this.index, operator);
|
|
18498
|
+
}
|
|
18445
18499
|
}
|
|
18446
18500
|
function isIdentifierStart(code) {
|
|
18447
18501
|
return (($a <= code && code <= $z) ||
|
|
@@ -18502,6 +18556,9 @@ class TemplateBindingParseResult {
|
|
|
18502
18556
|
this.errors = errors;
|
|
18503
18557
|
}
|
|
18504
18558
|
}
|
|
18559
|
+
function getLocation(span) {
|
|
18560
|
+
return span.start.toString() || '(unknown)';
|
|
18561
|
+
}
|
|
18505
18562
|
class Parser {
|
|
18506
18563
|
_lexer;
|
|
18507
18564
|
_supportsDirectPipeReferences;
|
|
@@ -18509,18 +18566,18 @@ class Parser {
|
|
|
18509
18566
|
this._lexer = _lexer;
|
|
18510
18567
|
this._supportsDirectPipeReferences = _supportsDirectPipeReferences;
|
|
18511
18568
|
}
|
|
18512
|
-
parseAction(input,
|
|
18569
|
+
parseAction(input, parseSourceSpan, absoluteOffset, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {
|
|
18513
18570
|
const errors = [];
|
|
18514
|
-
this._checkNoInterpolation(errors, input,
|
|
18571
|
+
this._checkNoInterpolation(errors, input, parseSourceSpan, interpolationConfig);
|
|
18515
18572
|
const sourceToLex = this._stripComments(input);
|
|
18516
18573
|
const tokens = this._lexer.tokenize(sourceToLex);
|
|
18517
|
-
const ast = new _ParseAST(input,
|
|
18518
|
-
return new ASTWithSource(ast, input,
|
|
18574
|
+
const ast = new _ParseAST(input, parseSourceSpan, absoluteOffset, tokens, 1 /* ParseFlags.Action */, errors, 0, this._supportsDirectPipeReferences).parseChain();
|
|
18575
|
+
return new ASTWithSource(ast, input, getLocation(parseSourceSpan), absoluteOffset, errors);
|
|
18519
18576
|
}
|
|
18520
|
-
parseBinding(input,
|
|
18577
|
+
parseBinding(input, parseSourceSpan, absoluteOffset, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {
|
|
18521
18578
|
const errors = [];
|
|
18522
|
-
const ast = this._parseBindingAst(input,
|
|
18523
|
-
return new ASTWithSource(ast, input,
|
|
18579
|
+
const ast = this._parseBindingAst(input, parseSourceSpan, absoluteOffset, interpolationConfig, errors);
|
|
18580
|
+
return new ASTWithSource(ast, input, getLocation(parseSourceSpan), absoluteOffset, errors);
|
|
18524
18581
|
}
|
|
18525
18582
|
checkSimpleExpression(ast) {
|
|
18526
18583
|
const checker = new SimpleExpressionChecker();
|
|
@@ -18528,20 +18585,20 @@ class Parser {
|
|
|
18528
18585
|
return checker.errors;
|
|
18529
18586
|
}
|
|
18530
18587
|
// Host bindings parsed here
|
|
18531
|
-
parseSimpleBinding(input,
|
|
18588
|
+
parseSimpleBinding(input, parseSourceSpan, absoluteOffset, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {
|
|
18532
18589
|
const errors = [];
|
|
18533
|
-
const ast = this._parseBindingAst(input,
|
|
18590
|
+
const ast = this._parseBindingAst(input, parseSourceSpan, absoluteOffset, interpolationConfig, errors);
|
|
18534
18591
|
const simplExpressionErrors = this.checkSimpleExpression(ast);
|
|
18535
18592
|
if (simplExpressionErrors.length > 0) {
|
|
18536
|
-
errors.push(
|
|
18593
|
+
errors.push(getParseError(`Host binding expression cannot contain ${simplExpressionErrors.join(' ')}`, input, '', parseSourceSpan));
|
|
18537
18594
|
}
|
|
18538
|
-
return new ASTWithSource(ast, input,
|
|
18595
|
+
return new ASTWithSource(ast, input, getLocation(parseSourceSpan), absoluteOffset, errors);
|
|
18539
18596
|
}
|
|
18540
|
-
_parseBindingAst(input,
|
|
18541
|
-
this._checkNoInterpolation(errors, input,
|
|
18597
|
+
_parseBindingAst(input, parseSourceSpan, absoluteOffset, interpolationConfig, errors) {
|
|
18598
|
+
this._checkNoInterpolation(errors, input, parseSourceSpan, interpolationConfig);
|
|
18542
18599
|
const sourceToLex = this._stripComments(input);
|
|
18543
18600
|
const tokens = this._lexer.tokenize(sourceToLex);
|
|
18544
|
-
return new _ParseAST(input,
|
|
18601
|
+
return new _ParseAST(input, parseSourceSpan, absoluteOffset, tokens, 0 /* ParseFlags.None */, errors, 0, this._supportsDirectPipeReferences).parseChain();
|
|
18545
18602
|
}
|
|
18546
18603
|
/**
|
|
18547
18604
|
* Parse microsyntax template expression and return a list of bindings or
|
|
@@ -18569,42 +18626,46 @@ class Parser {
|
|
|
18569
18626
|
* @param absoluteKeyOffset start of the `templateKey`
|
|
18570
18627
|
* @param absoluteValueOffset start of the `templateValue`
|
|
18571
18628
|
*/
|
|
18572
|
-
parseTemplateBindings(templateKey, templateValue,
|
|
18629
|
+
parseTemplateBindings(templateKey, templateValue, parseSourceSpan, absoluteKeyOffset, absoluteValueOffset) {
|
|
18573
18630
|
const tokens = this._lexer.tokenize(templateValue);
|
|
18574
18631
|
const errors = [];
|
|
18575
|
-
const parser = new _ParseAST(templateValue,
|
|
18632
|
+
const parser = new _ParseAST(templateValue, parseSourceSpan, absoluteValueOffset, tokens, 0 /* ParseFlags.None */, errors, 0 /* relative offset */, this._supportsDirectPipeReferences);
|
|
18576
18633
|
return parser.parseTemplateBindings({
|
|
18577
18634
|
source: templateKey,
|
|
18578
18635
|
span: new AbsoluteSourceSpan(absoluteKeyOffset, absoluteKeyOffset + templateKey.length),
|
|
18579
18636
|
});
|
|
18580
18637
|
}
|
|
18581
|
-
parseInterpolation(input,
|
|
18638
|
+
parseInterpolation(input, parseSourceSpan, absoluteOffset, interpolatedTokens, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {
|
|
18582
18639
|
const errors = [];
|
|
18583
|
-
const { strings, expressions, offsets } = this.splitInterpolation(input,
|
|
18640
|
+
const { strings, expressions, offsets } = this.splitInterpolation(input, parseSourceSpan, errors, interpolatedTokens, interpolationConfig);
|
|
18584
18641
|
if (expressions.length === 0)
|
|
18585
18642
|
return null;
|
|
18586
18643
|
const expressionNodes = [];
|
|
18587
18644
|
for (let i = 0; i < expressions.length; ++i) {
|
|
18645
|
+
// If we have a token for the specific expression, it's preferrable to use it because it
|
|
18646
|
+
// allows us to produce more accurate error messages. The expressions are always at the odd
|
|
18647
|
+
// indexes inside the tokens.
|
|
18648
|
+
const expressionSpan = interpolatedTokens?.[i * 2 + 1]?.sourceSpan;
|
|
18588
18649
|
const expressionText = expressions[i].text;
|
|
18589
18650
|
const sourceToLex = this._stripComments(expressionText);
|
|
18590
18651
|
const tokens = this._lexer.tokenize(sourceToLex);
|
|
18591
|
-
const ast = new _ParseAST(input,
|
|
18652
|
+
const ast = new _ParseAST(expressionSpan ? expressionText : input, expressionSpan || parseSourceSpan, absoluteOffset, tokens, 0 /* ParseFlags.None */, errors, offsets[i], this._supportsDirectPipeReferences).parseChain();
|
|
18592
18653
|
expressionNodes.push(ast);
|
|
18593
18654
|
}
|
|
18594
|
-
return this.createInterpolationAst(strings.map((s) => s.text), expressionNodes, input,
|
|
18655
|
+
return this.createInterpolationAst(strings.map((s) => s.text), expressionNodes, input, getLocation(parseSourceSpan), absoluteOffset, errors);
|
|
18595
18656
|
}
|
|
18596
18657
|
/**
|
|
18597
18658
|
* Similar to `parseInterpolation`, but treats the provided string as a single expression
|
|
18598
18659
|
* element that would normally appear within the interpolation prefix and suffix (`{{` and `}}`).
|
|
18599
18660
|
* This is used for parsing the switch expression in ICUs.
|
|
18600
18661
|
*/
|
|
18601
|
-
parseInterpolationExpression(expression,
|
|
18662
|
+
parseInterpolationExpression(expression, parseSourceSpan, absoluteOffset) {
|
|
18602
18663
|
const sourceToLex = this._stripComments(expression);
|
|
18603
18664
|
const tokens = this._lexer.tokenize(sourceToLex);
|
|
18604
18665
|
const errors = [];
|
|
18605
|
-
const ast = new _ParseAST(expression,
|
|
18666
|
+
const ast = new _ParseAST(expression, parseSourceSpan, absoluteOffset, tokens, 0 /* ParseFlags.None */, errors, 0, this._supportsDirectPipeReferences).parseChain();
|
|
18606
18667
|
const strings = ['', '']; // The prefix and suffix strings are both empty
|
|
18607
|
-
return this.createInterpolationAst(strings, [ast], expression,
|
|
18668
|
+
return this.createInterpolationAst(strings, [ast], expression, getLocation(parseSourceSpan), absoluteOffset, errors);
|
|
18608
18669
|
}
|
|
18609
18670
|
createInterpolationAst(strings, expressions, input, location, absoluteOffset, errors) {
|
|
18610
18671
|
const span = new ParseSpan(0, input.length);
|
|
@@ -18618,7 +18679,7 @@ class Parser {
|
|
|
18618
18679
|
* `SplitInterpolation` with splits that look like
|
|
18619
18680
|
* <raw text> <expression> <raw text> ... <raw text> <expression> <raw text>
|
|
18620
18681
|
*/
|
|
18621
|
-
splitInterpolation(input,
|
|
18682
|
+
splitInterpolation(input, parseSourceSpan, errors, interpolatedTokens, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {
|
|
18622
18683
|
const strings = [];
|
|
18623
18684
|
const expressions = [];
|
|
18624
18685
|
const offsets = [];
|
|
@@ -18656,7 +18717,7 @@ class Parser {
|
|
|
18656
18717
|
const fullEnd = exprEnd + interpEnd.length;
|
|
18657
18718
|
const text = input.substring(exprStart, exprEnd);
|
|
18658
18719
|
if (text.trim().length === 0) {
|
|
18659
|
-
errors.push(
|
|
18720
|
+
errors.push(getParseError('Blank expressions are not allowed in interpolated strings', input, `at column ${i} in`, parseSourceSpan));
|
|
18660
18721
|
}
|
|
18661
18722
|
expressions.push({ text, start: fullStart, end: fullEnd });
|
|
18662
18723
|
const startInOriginalTemplate = inputToTemplateIndexMap?.get(fullStart) ?? fullStart;
|
|
@@ -18679,9 +18740,11 @@ class Parser {
|
|
|
18679
18740
|
}
|
|
18680
18741
|
return new SplitInterpolation(strings, expressions, offsets);
|
|
18681
18742
|
}
|
|
18682
|
-
wrapLiteralPrimitive(input,
|
|
18743
|
+
wrapLiteralPrimitive(input, sourceSpanOrLocation, absoluteOffset) {
|
|
18683
18744
|
const span = new ParseSpan(0, input == null ? 0 : input.length);
|
|
18684
|
-
return new ASTWithSource(new LiteralPrimitive(span, span.toAbsolute(absoluteOffset), input), input,
|
|
18745
|
+
return new ASTWithSource(new LiteralPrimitive(span, span.toAbsolute(absoluteOffset), input), input, typeof sourceSpanOrLocation === 'string'
|
|
18746
|
+
? sourceSpanOrLocation
|
|
18747
|
+
: getLocation(sourceSpanOrLocation), absoluteOffset, []);
|
|
18685
18748
|
}
|
|
18686
18749
|
_stripComments(input) {
|
|
18687
18750
|
const i = this._commentStart(input);
|
|
@@ -18703,7 +18766,7 @@ class Parser {
|
|
|
18703
18766
|
}
|
|
18704
18767
|
return null;
|
|
18705
18768
|
}
|
|
18706
|
-
_checkNoInterpolation(errors, input,
|
|
18769
|
+
_checkNoInterpolation(errors, input, parseSourceSpan, { start, end }) {
|
|
18707
18770
|
let startIndex = -1;
|
|
18708
18771
|
let endIndex = -1;
|
|
18709
18772
|
for (const charIndex of this._forEachUnquotedChar(input, 0)) {
|
|
@@ -18720,7 +18783,7 @@ class Parser {
|
|
|
18720
18783
|
}
|
|
18721
18784
|
}
|
|
18722
18785
|
if (startIndex > -1 && endIndex > -1) {
|
|
18723
|
-
errors.push(
|
|
18786
|
+
errors.push(getParseError(`Got interpolation (${start}${end}) where expression was expected`, input, `at column ${startIndex} in`, parseSourceSpan));
|
|
18724
18787
|
}
|
|
18725
18788
|
}
|
|
18726
18789
|
/**
|
|
@@ -18779,7 +18842,7 @@ var ParseContextFlags;
|
|
|
18779
18842
|
})(ParseContextFlags || (ParseContextFlags = {}));
|
|
18780
18843
|
class _ParseAST {
|
|
18781
18844
|
input;
|
|
18782
|
-
|
|
18845
|
+
parseSourceSpan;
|
|
18783
18846
|
absoluteOffset;
|
|
18784
18847
|
tokens;
|
|
18785
18848
|
parseFlags;
|
|
@@ -18796,9 +18859,9 @@ class _ParseAST {
|
|
|
18796
18859
|
// and may change for subsequent expressions visited by the parser.
|
|
18797
18860
|
sourceSpanCache = new Map();
|
|
18798
18861
|
index = 0;
|
|
18799
|
-
constructor(input,
|
|
18862
|
+
constructor(input, parseSourceSpan, absoluteOffset, tokens, parseFlags, errors, offset, supportsDirectPipeReferences) {
|
|
18800
18863
|
this.input = input;
|
|
18801
|
-
this.
|
|
18864
|
+
this.parseSourceSpan = parseSourceSpan;
|
|
18802
18865
|
this.absoluteOffset = absoluteOffset;
|
|
18803
18866
|
this.tokens = tokens;
|
|
18804
18867
|
this.parseFlags = parseFlags;
|
|
@@ -18926,6 +18989,9 @@ class _ParseAST {
|
|
|
18926
18989
|
return false;
|
|
18927
18990
|
}
|
|
18928
18991
|
}
|
|
18992
|
+
isAssignmentOperator(token) {
|
|
18993
|
+
return token.type === TokenType.Operator && Binary.isAssignmentOperation(token.strValue);
|
|
18994
|
+
}
|
|
18929
18995
|
expectOperator(operator) {
|
|
18930
18996
|
if (this.consumeOptionalOperator(operator))
|
|
18931
18997
|
return;
|
|
@@ -19409,7 +19475,8 @@ class _ParseAST {
|
|
|
19409
19475
|
});
|
|
19410
19476
|
const nameSpan = this.sourceSpan(nameStart);
|
|
19411
19477
|
if (isSafe) {
|
|
19412
|
-
if (this.
|
|
19478
|
+
if (this.isAssignmentOperator(this.next)) {
|
|
19479
|
+
this.advance();
|
|
19413
19480
|
this.error("The '?.' operator cannot be used in the assignment");
|
|
19414
19481
|
return new EmptyExpr$1(this.span(start), this.sourceSpan(start));
|
|
19415
19482
|
}
|
|
@@ -19418,14 +19485,16 @@ class _ParseAST {
|
|
|
19418
19485
|
}
|
|
19419
19486
|
}
|
|
19420
19487
|
else {
|
|
19421
|
-
if (this.
|
|
19488
|
+
if (this.isAssignmentOperator(this.next)) {
|
|
19489
|
+
const operation = this.next.strValue;
|
|
19490
|
+
this.advance();
|
|
19422
19491
|
if (!(this.parseFlags & 1 /* ParseFlags.Action */)) {
|
|
19423
19492
|
this.error('Bindings cannot contain assignments');
|
|
19424
19493
|
return new EmptyExpr$1(this.span(start), this.sourceSpan(start));
|
|
19425
19494
|
}
|
|
19426
19495
|
const receiver = new PropertyRead(this.span(start), this.sourceSpan(start), nameSpan, readReceiver, id);
|
|
19427
19496
|
const value = this.parseConditional();
|
|
19428
|
-
return new Binary(this.span(start), this.sourceSpan(start),
|
|
19497
|
+
return new Binary(this.span(start), this.sourceSpan(start), operation, receiver, value);
|
|
19429
19498
|
}
|
|
19430
19499
|
else {
|
|
19431
19500
|
return new PropertyRead(this.span(start), this.sourceSpan(start), nameSpan, readReceiver, id);
|
|
@@ -19540,14 +19609,16 @@ class _ParseAST {
|
|
|
19540
19609
|
}
|
|
19541
19610
|
this.rbracketsExpected--;
|
|
19542
19611
|
this.expectCharacter($RBRACKET);
|
|
19543
|
-
if (this.
|
|
19612
|
+
if (this.isAssignmentOperator(this.next)) {
|
|
19613
|
+
const operation = this.next.strValue;
|
|
19614
|
+
this.advance();
|
|
19544
19615
|
if (isSafe) {
|
|
19545
19616
|
this.error("The '?.' operator cannot be used in the assignment");
|
|
19546
19617
|
}
|
|
19547
19618
|
else {
|
|
19548
19619
|
const binaryReceiver = new KeyedRead(this.span(start), this.sourceSpan(start), receiver, key);
|
|
19549
19620
|
const value = this.parseConditional();
|
|
19550
|
-
return new Binary(this.span(start), this.sourceSpan(start),
|
|
19621
|
+
return new Binary(this.span(start), this.sourceSpan(start), operation, binaryReceiver, value);
|
|
19551
19622
|
}
|
|
19552
19623
|
}
|
|
19553
19624
|
else {
|
|
@@ -19611,7 +19682,7 @@ class _ParseAST {
|
|
|
19611
19682
|
const ast = this.parsePipe(); // example: "condition | async"
|
|
19612
19683
|
const { start, end } = ast.span;
|
|
19613
19684
|
const value = this.input.substring(start, end);
|
|
19614
|
-
return new ASTWithSource(ast, value, this.
|
|
19685
|
+
return new ASTWithSource(ast, value, getLocation(this.parseSourceSpan), this.absoluteOffset + start, this.errors);
|
|
19615
19686
|
}
|
|
19616
19687
|
/**
|
|
19617
19688
|
* Return the binding for a variable declared using `as`. Note that the order
|
|
@@ -19715,13 +19786,11 @@ class _ParseAST {
|
|
|
19715
19786
|
* Records an error and skips over the token stream until reaching a recoverable point. See
|
|
19716
19787
|
* `this.skip` for more details on token skipping.
|
|
19717
19788
|
*/
|
|
19718
|
-
error(message, index =
|
|
19719
|
-
this.errors.push(
|
|
19789
|
+
error(message, index = this.index) {
|
|
19790
|
+
this.errors.push(getParseError(message, this.input, this.getErrorLocationText(index), this.parseSourceSpan));
|
|
19720
19791
|
this.skip();
|
|
19721
19792
|
}
|
|
19722
|
-
|
|
19723
|
-
if (index == null)
|
|
19724
|
-
index = this.index;
|
|
19793
|
+
getErrorLocationText(index) {
|
|
19725
19794
|
return index < this.tokens.length
|
|
19726
19795
|
? `at column ${this.tokens[index].index + 1} in`
|
|
19727
19796
|
: `at the end of the expression`;
|
|
@@ -19755,7 +19824,7 @@ class _ParseAST {
|
|
|
19755
19824
|
* none of the calling productions are not expecting the closing token else we will never
|
|
19756
19825
|
* make progress in the case of an extraneous group closing symbol (such as a stray ')').
|
|
19757
19826
|
* That is, we skip a closing symbol if we are not in a grouping production.
|
|
19758
|
-
* -
|
|
19827
|
+
* - Assignment in a `Writable` context
|
|
19759
19828
|
* - In this context, we are able to recover after seeing the `=` operator, which
|
|
19760
19829
|
* signals the presence of an independent rvalue expression following the `=` operator.
|
|
19761
19830
|
*
|
|
@@ -19770,15 +19839,23 @@ class _ParseAST {
|
|
|
19770
19839
|
(this.rparensExpected <= 0 || !n.isCharacter($RPAREN)) &&
|
|
19771
19840
|
(this.rbracesExpected <= 0 || !n.isCharacter($RBRACE)) &&
|
|
19772
19841
|
(this.rbracketsExpected <= 0 || !n.isCharacter($RBRACKET)) &&
|
|
19773
|
-
(!(this.context & ParseContextFlags.Writable) || !
|
|
19842
|
+
(!(this.context & ParseContextFlags.Writable) || !this.isAssignmentOperator(n))) {
|
|
19774
19843
|
if (this.next.isError()) {
|
|
19775
|
-
this.errors.push(
|
|
19844
|
+
this.errors.push(getParseError(this.next.toString(), this.input, this.getErrorLocationText(this.next.index), this.parseSourceSpan));
|
|
19776
19845
|
}
|
|
19777
19846
|
this.advance();
|
|
19778
19847
|
n = this.next;
|
|
19779
19848
|
}
|
|
19780
19849
|
}
|
|
19781
19850
|
}
|
|
19851
|
+
function getParseError(message, input, locationText, parseSourceSpan) {
|
|
19852
|
+
if (locationText.length > 0) {
|
|
19853
|
+
locationText = ` ${locationText} `;
|
|
19854
|
+
}
|
|
19855
|
+
const location = getLocation(parseSourceSpan);
|
|
19856
|
+
const error = `Parser Error: ${message}${locationText}[${input}] in ${location}`;
|
|
19857
|
+
return new ParseError(parseSourceSpan, error);
|
|
19858
|
+
}
|
|
19782
19859
|
class SimpleExpressionChecker extends RecursiveAstVisitor {
|
|
19783
19860
|
errors = [];
|
|
19784
19861
|
visitPipe() {
|
|
@@ -21033,7 +21110,7 @@ class _I18nVisitor {
|
|
|
21033
21110
|
normalizeExpression(token) {
|
|
21034
21111
|
const expression = token.parts[1];
|
|
21035
21112
|
const expr = this._expressionParser.parseBinding(expression,
|
|
21036
|
-
/* location */ token.sourceSpan
|
|
21113
|
+
/* location */ token.sourceSpan,
|
|
21037
21114
|
/* absoluteOffset */ token.sourceSpan.start.offset, this._interpolationConfig);
|
|
21038
21115
|
return serialize(expr);
|
|
21039
21116
|
}
|
|
@@ -21099,15 +21176,6 @@ function extractPlaceholderName(input) {
|
|
|
21099
21176
|
return input.split(_CUSTOM_PH_EXP)[2];
|
|
21100
21177
|
}
|
|
21101
21178
|
|
|
21102
|
-
/**
|
|
21103
|
-
* An i18n error.
|
|
21104
|
-
*/
|
|
21105
|
-
class I18nError extends ParseError {
|
|
21106
|
-
constructor(span, msg) {
|
|
21107
|
-
super(span, msg);
|
|
21108
|
-
}
|
|
21109
|
-
}
|
|
21110
|
-
|
|
21111
21179
|
/**
|
|
21112
21180
|
* Set of tagName|propertyName corresponding to Trusted Types sinks. Properties applying to all
|
|
21113
21181
|
* tags use '*'.
|
|
@@ -21389,7 +21457,7 @@ class I18nMetaVisitor {
|
|
|
21389
21457
|
}
|
|
21390
21458
|
}
|
|
21391
21459
|
_reportError(node, msg) {
|
|
21392
|
-
this._errors.push(new
|
|
21460
|
+
this._errors.push(new ParseError(node.sourceSpan, msg));
|
|
21393
21461
|
}
|
|
21394
21462
|
}
|
|
21395
21463
|
/** I18n separators for metadata **/
|
|
@@ -22257,7 +22325,7 @@ function addNamesToView(unit, baseName, state, compatibility) {
|
|
|
22257
22325
|
switch (op.kind) {
|
|
22258
22326
|
case OpKind.Property:
|
|
22259
22327
|
case OpKind.DomProperty:
|
|
22260
|
-
if (op.
|
|
22328
|
+
if (op.isLegacyAnimationTrigger) {
|
|
22261
22329
|
op.name = '@' + op.name;
|
|
22262
22330
|
}
|
|
22263
22331
|
break;
|
|
@@ -22269,8 +22337,8 @@ function addNamesToView(unit, baseName, state, compatibility) {
|
|
|
22269
22337
|
throw new Error(`Expected a slot to be assigned`);
|
|
22270
22338
|
}
|
|
22271
22339
|
let animation = '';
|
|
22272
|
-
if (op.
|
|
22273
|
-
op.name = `@${op.name}.${op.
|
|
22340
|
+
if (op.isLegacyAnimationListener) {
|
|
22341
|
+
op.name = `@${op.name}.${op.legacyAnimationPhase}`;
|
|
22274
22342
|
animation = 'animation';
|
|
22275
22343
|
}
|
|
22276
22344
|
if (op.hostListener) {
|
|
@@ -22538,7 +22606,7 @@ function kindWithInterpolationTest(kind, interpolation) {
|
|
|
22538
22606
|
};
|
|
22539
22607
|
}
|
|
22540
22608
|
function basicListenerKindTest(op) {
|
|
22541
|
-
return ((op.kind === OpKind.Listener && !(op.hostListener && op.
|
|
22609
|
+
return ((op.kind === OpKind.Listener && !(op.hostListener && op.isLegacyAnimationListener)) ||
|
|
22542
22610
|
op.kind === OpKind.TwoWayListener);
|
|
22543
22611
|
}
|
|
22544
22612
|
function nonInterpolationPropertyKindTest(op) {
|
|
@@ -22551,7 +22619,7 @@ function nonInterpolationPropertyKindTest(op) {
|
|
|
22551
22619
|
* the groups in the order defined here.
|
|
22552
22620
|
*/
|
|
22553
22621
|
const CREATE_ORDERING = [
|
|
22554
|
-
{ test: (op) => op.kind === OpKind.Listener && op.hostListener && op.
|
|
22622
|
+
{ test: (op) => op.kind === OpKind.Listener && op.hostListener && op.isLegacyAnimationListener },
|
|
22555
22623
|
{ test: basicListenerKindTest },
|
|
22556
22624
|
];
|
|
22557
22625
|
/**
|
|
@@ -22973,21 +23041,7 @@ function elementOrContainerBase(instruction, slot, tag, constIndex, localRefInde
|
|
|
22973
23041
|
}
|
|
22974
23042
|
return call(instruction, args, sourceSpan);
|
|
22975
23043
|
}
|
|
22976
|
-
function
|
|
22977
|
-
return call(Identifiers.elementEnd, [], sourceSpan);
|
|
22978
|
-
}
|
|
22979
|
-
function elementContainerStart(slot, constIndex, localRefIndex, sourceSpan) {
|
|
22980
|
-
return elementOrContainerBase(Identifiers.elementContainerStart, slot,
|
|
22981
|
-
/* tag */ null, constIndex, localRefIndex, sourceSpan);
|
|
22982
|
-
}
|
|
22983
|
-
function elementContainer(slot, constIndex, localRefIndex, sourceSpan) {
|
|
22984
|
-
return elementOrContainerBase(Identifiers.elementContainer, slot,
|
|
22985
|
-
/* tag */ null, constIndex, localRefIndex, sourceSpan);
|
|
22986
|
-
}
|
|
22987
|
-
function elementContainerEnd() {
|
|
22988
|
-
return call(Identifiers.elementContainerEnd, [], null);
|
|
22989
|
-
}
|
|
22990
|
-
function template(slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {
|
|
23044
|
+
function templateBase(instruction, slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {
|
|
22991
23045
|
const args = [
|
|
22992
23046
|
literal(slot),
|
|
22993
23047
|
templateFnRef,
|
|
@@ -23003,7 +23057,37 @@ function template(slot, templateFnRef, decls, vars, tag, constIndex, localRefs,
|
|
|
23003
23057
|
while (args[args.length - 1].isEquivalent(NULL_EXPR)) {
|
|
23004
23058
|
args.pop();
|
|
23005
23059
|
}
|
|
23006
|
-
return call(
|
|
23060
|
+
return call(instruction, args, sourceSpan);
|
|
23061
|
+
}
|
|
23062
|
+
function propertyBase(instruction, name, expression, sanitizer, sourceSpan) {
|
|
23063
|
+
const args = [literal(name)];
|
|
23064
|
+
if (expression instanceof Interpolation) {
|
|
23065
|
+
args.push(interpolationToExpression(expression, sourceSpan));
|
|
23066
|
+
}
|
|
23067
|
+
else {
|
|
23068
|
+
args.push(expression);
|
|
23069
|
+
}
|
|
23070
|
+
if (sanitizer !== null) {
|
|
23071
|
+
args.push(sanitizer);
|
|
23072
|
+
}
|
|
23073
|
+
return call(instruction, args, sourceSpan);
|
|
23074
|
+
}
|
|
23075
|
+
function elementEnd(sourceSpan) {
|
|
23076
|
+
return call(Identifiers.elementEnd, [], sourceSpan);
|
|
23077
|
+
}
|
|
23078
|
+
function elementContainerStart(slot, constIndex, localRefIndex, sourceSpan) {
|
|
23079
|
+
return elementOrContainerBase(Identifiers.elementContainerStart, slot,
|
|
23080
|
+
/* tag */ null, constIndex, localRefIndex, sourceSpan);
|
|
23081
|
+
}
|
|
23082
|
+
function elementContainer(slot, constIndex, localRefIndex, sourceSpan) {
|
|
23083
|
+
return elementOrContainerBase(Identifiers.elementContainer, slot,
|
|
23084
|
+
/* tag */ null, constIndex, localRefIndex, sourceSpan);
|
|
23085
|
+
}
|
|
23086
|
+
function elementContainerEnd() {
|
|
23087
|
+
return call(Identifiers.elementContainerEnd, [], null);
|
|
23088
|
+
}
|
|
23089
|
+
function template(slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {
|
|
23090
|
+
return templateBase(Identifiers.templateCreate, slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan);
|
|
23007
23091
|
}
|
|
23008
23092
|
function disableBindings() {
|
|
23009
23093
|
return call(Identifiers.disableBindings, [], null);
|
|
@@ -23269,17 +23353,7 @@ function i18nAttributes(slot, i18nAttributesConfig) {
|
|
|
23269
23353
|
return call(Identifiers.i18nAttributes, args, null);
|
|
23270
23354
|
}
|
|
23271
23355
|
function property(name, expression, sanitizer, sourceSpan) {
|
|
23272
|
-
|
|
23273
|
-
if (expression instanceof Interpolation) {
|
|
23274
|
-
args.push(interpolationToExpression(expression, sourceSpan));
|
|
23275
|
-
}
|
|
23276
|
-
else {
|
|
23277
|
-
args.push(expression);
|
|
23278
|
-
}
|
|
23279
|
-
if (sanitizer !== null) {
|
|
23280
|
-
args.push(sanitizer);
|
|
23281
|
-
}
|
|
23282
|
-
return call(Identifiers.property, args, sourceSpan);
|
|
23356
|
+
return propertyBase(Identifiers.property, name, expression, sanitizer, sourceSpan);
|
|
23283
23357
|
}
|
|
23284
23358
|
function twoWayProperty(name, expression, sanitizer, sourceSpan) {
|
|
23285
23359
|
const args = [literal(name), expression];
|
|
@@ -23332,6 +23406,36 @@ function classMap(expression, sourceSpan) {
|
|
|
23332
23406
|
: expression;
|
|
23333
23407
|
return call(Identifiers.classMap, [value], sourceSpan);
|
|
23334
23408
|
}
|
|
23409
|
+
function domElement(slot, tag, constIndex, localRefIndex, sourceSpan) {
|
|
23410
|
+
return elementOrContainerBase(Identifiers.domElement, slot, tag, constIndex, localRefIndex, sourceSpan);
|
|
23411
|
+
}
|
|
23412
|
+
function domElementStart(slot, tag, constIndex, localRefIndex, sourceSpan) {
|
|
23413
|
+
return elementOrContainerBase(Identifiers.domElementStart, slot, tag, constIndex, localRefIndex, sourceSpan);
|
|
23414
|
+
}
|
|
23415
|
+
function domElementEnd(sourceSpan) {
|
|
23416
|
+
return call(Identifiers.domElementEnd, [], sourceSpan);
|
|
23417
|
+
}
|
|
23418
|
+
function domElementContainerStart(slot, constIndex, localRefIndex, sourceSpan) {
|
|
23419
|
+
return elementOrContainerBase(Identifiers.domElementContainerStart, slot,
|
|
23420
|
+
/* tag */ null, constIndex, localRefIndex, sourceSpan);
|
|
23421
|
+
}
|
|
23422
|
+
function domElementContainer(slot, constIndex, localRefIndex, sourceSpan) {
|
|
23423
|
+
return elementOrContainerBase(Identifiers.domElementContainer, slot,
|
|
23424
|
+
/* tag */ null, constIndex, localRefIndex, sourceSpan);
|
|
23425
|
+
}
|
|
23426
|
+
function domElementContainerEnd() {
|
|
23427
|
+
return call(Identifiers.domElementContainerEnd, [], null);
|
|
23428
|
+
}
|
|
23429
|
+
function domListener(name, handlerFn, eventTargetResolver, sourceSpan) {
|
|
23430
|
+
const args = [literal(name), handlerFn];
|
|
23431
|
+
if (eventTargetResolver !== null) {
|
|
23432
|
+
args.push(importExpr(eventTargetResolver));
|
|
23433
|
+
}
|
|
23434
|
+
return call(Identifiers.domListener, args, sourceSpan);
|
|
23435
|
+
}
|
|
23436
|
+
function domTemplate(slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {
|
|
23437
|
+
return templateBase(Identifiers.domTemplate, slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan);
|
|
23438
|
+
}
|
|
23335
23439
|
const PIPE_BINDINGS = [
|
|
23336
23440
|
Identifiers.pipeBind1,
|
|
23337
23441
|
Identifiers.pipeBind2,
|
|
@@ -23359,11 +23463,7 @@ function i18nApply(slot, sourceSpan) {
|
|
|
23359
23463
|
return call(Identifiers.i18nApply, [literal(slot)], sourceSpan);
|
|
23360
23464
|
}
|
|
23361
23465
|
function domProperty(name, expression, sanitizer, sourceSpan) {
|
|
23362
|
-
|
|
23363
|
-
if (sanitizer !== null) {
|
|
23364
|
-
args.push(sanitizer);
|
|
23365
|
-
}
|
|
23366
|
-
return call(Identifiers.domProperty, args, sourceSpan);
|
|
23466
|
+
return propertyBase(Identifiers.domProperty, name, expression, sanitizer, sourceSpan);
|
|
23367
23467
|
}
|
|
23368
23468
|
function syntheticHostProperty(name, expression, sourceSpan) {
|
|
23369
23469
|
return call(Identifiers.syntheticHostProperty, [literal(name), expression], sourceSpan);
|
|
@@ -23528,22 +23628,34 @@ function reifyCreateOperations(unit, ops) {
|
|
|
23528
23628
|
OpList.replace(op, text(op.handle.slot, op.initialValue, op.sourceSpan));
|
|
23529
23629
|
break;
|
|
23530
23630
|
case OpKind.ElementStart:
|
|
23531
|
-
OpList.replace(op,
|
|
23631
|
+
OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly
|
|
23632
|
+
? domElementStart(op.handle.slot, op.tag, op.attributes, op.localRefs, op.startSourceSpan)
|
|
23633
|
+
: elementStart(op.handle.slot, op.tag, op.attributes, op.localRefs, op.startSourceSpan));
|
|
23532
23634
|
break;
|
|
23533
23635
|
case OpKind.Element:
|
|
23534
|
-
OpList.replace(op,
|
|
23636
|
+
OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly
|
|
23637
|
+
? domElement(op.handle.slot, op.tag, op.attributes, op.localRefs, op.wholeSourceSpan)
|
|
23638
|
+
: element(op.handle.slot, op.tag, op.attributes, op.localRefs, op.wholeSourceSpan));
|
|
23535
23639
|
break;
|
|
23536
23640
|
case OpKind.ElementEnd:
|
|
23537
|
-
OpList.replace(op,
|
|
23641
|
+
OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly
|
|
23642
|
+
? domElementEnd(op.sourceSpan)
|
|
23643
|
+
: elementEnd(op.sourceSpan));
|
|
23538
23644
|
break;
|
|
23539
23645
|
case OpKind.ContainerStart:
|
|
23540
|
-
OpList.replace(op,
|
|
23646
|
+
OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly
|
|
23647
|
+
? domElementContainerStart(op.handle.slot, op.attributes, op.localRefs, op.startSourceSpan)
|
|
23648
|
+
: elementContainerStart(op.handle.slot, op.attributes, op.localRefs, op.startSourceSpan));
|
|
23541
23649
|
break;
|
|
23542
23650
|
case OpKind.Container:
|
|
23543
|
-
OpList.replace(op,
|
|
23651
|
+
OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly
|
|
23652
|
+
? domElementContainer(op.handle.slot, op.attributes, op.localRefs, op.wholeSourceSpan)
|
|
23653
|
+
: elementContainer(op.handle.slot, op.attributes, op.localRefs, op.wholeSourceSpan));
|
|
23544
23654
|
break;
|
|
23545
23655
|
case OpKind.ContainerEnd:
|
|
23546
|
-
OpList.replace(op,
|
|
23656
|
+
OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly
|
|
23657
|
+
? domElementContainerEnd()
|
|
23658
|
+
: elementContainerEnd());
|
|
23547
23659
|
break;
|
|
23548
23660
|
case OpKind.I18nStart:
|
|
23549
23661
|
OpList.replace(op, i18nStart(op.handle.slot, op.messageIndex, op.subTemplateIndex, op.sourceSpan));
|
|
@@ -23568,7 +23680,12 @@ function reifyCreateOperations(unit, ops) {
|
|
|
23568
23680
|
throw new Error(`AssertionError: local refs array should have been extracted into a constant`);
|
|
23569
23681
|
}
|
|
23570
23682
|
const childView = unit.job.views.get(op.xref);
|
|
23571
|
-
OpList.replace(op,
|
|
23683
|
+
OpList.replace(op,
|
|
23684
|
+
// Block templates can't have directives so we can always generate them as DOM-only.
|
|
23685
|
+
op.templateKind === TemplateKind.Block ||
|
|
23686
|
+
unit.job.mode === TemplateCompilationMode.DomOnly
|
|
23687
|
+
? domTemplate(op.handle.slot, variable(childView.fnName), childView.decls, childView.vars, op.tag, op.attributes, op.localRefs, op.startSourceSpan)
|
|
23688
|
+
: template(op.handle.slot, variable(childView.fnName), childView.decls, childView.vars, op.tag, op.attributes, op.localRefs, op.startSourceSpan));
|
|
23572
23689
|
break;
|
|
23573
23690
|
case OpKind.DisableBindings:
|
|
23574
23691
|
OpList.replace(op, disableBindings());
|
|
@@ -23590,7 +23707,11 @@ function reifyCreateOperations(unit, ops) {
|
|
|
23590
23707
|
if (eventTargetResolver === undefined) {
|
|
23591
23708
|
throw new Error(`Unexpected global target '${op.eventTarget}' defined for '${op.name}' event. Supported list of global targets: window,document,body.`);
|
|
23592
23709
|
}
|
|
23593
|
-
OpList.replace(op,
|
|
23710
|
+
OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly &&
|
|
23711
|
+
!op.hostListener &&
|
|
23712
|
+
!op.isLegacyAnimationListener
|
|
23713
|
+
? domListener(op.name, listenerFn, eventTargetResolver, op.sourceSpan)
|
|
23714
|
+
: listener(op.name, listenerFn, eventTargetResolver, op.hostListener && op.isLegacyAnimationListener, op.sourceSpan));
|
|
23594
23715
|
break;
|
|
23595
23716
|
case OpKind.TwoWayListener:
|
|
23596
23717
|
OpList.replace(op, twoWayListener(op.name, reifyListenerHandler(unit, op.handlerFnName, op.handlerOps, true), op.sourceSpan));
|
|
@@ -23748,7 +23869,7 @@ function reifyCreateOperations(unit, ops) {
|
|
|
23748
23869
|
}
|
|
23749
23870
|
}
|
|
23750
23871
|
}
|
|
23751
|
-
function reifyUpdateOperations(
|
|
23872
|
+
function reifyUpdateOperations(unit, ops) {
|
|
23752
23873
|
for (const op of ops) {
|
|
23753
23874
|
transformExpressionsInOp(op, reifyIrExpression, VisitorContextFlag.None);
|
|
23754
23875
|
switch (op.kind) {
|
|
@@ -23756,7 +23877,9 @@ function reifyUpdateOperations(_unit, ops) {
|
|
|
23756
23877
|
OpList.replace(op, advance(op.delta, op.sourceSpan));
|
|
23757
23878
|
break;
|
|
23758
23879
|
case OpKind.Property:
|
|
23759
|
-
OpList.replace(op,
|
|
23880
|
+
OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly && !op.isLegacyAnimationTrigger
|
|
23881
|
+
? domProperty(op.name, op.expression, op.sanitizer, op.sourceSpan)
|
|
23882
|
+
: property(op.name, op.expression, op.sanitizer, op.sourceSpan));
|
|
23760
23883
|
break;
|
|
23761
23884
|
case OpKind.TwoWayProperty:
|
|
23762
23885
|
OpList.replace(op, twoWayProperty(op.name, op.expression, op.sanitizer, op.sourceSpan));
|
|
@@ -23790,7 +23913,7 @@ function reifyUpdateOperations(_unit, ops) {
|
|
|
23790
23913
|
throw new Error('not yet handled');
|
|
23791
23914
|
}
|
|
23792
23915
|
else {
|
|
23793
|
-
if (op.
|
|
23916
|
+
if (op.isLegacyAnimationTrigger) {
|
|
23794
23917
|
OpList.replace(op, syntheticHostProperty(op.name, op.expression, op.sourceSpan));
|
|
23795
23918
|
}
|
|
23796
23919
|
else {
|
|
@@ -25994,8 +26117,8 @@ function isSingleI18nIcu(meta) {
|
|
|
25994
26117
|
* representation.
|
|
25995
26118
|
* TODO: Refactor more of the ingestion code into phases.
|
|
25996
26119
|
*/
|
|
25997
|
-
function ingestComponent(componentName, template, constantPool, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations) {
|
|
25998
|
-
const job = new ComponentCompilationJob(componentName, constantPool, compatibilityMode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations);
|
|
26120
|
+
function ingestComponent(componentName, template, constantPool, compilationMode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations) {
|
|
26121
|
+
const job = new ComponentCompilationJob(componentName, constantPool, compatibilityMode, compilationMode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations);
|
|
25999
26122
|
ingestNodes(job.root, template);
|
|
26000
26123
|
return job;
|
|
26001
26124
|
}
|
|
@@ -26004,7 +26127,7 @@ function ingestComponent(componentName, template, constantPool, relativeContextF
|
|
|
26004
26127
|
* representation.
|
|
26005
26128
|
*/
|
|
26006
26129
|
function ingestHostBinding(input, bindingParser, constantPool) {
|
|
26007
|
-
const job = new HostBindingCompilationJob(input.componentName, constantPool, compatibilityMode);
|
|
26130
|
+
const job = new HostBindingCompilationJob(input.componentName, constantPool, compatibilityMode, TemplateCompilationMode.DomOnly);
|
|
26008
26131
|
for (const property of input.properties ?? []) {
|
|
26009
26132
|
let bindingKind = BindingKind.Property;
|
|
26010
26133
|
// TODO: this should really be handled in the parser.
|
|
@@ -26012,8 +26135,8 @@ function ingestHostBinding(input, bindingParser, constantPool) {
|
|
|
26012
26135
|
property.name = property.name.substring('attr.'.length);
|
|
26013
26136
|
bindingKind = BindingKind.Attribute;
|
|
26014
26137
|
}
|
|
26015
|
-
if (property.
|
|
26016
|
-
bindingKind = BindingKind.
|
|
26138
|
+
if (property.isLegacyAnimation) {
|
|
26139
|
+
bindingKind = BindingKind.LegacyAnimation;
|
|
26017
26140
|
}
|
|
26018
26141
|
const securityContexts = bindingParser
|
|
26019
26142
|
.calcPossibleSecurityContexts(input.componentSelector, property.name, bindingKind === BindingKind.Attribute)
|
|
@@ -26055,7 +26178,7 @@ function ingestHostAttribute(job, name, value, securityContexts) {
|
|
|
26055
26178
|
job.root.update.push(attrBinding);
|
|
26056
26179
|
}
|
|
26057
26180
|
function ingestHostEvent(job, event) {
|
|
26058
|
-
const [phase, target] = event.type !== ParsedEventType.
|
|
26181
|
+
const [phase, target] = event.type !== ParsedEventType.LegacyAnimation
|
|
26059
26182
|
? [null, event.targetOrPhase]
|
|
26060
26183
|
: [event.targetOrPhase, null];
|
|
26061
26184
|
const eventBinding = createListenerOp(job.root.xref, new SlotHandle(), event.name, null, makeListenerHandlerOps(job.root, event.handler, event.handlerSpan), phase, target, true, event.sourceSpan);
|
|
@@ -26680,7 +26803,7 @@ const BINDING_KINDS = new Map([
|
|
|
26680
26803
|
[BindingType.Attribute, BindingKind.Attribute],
|
|
26681
26804
|
[BindingType.Class, BindingKind.ClassName],
|
|
26682
26805
|
[BindingType.Style, BindingKind.StyleProperty],
|
|
26683
|
-
[BindingType.
|
|
26806
|
+
[BindingType.LegacyAnimation, BindingKind.LegacyAnimation],
|
|
26684
26807
|
]);
|
|
26685
26808
|
/**
|
|
26686
26809
|
* Checks whether the given template is a plain ng-template (as opposed to another kind of template
|
|
@@ -26739,7 +26862,7 @@ function ingestElementBindings(unit, op, element) {
|
|
|
26739
26862
|
unit.create.push(bindings.filter((b) => b?.kind === OpKind.ExtractedAttribute));
|
|
26740
26863
|
unit.update.push(bindings.filter((b) => b?.kind === OpKind.Binding));
|
|
26741
26864
|
for (const output of element.outputs) {
|
|
26742
|
-
if (output.type === ParsedEventType.
|
|
26865
|
+
if (output.type === ParsedEventType.LegacyAnimation && output.phase === null) {
|
|
26743
26866
|
throw Error('Animation listener should have a phase');
|
|
26744
26867
|
}
|
|
26745
26868
|
if (output.type === ParsedEventType.TwoWay) {
|
|
@@ -26782,7 +26905,7 @@ function ingestTemplateBindings(unit, op, template, templateKind) {
|
|
|
26782
26905
|
unit.create.push(bindings.filter((b) => b?.kind === OpKind.ExtractedAttribute));
|
|
26783
26906
|
unit.update.push(bindings.filter((b) => b?.kind === OpKind.Binding));
|
|
26784
26907
|
for (const output of template.outputs) {
|
|
26785
|
-
if (output.type === ParsedEventType.
|
|
26908
|
+
if (output.type === ParsedEventType.LegacyAnimation && output.phase === null) {
|
|
26786
26909
|
throw Error('Animation listener should have a phase');
|
|
26787
26910
|
}
|
|
26788
26911
|
if (templateKind === TemplateKind.NgTemplate) {
|
|
@@ -26794,7 +26917,7 @@ function ingestTemplateBindings(unit, op, template, templateKind) {
|
|
|
26794
26917
|
}
|
|
26795
26918
|
}
|
|
26796
26919
|
if (templateKind === TemplateKind.Structural &&
|
|
26797
|
-
output.type !== ParsedEventType.
|
|
26920
|
+
output.type !== ParsedEventType.LegacyAnimation) {
|
|
26798
26921
|
// Animation bindings are excluded from the structural template's const array.
|
|
26799
26922
|
const securityContext = domSchema.securityContext(NG_TEMPLATE_TAG_NAME, output.name, false);
|
|
26800
26923
|
unit.create.push(createExtractedAttributeOp(op.xref, BindingKind.Property, null, output.name, null, null, null, securityContext));
|
|
@@ -26852,7 +26975,8 @@ function createTemplateBinding(view, xref, type, name, value, unit, securityCont
|
|
|
26852
26975
|
return createExtractedAttributeOp(xref, BindingKind.TwoWayProperty, null, name, null, null, i18nMessage, securityContext);
|
|
26853
26976
|
}
|
|
26854
26977
|
}
|
|
26855
|
-
if (!isTextBinding &&
|
|
26978
|
+
if (!isTextBinding &&
|
|
26979
|
+
(type === BindingType.Attribute || type === BindingType.LegacyAnimation)) {
|
|
26856
26980
|
// Again, this binding doesn't really target the ng-template; it actually targets the element
|
|
26857
26981
|
// inside the structural template. In the case of non-text attribute or animation bindings,
|
|
26858
26982
|
// the binding doesn't even show up on the ng-template const array, so we just skip it
|
|
@@ -27017,7 +27141,7 @@ function ingestControlFlowInsertionPoint(unit, xref, node) {
|
|
|
27017
27141
|
// Note that TDB used to collect the outputs as well, but it wasn't passing them into
|
|
27018
27142
|
// the template instruction. Here we just don't collect them.
|
|
27019
27143
|
for (const attr of root.inputs) {
|
|
27020
|
-
if (attr.type !== BindingType.
|
|
27144
|
+
if (attr.type !== BindingType.LegacyAnimation && attr.type !== BindingType.Attribute) {
|
|
27021
27145
|
const securityContext = domSchema.securityContext(NG_TEMPLATE_TAG_NAME, attr.name, true);
|
|
27022
27146
|
unit.create.push(createExtractedAttributeOp(xref, BindingKind.Property, null, attr.name, null, null, null, securityContext));
|
|
27023
27147
|
}
|
|
@@ -27238,7 +27362,7 @@ const ATTRIBUTE_PREFIX = 'attr';
|
|
|
27238
27362
|
const CLASS_PREFIX = 'class';
|
|
27239
27363
|
const STYLE_PREFIX = 'style';
|
|
27240
27364
|
const TEMPLATE_ATTR_PREFIX$1 = '*';
|
|
27241
|
-
const
|
|
27365
|
+
const LEGACY_ANIMATE_PROP_PREFIX = 'animate-';
|
|
27242
27366
|
/**
|
|
27243
27367
|
* Parses bindings in templates and in the directive host area.
|
|
27244
27368
|
*/
|
|
@@ -27297,17 +27421,17 @@ class BindingParser {
|
|
|
27297
27421
|
return targetEvents;
|
|
27298
27422
|
}
|
|
27299
27423
|
parseInterpolation(value, sourceSpan, interpolatedTokens) {
|
|
27300
|
-
const sourceInfo = sourceSpan.start.toString();
|
|
27301
27424
|
const absoluteOffset = sourceSpan.fullStart.offset;
|
|
27302
27425
|
try {
|
|
27303
|
-
const ast = this._exprParser.parseInterpolation(value,
|
|
27304
|
-
if (ast)
|
|
27305
|
-
this.
|
|
27426
|
+
const ast = this._exprParser.parseInterpolation(value, sourceSpan, absoluteOffset, interpolatedTokens, this._interpolationConfig);
|
|
27427
|
+
if (ast) {
|
|
27428
|
+
this.errors.push(...ast.errors);
|
|
27429
|
+
}
|
|
27306
27430
|
return ast;
|
|
27307
27431
|
}
|
|
27308
27432
|
catch (e) {
|
|
27309
27433
|
this._reportError(`${e}`, sourceSpan);
|
|
27310
|
-
return this._exprParser.wrapLiteralPrimitive('ERROR',
|
|
27434
|
+
return this._exprParser.wrapLiteralPrimitive('ERROR', sourceSpan, absoluteOffset);
|
|
27311
27435
|
}
|
|
27312
27436
|
}
|
|
27313
27437
|
/**
|
|
@@ -27316,17 +27440,17 @@ class BindingParser {
|
|
|
27316
27440
|
* This is used for parsing the switch expression in ICUs.
|
|
27317
27441
|
*/
|
|
27318
27442
|
parseInterpolationExpression(expression, sourceSpan) {
|
|
27319
|
-
const sourceInfo = sourceSpan.start.toString();
|
|
27320
27443
|
const absoluteOffset = sourceSpan.start.offset;
|
|
27321
27444
|
try {
|
|
27322
|
-
const ast = this._exprParser.parseInterpolationExpression(expression,
|
|
27323
|
-
if (ast)
|
|
27324
|
-
this.
|
|
27445
|
+
const ast = this._exprParser.parseInterpolationExpression(expression, sourceSpan, absoluteOffset);
|
|
27446
|
+
if (ast) {
|
|
27447
|
+
this.errors.push(...ast.errors);
|
|
27448
|
+
}
|
|
27325
27449
|
return ast;
|
|
27326
27450
|
}
|
|
27327
27451
|
catch (e) {
|
|
27328
27452
|
this._reportError(`${e}`, sourceSpan);
|
|
27329
|
-
return this._exprParser.wrapLiteralPrimitive('ERROR',
|
|
27453
|
+
return this._exprParser.wrapLiteralPrimitive('ERROR', sourceSpan, absoluteOffset);
|
|
27330
27454
|
}
|
|
27331
27455
|
}
|
|
27332
27456
|
/**
|
|
@@ -27383,10 +27507,9 @@ class BindingParser {
|
|
|
27383
27507
|
* @param absoluteValueOffset start of the `tplValue`
|
|
27384
27508
|
*/
|
|
27385
27509
|
_parseTemplateBindings(tplKey, tplValue, sourceSpan, absoluteKeyOffset, absoluteValueOffset) {
|
|
27386
|
-
const sourceInfo = sourceSpan.start.toString();
|
|
27387
27510
|
try {
|
|
27388
|
-
const bindingsResult = this._exprParser.parseTemplateBindings(tplKey, tplValue,
|
|
27389
|
-
|
|
27511
|
+
const bindingsResult = this._exprParser.parseTemplateBindings(tplKey, tplValue, sourceSpan, absoluteKeyOffset, absoluteValueOffset);
|
|
27512
|
+
bindingsResult.errors.forEach((e) => this.errors.push(e));
|
|
27390
27513
|
bindingsResult.warnings.forEach((warning) => {
|
|
27391
27514
|
this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING);
|
|
27392
27515
|
});
|
|
@@ -27398,7 +27521,7 @@ class BindingParser {
|
|
|
27398
27521
|
}
|
|
27399
27522
|
}
|
|
27400
27523
|
parseLiteralAttr(name, value, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps, keySpan) {
|
|
27401
|
-
if (
|
|
27524
|
+
if (isLegacyAnimationLabel(name)) {
|
|
27402
27525
|
name = name.substring(1);
|
|
27403
27526
|
if (keySpan !== undefined) {
|
|
27404
27527
|
keySpan = moveParseSourceSpan(keySpan, new AbsoluteSourceSpan(keySpan.start.offset + 1, keySpan.end.offset));
|
|
@@ -27407,7 +27530,7 @@ class BindingParser {
|
|
|
27407
27530
|
this._reportError(`Assigning animation triggers via @prop="exp" attributes with an expression is invalid.` +
|
|
27408
27531
|
` Use property bindings (e.g. [@prop]="exp") or use an attribute without a value (e.g. @prop) instead.`, sourceSpan, ParseErrorLevel.ERROR);
|
|
27409
27532
|
}
|
|
27410
|
-
this.
|
|
27533
|
+
this._parseLegacyAnimation(name, value, sourceSpan, absoluteOffset, keySpan, valueSpan, targetMatchableAttrs, targetProps);
|
|
27411
27534
|
}
|
|
27412
27535
|
else {
|
|
27413
27536
|
targetProps.push(new ParsedProperty(name, this._exprParser.wrapLiteralPrimitive(value, '', absoluteOffset), ParsedPropertyType.LITERAL_ATTR, sourceSpan, keySpan, valueSpan));
|
|
@@ -27417,23 +27540,23 @@ class BindingParser {
|
|
|
27417
27540
|
if (name.length === 0) {
|
|
27418
27541
|
this._reportError(`Property name is missing in binding`, sourceSpan);
|
|
27419
27542
|
}
|
|
27420
|
-
let
|
|
27421
|
-
if (name.startsWith(
|
|
27422
|
-
|
|
27423
|
-
name = name.substring(
|
|
27543
|
+
let isLegacyAnimationProp = false;
|
|
27544
|
+
if (name.startsWith(LEGACY_ANIMATE_PROP_PREFIX)) {
|
|
27545
|
+
isLegacyAnimationProp = true;
|
|
27546
|
+
name = name.substring(LEGACY_ANIMATE_PROP_PREFIX.length);
|
|
27424
27547
|
if (keySpan !== undefined) {
|
|
27425
|
-
keySpan = moveParseSourceSpan(keySpan, new AbsoluteSourceSpan(keySpan.start.offset +
|
|
27548
|
+
keySpan = moveParseSourceSpan(keySpan, new AbsoluteSourceSpan(keySpan.start.offset + LEGACY_ANIMATE_PROP_PREFIX.length, keySpan.end.offset));
|
|
27426
27549
|
}
|
|
27427
27550
|
}
|
|
27428
|
-
else if (
|
|
27429
|
-
|
|
27551
|
+
else if (isLegacyAnimationLabel(name)) {
|
|
27552
|
+
isLegacyAnimationProp = true;
|
|
27430
27553
|
name = name.substring(1);
|
|
27431
27554
|
if (keySpan !== undefined) {
|
|
27432
27555
|
keySpan = moveParseSourceSpan(keySpan, new AbsoluteSourceSpan(keySpan.start.offset + 1, keySpan.end.offset));
|
|
27433
27556
|
}
|
|
27434
27557
|
}
|
|
27435
|
-
if (
|
|
27436
|
-
this.
|
|
27558
|
+
if (isLegacyAnimationProp) {
|
|
27559
|
+
this._parseLegacyAnimation(name, expression, sourceSpan, absoluteOffset, keySpan, valueSpan, targetMatchableAttrs, targetProps);
|
|
27437
27560
|
}
|
|
27438
27561
|
else {
|
|
27439
27562
|
this._parsePropertyAst(name, this.parseBinding(expression, isHost, valueSpan || sourceSpan, absoluteOffset), isPartOfAssignmentBinding, sourceSpan, keySpan, valueSpan, targetMatchableAttrs, targetProps);
|
|
@@ -27451,7 +27574,7 @@ class BindingParser {
|
|
|
27451
27574
|
targetMatchableAttrs.push([name, ast.source]);
|
|
27452
27575
|
targetProps.push(new ParsedProperty(name, ast, isPartOfAssignmentBinding ? ParsedPropertyType.TWO_WAY : ParsedPropertyType.DEFAULT, sourceSpan, keySpan, valueSpan));
|
|
27453
27576
|
}
|
|
27454
|
-
|
|
27577
|
+
_parseLegacyAnimation(name, expression, sourceSpan, absoluteOffset, keySpan, valueSpan, targetMatchableAttrs, targetProps) {
|
|
27455
27578
|
if (name.length === 0) {
|
|
27456
27579
|
this._reportError('Animation trigger is missing', sourceSpan);
|
|
27457
27580
|
}
|
|
@@ -27460,26 +27583,26 @@ class BindingParser {
|
|
|
27460
27583
|
// states will be applied by angular when the element is attached/detached
|
|
27461
27584
|
const ast = this.parseBinding(expression || 'undefined', false, valueSpan || sourceSpan, absoluteOffset);
|
|
27462
27585
|
targetMatchableAttrs.push([name, ast.source]);
|
|
27463
|
-
targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.
|
|
27586
|
+
targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.LEGACY_ANIMATION, sourceSpan, keySpan, valueSpan));
|
|
27464
27587
|
}
|
|
27465
27588
|
parseBinding(value, isHostBinding, sourceSpan, absoluteOffset) {
|
|
27466
|
-
const sourceInfo = ((sourceSpan && sourceSpan.start) || '(unknown)').toString();
|
|
27467
27589
|
try {
|
|
27468
27590
|
const ast = isHostBinding
|
|
27469
|
-
? this._exprParser.parseSimpleBinding(value,
|
|
27470
|
-
: this._exprParser.parseBinding(value,
|
|
27471
|
-
if (ast)
|
|
27472
|
-
this.
|
|
27591
|
+
? this._exprParser.parseSimpleBinding(value, sourceSpan, absoluteOffset, this._interpolationConfig)
|
|
27592
|
+
: this._exprParser.parseBinding(value, sourceSpan, absoluteOffset, this._interpolationConfig);
|
|
27593
|
+
if (ast) {
|
|
27594
|
+
this.errors.push(...ast.errors);
|
|
27595
|
+
}
|
|
27473
27596
|
return ast;
|
|
27474
27597
|
}
|
|
27475
27598
|
catch (e) {
|
|
27476
27599
|
this._reportError(`${e}`, sourceSpan);
|
|
27477
|
-
return this._exprParser.wrapLiteralPrimitive('ERROR',
|
|
27600
|
+
return this._exprParser.wrapLiteralPrimitive('ERROR', sourceSpan, absoluteOffset);
|
|
27478
27601
|
}
|
|
27479
27602
|
}
|
|
27480
27603
|
createBoundElementProperty(elementSelector, boundProp, skipValidation = false, mapPropertyName = true) {
|
|
27481
|
-
if (boundProp.
|
|
27482
|
-
return new BoundElementProperty(boundProp.name, BindingType.
|
|
27604
|
+
if (boundProp.isLegacyAnimation) {
|
|
27605
|
+
return new BoundElementProperty(boundProp.name, BindingType.LegacyAnimation, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan, boundProp.keySpan, boundProp.valueSpan);
|
|
27483
27606
|
}
|
|
27484
27607
|
let unit = null;
|
|
27485
27608
|
let bindingType = undefined;
|
|
@@ -27532,12 +27655,12 @@ class BindingParser {
|
|
|
27532
27655
|
if (name.length === 0) {
|
|
27533
27656
|
this._reportError(`Event name is missing in binding`, sourceSpan);
|
|
27534
27657
|
}
|
|
27535
|
-
if (
|
|
27658
|
+
if (isLegacyAnimationLabel(name)) {
|
|
27536
27659
|
name = name.slice(1);
|
|
27537
27660
|
if (keySpan !== undefined) {
|
|
27538
27661
|
keySpan = moveParseSourceSpan(keySpan, new AbsoluteSourceSpan(keySpan.start.offset + 1, keySpan.end.offset));
|
|
27539
27662
|
}
|
|
27540
|
-
this.
|
|
27663
|
+
this._parseLegacyAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents, keySpan);
|
|
27541
27664
|
}
|
|
27542
27665
|
else {
|
|
27543
27666
|
this._parseRegularEvent(name, expression, isAssignmentEvent, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents, keySpan);
|
|
@@ -27551,14 +27674,14 @@ class BindingParser {
|
|
|
27551
27674
|
const [target, eventName] = splitAtColon(rawName, [null, rawName]);
|
|
27552
27675
|
return { eventName: eventName, target };
|
|
27553
27676
|
}
|
|
27554
|
-
|
|
27677
|
+
parseLegacyAnimationEventName(rawName) {
|
|
27555
27678
|
const matches = splitAtPeriod(rawName, [rawName, null]);
|
|
27556
27679
|
return { eventName: matches[0], phase: matches[1] === null ? null : matches[1].toLowerCase() };
|
|
27557
27680
|
}
|
|
27558
|
-
|
|
27559
|
-
const { eventName, phase } = this.
|
|
27681
|
+
_parseLegacyAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents, keySpan) {
|
|
27682
|
+
const { eventName, phase } = this.parseLegacyAnimationEventName(name);
|
|
27560
27683
|
const ast = this._parseAction(expression, handlerSpan);
|
|
27561
|
-
targetEvents.push(new ParsedEvent(eventName, phase, ParsedEventType.
|
|
27684
|
+
targetEvents.push(new ParsedEvent(eventName, phase, ParsedEventType.LegacyAnimation, ast, sourceSpan, handlerSpan, keySpan));
|
|
27562
27685
|
if (eventName.length === 0) {
|
|
27563
27686
|
this._reportError(`Animation event name is missing in binding`, sourceSpan);
|
|
27564
27687
|
}
|
|
@@ -27588,31 +27711,25 @@ class BindingParser {
|
|
|
27588
27711
|
// so don't add the event name to the matchableAttrs
|
|
27589
27712
|
}
|
|
27590
27713
|
_parseAction(value, sourceSpan) {
|
|
27591
|
-
const sourceInfo = ((sourceSpan && sourceSpan.start) || '(unknown').toString();
|
|
27592
27714
|
const absoluteOffset = sourceSpan && sourceSpan.start ? sourceSpan.start.offset : 0;
|
|
27593
27715
|
try {
|
|
27594
|
-
const ast = this._exprParser.parseAction(value,
|
|
27716
|
+
const ast = this._exprParser.parseAction(value, sourceSpan, absoluteOffset, this._interpolationConfig);
|
|
27595
27717
|
if (ast) {
|
|
27596
|
-
this.
|
|
27718
|
+
this.errors.push(...ast.errors);
|
|
27597
27719
|
}
|
|
27598
27720
|
if (!ast || ast.ast instanceof EmptyExpr$1) {
|
|
27599
27721
|
this._reportError(`Empty expressions are not allowed`, sourceSpan);
|
|
27600
|
-
return this._exprParser.wrapLiteralPrimitive('ERROR',
|
|
27722
|
+
return this._exprParser.wrapLiteralPrimitive('ERROR', sourceSpan, absoluteOffset);
|
|
27601
27723
|
}
|
|
27602
27724
|
return ast;
|
|
27603
27725
|
}
|
|
27604
27726
|
catch (e) {
|
|
27605
27727
|
this._reportError(`${e}`, sourceSpan);
|
|
27606
|
-
return this._exprParser.wrapLiteralPrimitive('ERROR',
|
|
27728
|
+
return this._exprParser.wrapLiteralPrimitive('ERROR', sourceSpan, absoluteOffset);
|
|
27607
27729
|
}
|
|
27608
27730
|
}
|
|
27609
|
-
_reportError(message, sourceSpan, level = ParseErrorLevel.ERROR
|
|
27610
|
-
this.errors.push(new ParseError(sourceSpan, message, level
|
|
27611
|
-
}
|
|
27612
|
-
_reportExpressionParserErrors(errors, sourceSpan) {
|
|
27613
|
-
for (const error of errors) {
|
|
27614
|
-
this._reportError(error.message, sourceSpan, undefined, error);
|
|
27615
|
-
}
|
|
27731
|
+
_reportError(message, sourceSpan, level = ParseErrorLevel.ERROR) {
|
|
27732
|
+
this.errors.push(new ParseError(sourceSpan, message, level));
|
|
27616
27733
|
}
|
|
27617
27734
|
/**
|
|
27618
27735
|
* @param propName the name of the property / attribute
|
|
@@ -27652,7 +27769,7 @@ class BindingParser {
|
|
|
27652
27769
|
return false;
|
|
27653
27770
|
}
|
|
27654
27771
|
}
|
|
27655
|
-
function
|
|
27772
|
+
function isLegacyAnimationLabel(name) {
|
|
27656
27773
|
return name[0] == '@';
|
|
27657
27774
|
}
|
|
27658
27775
|
function calcPossibleSecurityContexts(registry, selector, propName, isAttribute) {
|
|
@@ -29650,8 +29767,11 @@ function compileComponentFromMetadata(meta, constantPool, bindingParser) {
|
|
|
29650
29767
|
constantPool.statements.push(new DeclareVarStmt(fnName, meta.defer.dependenciesFn, undefined, StmtModifier.Final));
|
|
29651
29768
|
allDeferrableDepsFn = variable(fnName);
|
|
29652
29769
|
}
|
|
29770
|
+
const compilationMode = meta.isStandalone && !meta.hasDirectiveDependencies
|
|
29771
|
+
? TemplateCompilationMode.DomOnly
|
|
29772
|
+
: TemplateCompilationMode.Full;
|
|
29653
29773
|
// First the template is ingested into IR:
|
|
29654
|
-
const tpl = ingestComponent(meta.name, meta.template.nodes, constantPool, meta.relativeContextFilePath, meta.i18nUseExternalIds, meta.defer, allDeferrableDepsFn, meta.relativeTemplatePath, getTemplateSourceLocationsEnabled());
|
|
29774
|
+
const tpl = ingestComponent(meta.name, meta.template.nodes, constantPool, compilationMode, meta.relativeContextFilePath, meta.i18nUseExternalIds, meta.defer, allDeferrableDepsFn, meta.relativeTemplatePath, getTemplateSourceLocationsEnabled());
|
|
29655
29775
|
// Then the IR is transformed to prepare it for cod egeneration.
|
|
29656
29776
|
transform(tpl, CompilationJobKind.Tmpl);
|
|
29657
29777
|
// Finally we emit the template function:
|
|
@@ -31513,6 +31633,7 @@ function convertDeclareComponentFacadeToMetadata(decl, typeSourceSpan, sourceMap
|
|
|
31513
31633
|
declarations.push(...decl.directives.map((dir) => convertDirectiveDeclarationToMetadata(dir)));
|
|
31514
31634
|
decl.pipes && declarations.push(...convertPipeMapToMetadata(decl.pipes));
|
|
31515
31635
|
}
|
|
31636
|
+
const hasDirectiveDependencies = declarations.every(({ kind }) => kind === R3TemplateDependencyKind.Directive || kind === R3TemplateDependencyKind.NgModule);
|
|
31516
31637
|
return {
|
|
31517
31638
|
...convertDeclareDirectiveFacadeToMetadata(decl, typeSourceSpan),
|
|
31518
31639
|
template,
|
|
@@ -31528,6 +31649,7 @@ function convertDeclareComponentFacadeToMetadata(decl, typeSourceSpan, sourceMap
|
|
|
31528
31649
|
relativeContextFilePath: '',
|
|
31529
31650
|
i18nUseExternalIds: true,
|
|
31530
31651
|
relativeTemplatePath: null,
|
|
31652
|
+
hasDirectiveDependencies,
|
|
31531
31653
|
};
|
|
31532
31654
|
}
|
|
31533
31655
|
function convertDeclarationFacadeToMetadata(declaration) {
|
|
@@ -32271,7 +32393,7 @@ class _Visitor {
|
|
|
32271
32393
|
this._msgCountAtSectionStart = undefined;
|
|
32272
32394
|
}
|
|
32273
32395
|
_reportError(node, msg) {
|
|
32274
|
-
this._errors.push(new
|
|
32396
|
+
this._errors.push(new ParseError(node.sourceSpan, msg));
|
|
32275
32397
|
}
|
|
32276
32398
|
}
|
|
32277
32399
|
function _isOpeningComment(n) {
|
|
@@ -32561,7 +32683,7 @@ class XliffParser {
|
|
|
32561
32683
|
visitComponent(component, context) { }
|
|
32562
32684
|
visitDirective(directive, context) { }
|
|
32563
32685
|
_addError(node, message) {
|
|
32564
|
-
this._errors.push(new
|
|
32686
|
+
this._errors.push(new ParseError(node.sourceSpan, message));
|
|
32565
32687
|
}
|
|
32566
32688
|
}
|
|
32567
32689
|
// Convert ml nodes (xliff syntax) to i18n nodes
|
|
@@ -32622,7 +32744,7 @@ let XmlToI18n$2 = class XmlToI18n {
|
|
|
32622
32744
|
this._addError(directive, 'Unexpected node');
|
|
32623
32745
|
}
|
|
32624
32746
|
_addError(node, message) {
|
|
32625
|
-
this._errors.push(new
|
|
32747
|
+
this._errors.push(new ParseError(node.sourceSpan, message));
|
|
32626
32748
|
}
|
|
32627
32749
|
};
|
|
32628
32750
|
function getCtypeForTag(tag) {
|
|
@@ -32884,7 +33006,7 @@ class Xliff2Parser {
|
|
|
32884
33006
|
visitComponent(component, context) { }
|
|
32885
33007
|
visitDirective(directive, context) { }
|
|
32886
33008
|
_addError(node, message) {
|
|
32887
|
-
this._errors.push(new
|
|
33009
|
+
this._errors.push(new ParseError(node.sourceSpan, message));
|
|
32888
33010
|
}
|
|
32889
33011
|
}
|
|
32890
33012
|
// Convert ml nodes (xliff syntax) to i18n nodes
|
|
@@ -32962,7 +33084,7 @@ let XmlToI18n$1 = class XmlToI18n {
|
|
|
32962
33084
|
this._addError(directive, 'Unexpected node');
|
|
32963
33085
|
}
|
|
32964
33086
|
_addError(node, message) {
|
|
32965
|
-
this._errors.push(new
|
|
33087
|
+
this._errors.push(new ParseError(node.sourceSpan, message));
|
|
32966
33088
|
}
|
|
32967
33089
|
};
|
|
32968
33090
|
function getTypeForTag(tag) {
|
|
@@ -33107,7 +33229,7 @@ class XtbParser {
|
|
|
33107
33229
|
this._addError(directive, 'Unexpected node');
|
|
33108
33230
|
}
|
|
33109
33231
|
_addError(node, message) {
|
|
33110
|
-
this._errors.push(new
|
|
33232
|
+
this._errors.push(new ParseError(node.sourceSpan, message));
|
|
33111
33233
|
}
|
|
33112
33234
|
}
|
|
33113
33235
|
// Convert ml nodes (xtb syntax) to i18n nodes
|
|
@@ -33166,7 +33288,7 @@ class XmlToI18n {
|
|
|
33166
33288
|
this._addError(directive, 'Unexpected node');
|
|
33167
33289
|
}
|
|
33168
33290
|
_addError(node, message) {
|
|
33169
|
-
this._errors.push(new
|
|
33291
|
+
this._errors.push(new ParseError(node.sourceSpan, message));
|
|
33170
33292
|
}
|
|
33171
33293
|
}
|
|
33172
33294
|
|
|
@@ -33332,7 +33454,7 @@ class I18nToHtmlVisitor {
|
|
|
33332
33454
|
return text;
|
|
33333
33455
|
}
|
|
33334
33456
|
_addError(el, msg) {
|
|
33335
|
-
this._errors.push(new
|
|
33457
|
+
this._errors.push(new ParseError(el.sourceSpan, msg));
|
|
33336
33458
|
}
|
|
33337
33459
|
}
|
|
33338
33460
|
|
|
@@ -33569,7 +33691,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
|
|
|
33569
33691
|
function compileDeclareClassMetadata(metadata) {
|
|
33570
33692
|
const definitionMap = new DefinitionMap();
|
|
33571
33693
|
definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
|
|
33572
|
-
definitionMap.set('version', literal('20.1.0-
|
|
33694
|
+
definitionMap.set('version', literal('20.1.0-rc.0'));
|
|
33573
33695
|
definitionMap.set('ngImport', importExpr(Identifiers.core));
|
|
33574
33696
|
definitionMap.set('type', metadata.type);
|
|
33575
33697
|
definitionMap.set('decorators', metadata.decorators);
|
|
@@ -33587,7 +33709,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
|
|
|
33587
33709
|
callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? literal(null));
|
|
33588
33710
|
callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? literal(null));
|
|
33589
33711
|
definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
|
|
33590
|
-
definitionMap.set('version', literal('20.1.0-
|
|
33712
|
+
definitionMap.set('version', literal('20.1.0-rc.0'));
|
|
33591
33713
|
definitionMap.set('ngImport', importExpr(Identifiers.core));
|
|
33592
33714
|
definitionMap.set('type', metadata.type);
|
|
33593
33715
|
definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
|
|
@@ -33682,7 +33804,7 @@ function createDirectiveDefinitionMap(meta) {
|
|
|
33682
33804
|
const definitionMap = new DefinitionMap();
|
|
33683
33805
|
const minVersion = getMinimumVersionForPartialOutput(meta);
|
|
33684
33806
|
definitionMap.set('minVersion', literal(minVersion));
|
|
33685
|
-
definitionMap.set('version', literal('20.1.0-
|
|
33807
|
+
definitionMap.set('version', literal('20.1.0-rc.0'));
|
|
33686
33808
|
// e.g. `type: MyDirective`
|
|
33687
33809
|
definitionMap.set('type', meta.type.value);
|
|
33688
33810
|
if (meta.isStandalone !== undefined) {
|
|
@@ -34098,7 +34220,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
|
|
|
34098
34220
|
function compileDeclareFactoryFunction(meta) {
|
|
34099
34221
|
const definitionMap = new DefinitionMap();
|
|
34100
34222
|
definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
|
|
34101
|
-
definitionMap.set('version', literal('20.1.0-
|
|
34223
|
+
definitionMap.set('version', literal('20.1.0-rc.0'));
|
|
34102
34224
|
definitionMap.set('ngImport', importExpr(Identifiers.core));
|
|
34103
34225
|
definitionMap.set('type', meta.type.value);
|
|
34104
34226
|
definitionMap.set('deps', compileDependencies(meta.deps));
|
|
@@ -34133,7 +34255,7 @@ function compileDeclareInjectableFromMetadata(meta) {
|
|
|
34133
34255
|
function createInjectableDefinitionMap(meta) {
|
|
34134
34256
|
const definitionMap = new DefinitionMap();
|
|
34135
34257
|
definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
|
|
34136
|
-
definitionMap.set('version', literal('20.1.0-
|
|
34258
|
+
definitionMap.set('version', literal('20.1.0-rc.0'));
|
|
34137
34259
|
definitionMap.set('ngImport', importExpr(Identifiers.core));
|
|
34138
34260
|
definitionMap.set('type', meta.type.value);
|
|
34139
34261
|
// Only generate providedIn property if it has a non-null value
|
|
@@ -34184,7 +34306,7 @@ function compileDeclareInjectorFromMetadata(meta) {
|
|
|
34184
34306
|
function createInjectorDefinitionMap(meta) {
|
|
34185
34307
|
const definitionMap = new DefinitionMap();
|
|
34186
34308
|
definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
|
|
34187
|
-
definitionMap.set('version', literal('20.1.0-
|
|
34309
|
+
definitionMap.set('version', literal('20.1.0-rc.0'));
|
|
34188
34310
|
definitionMap.set('ngImport', importExpr(Identifiers.core));
|
|
34189
34311
|
definitionMap.set('type', meta.type.value);
|
|
34190
34312
|
definitionMap.set('providers', meta.providers);
|
|
@@ -34217,7 +34339,7 @@ function createNgModuleDefinitionMap(meta) {
|
|
|
34217
34339
|
throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
|
|
34218
34340
|
}
|
|
34219
34341
|
definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
|
|
34220
|
-
definitionMap.set('version', literal('20.1.0-
|
|
34342
|
+
definitionMap.set('version', literal('20.1.0-rc.0'));
|
|
34221
34343
|
definitionMap.set('ngImport', importExpr(Identifiers.core));
|
|
34222
34344
|
definitionMap.set('type', meta.type.value);
|
|
34223
34345
|
// We only generate the keys in the metadata if the arrays contain values.
|
|
@@ -34268,7 +34390,7 @@ function compileDeclarePipeFromMetadata(meta) {
|
|
|
34268
34390
|
function createPipeDefinitionMap(meta) {
|
|
34269
34391
|
const definitionMap = new DefinitionMap();
|
|
34270
34392
|
definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION));
|
|
34271
|
-
definitionMap.set('version', literal('20.1.0-
|
|
34393
|
+
definitionMap.set('version', literal('20.1.0-rc.0'));
|
|
34272
34394
|
definitionMap.set('ngImport', importExpr(Identifiers.core));
|
|
34273
34395
|
// e.g. `type: MyPipe`
|
|
34274
34396
|
definitionMap.set('type', meta.type.value);
|
|
@@ -34424,7 +34546,7 @@ function compileHmrUpdateCallback(definitions, constantStatements, meta) {
|
|
|
34424
34546
|
* @description
|
|
34425
34547
|
* Entry point for all public APIs of the compiler package.
|
|
34426
34548
|
*/
|
|
34427
|
-
const VERSION = new Version('20.1.0-
|
|
34549
|
+
const VERSION = new Version('20.1.0-rc.0');
|
|
34428
34550
|
|
|
34429
34551
|
//////////////////////////////////////
|
|
34430
34552
|
// THIS FILE HAS GLOBAL SIDE EFFECT //
|
|
@@ -34450,5 +34572,5 @@ const VERSION = new Version('20.1.0-next.2');
|
|
|
34450
34572
|
// the late binding of the Compiler to the @angular/core for jit compilation.
|
|
34451
34573
|
publishFacade(_global);
|
|
34452
34574
|
|
|
34453
|
-
export { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunctionExpr, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingPipeType, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CombinedRecursiveAstVisitor, CommaExpr, Comment, CompilerConfig, CompilerFacadeImpl, Component, Conditional, ConditionalExpr, ConstantPool, CssSelector, DEFAULT_INTERPOLATION_CONFIG, DYNAMIC_TYPE, DeclareFunctionStmt, DeclareVarStmt, Directive, DomElementSchemaRegistry, DynamicImportExpr, EOF, Element, ElementSchemaRegistry, EmitterVisitorContext, EmptyExpr$1 as EmptyExpr, Expansion, ExpansionCase, Expression, ExpressionBinding, ExpressionStatement, ExpressionType, ExternalExpr, ExternalReference, FactoryTarget, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InterpolationConfig, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, LeadingComment, LetDeclaration, Lexer, LiteralArray, LiteralArrayExpr, LiteralExpr, LiteralMap, LiteralMapExpr, LiteralPrimitive, LocalizedString, MapType, MessageBundle, NONE_TYPE, NO_ERRORS_SCHEMA, NodeWithI18n, NonNullAssert, NotExpr, ParenthesizedExpr, ParenthesizedExpression, ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseSpan, ParseTreeResult, ParsedEvent, ParsedEventType, ParsedProperty, ParsedPropertyType, ParsedVariable, Parser,
|
|
34575
|
+
export { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunctionExpr, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingPipeType, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CombinedRecursiveAstVisitor, CommaExpr, Comment, CompilerConfig, CompilerFacadeImpl, Component, Conditional, ConditionalExpr, ConstantPool, CssSelector, DEFAULT_INTERPOLATION_CONFIG, DYNAMIC_TYPE, DeclareFunctionStmt, DeclareVarStmt, Directive, DomElementSchemaRegistry, DynamicImportExpr, EOF, Element, ElementSchemaRegistry, EmitterVisitorContext, EmptyExpr$1 as EmptyExpr, Expansion, ExpansionCase, Expression, ExpressionBinding, ExpressionStatement, ExpressionType, ExternalExpr, ExternalReference, FactoryTarget, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InterpolationConfig, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, LeadingComment, LetDeclaration, Lexer, LiteralArray, LiteralArrayExpr, LiteralExpr, LiteralMap, LiteralMapExpr, LiteralPrimitive, LocalizedString, MapType, MessageBundle, NONE_TYPE, NO_ERRORS_SCHEMA, NodeWithI18n, NonNullAssert, NotExpr, ParenthesizedExpr, ParenthesizedExpression, ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseSpan, ParseTreeResult, ParsedEvent, ParsedEventType, ParsedProperty, ParsedPropertyType, ParsedVariable, Parser, PrefixNot, PropertyRead, Identifiers as R3Identifiers, R3NgModuleMetadataKind, R3SelectorScopeMode, R3TargetBinder, R3TemplateDependencyKind, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveVisitor, ResourceLoader, ReturnStatement, SECURITY_SCHEMA, STRING_TYPE, SafeCall, SafeKeyedRead, SafePropertyRead, SelectorContext, SelectorListContext, SelectorMatcher, SelectorlessMatcher, Serializer, SplitInterpolation, Statement, StmtModifier, StringToken, StringTokenKind, TagContentType, TaggedTemplateLiteral, TaggedTemplateLiteralExpr, TemplateBindingParseResult, TemplateLiteral, TemplateLiteralElement, TemplateLiteralElementExpr, TemplateLiteralExpr, Text, ThisReceiver, BlockNode as TmplAstBlockNode, BoundAttribute as TmplAstBoundAttribute, BoundDeferredTrigger as TmplAstBoundDeferredTrigger, BoundEvent as TmplAstBoundEvent, BoundText as TmplAstBoundText, Component$1 as TmplAstComponent, Content as TmplAstContent, DeferredBlock as TmplAstDeferredBlock, DeferredBlockError as TmplAstDeferredBlockError, DeferredBlockLoading as TmplAstDeferredBlockLoading, DeferredBlockPlaceholder as TmplAstDeferredBlockPlaceholder, DeferredTrigger as TmplAstDeferredTrigger, Directive$1 as TmplAstDirective, Element$1 as TmplAstElement, ForLoopBlock as TmplAstForLoopBlock, ForLoopBlockEmpty as TmplAstForLoopBlockEmpty, HostElement as TmplAstHostElement, HoverDeferredTrigger as TmplAstHoverDeferredTrigger, Icu$1 as TmplAstIcu, IdleDeferredTrigger as TmplAstIdleDeferredTrigger, IfBlock as TmplAstIfBlock, IfBlockBranch as TmplAstIfBlockBranch, ImmediateDeferredTrigger as TmplAstImmediateDeferredTrigger, InteractionDeferredTrigger as TmplAstInteractionDeferredTrigger, LetDeclaration$1 as TmplAstLetDeclaration, NeverDeferredTrigger as TmplAstNeverDeferredTrigger, RecursiveVisitor$1 as TmplAstRecursiveVisitor, Reference as TmplAstReference, SwitchBlock as TmplAstSwitchBlock, SwitchBlockCase as TmplAstSwitchBlockCase, Template as TmplAstTemplate, Text$3 as TmplAstText, TextAttribute as TmplAstTextAttribute, TimerDeferredTrigger as TmplAstTimerDeferredTrigger, UnknownBlock as TmplAstUnknownBlock, Variable as TmplAstVariable, ViewportDeferredTrigger as TmplAstViewportDeferredTrigger, Token, TokenType, TransplantedType, TreeError, Type, TypeModifier, TypeofExpr, TypeofExpression, Unary, UnaryOperator, UnaryOperatorExpr, VERSION, VariableBinding, Version, ViewEncapsulation$1 as ViewEncapsulation, VoidExpr, VoidExpression, WrappedNodeExpr, Xliff, Xliff2, Xmb, XmlParser, Xtb, compileClassDebugInfo, compileClassMetadata, compileComponentClassMetadata, compileComponentDeclareClassMetadata, compileComponentFromMetadata, compileDeclareClassMetadata, compileDeclareComponentFromMetadata, compileDeclareDirectiveFromMetadata, compileDeclareFactoryFunction, compileDeclareInjectableFromMetadata, compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileDeclarePipeFromMetadata, compileDeferResolverFunction, compileDirectiveFromMetadata, compileFactoryFunction, compileHmrInitializer, compileHmrUpdateCallback, compileInjectable, compileInjector, compileNgModule, compileOpaqueAsyncClassMetadata, compilePipeFromMetadata, computeMsgId, core, createCssSelectorFromNode, createInjectableType, createMayBeForwardRefExpression, devOnlyGuardedExpression, emitDistinctChangesOnlyDefaultValue, encapsulateStyle, escapeRegExp, findMatchingDirectivesAndPipes, getHtmlTagDefinition, getNsPrefix, getSafePropertyAccessString, identifierName, isNgContainer, isNgContent, isNgTemplate, jsDocComment, leadingComment, literal, literalMap, makeBindingParser, mergeNsAndName, output_ast as outputAst, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, sanitizeIdentifier, setEnableTemplateSourceLocations, splitNsName, visitAll$1 as tmplAstVisitAll, verifyHostBindings, visitAll };
|
|
34454
34576
|
//# sourceMappingURL=compiler.mjs.map
|