@angular/compiler 17.1.0-next.5 → 17.1.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/esm2022/src/compiler_facade_interface.mjs +1 -1
- package/esm2022/src/core.mjs +8 -1
- package/esm2022/src/jit_compiler_facade.mjs +9 -7
- package/esm2022/src/output/abstract_emitter.mjs +4 -1
- package/esm2022/src/output/output_ast.mjs +11 -7
- package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
- package/esm2022/src/render3/partial/directive.mjs +4 -4
- package/esm2022/src/render3/partial/factory.mjs +1 -1
- package/esm2022/src/render3/partial/injectable.mjs +1 -1
- package/esm2022/src/render3/partial/injector.mjs +1 -1
- package/esm2022/src/render3/partial/ng_module.mjs +1 -1
- package/esm2022/src/render3/partial/pipe.mjs +1 -1
- package/esm2022/src/render3/r3_class_metadata_compiler.mjs +2 -2
- package/esm2022/src/render3/r3_identifiers.mjs +5 -1
- package/esm2022/src/render3/view/api.mjs +1 -1
- package/esm2022/src/render3/view/compiler.mjs +26 -2
- package/esm2022/src/render3/view/style_parser.mjs +2 -1
- package/esm2022/src/render3/view/t2_api.mjs +1 -1
- package/esm2022/src/render3/view/t2_binder.mjs +18 -3
- package/esm2022/src/render3/view/template.mjs +9 -5
- package/esm2022/src/render3/view/util.mjs +35 -7
- package/esm2022/src/template/pipeline/ir/src/enums.mjs +1 -11
- package/esm2022/src/template/pipeline/ir/src/expression.mjs +1 -21
- package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +3 -2
- package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +3 -2
- package/esm2022/src/template/pipeline/src/conversion.mjs +2 -1
- package/esm2022/src/template/pipeline/src/emit.mjs +1 -3
- package/esm2022/src/template/pipeline/src/ingest.mjs +40 -15
- package/esm2022/src/template/pipeline/src/instruction.mjs +8 -7
- package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +6 -5
- package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +4 -2
- package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +8 -12
- package/esm2022/src/template/pipeline/src/phases/host_style_property_parsing.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/parse_extracted_styles.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/reify.mjs +2 -2
- package/esm2022/src/version.mjs +1 -1
- package/fesm2022/compiler.mjs +198 -145
- package/fesm2022/compiler.mjs.map +1 -1
- package/index.d.ts +135 -9
- package/package.json +2 -2
- package/esm2022/src/template/pipeline/src/phases/repeater_derived_vars.mjs +0 -45
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v17.1.0
|
|
2
|
+
* @license Angular v17.1.0
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -334,12 +334,13 @@ export declare enum BinaryOperator {
|
|
|
334
334
|
Modulo = 8,
|
|
335
335
|
And = 9,
|
|
336
336
|
Or = 10,
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
337
|
+
BitwiseOr = 11,
|
|
338
|
+
BitwiseAnd = 12,
|
|
339
|
+
Lower = 13,
|
|
340
|
+
LowerEquals = 14,
|
|
341
|
+
Bigger = 15,
|
|
342
|
+
BiggerEquals = 16,
|
|
343
|
+
NullishCoalesce = 17
|
|
343
344
|
}
|
|
344
345
|
|
|
345
346
|
export declare class BinaryOperatorExpr extends Expression {
|
|
@@ -578,6 +579,10 @@ export declare interface BoundTarget<DirectiveT extends DirectiveMeta> {
|
|
|
578
579
|
* @param trigger Trigger whose target is being looked up.
|
|
579
580
|
*/
|
|
580
581
|
getDeferredTriggerTarget(block: TmplAstDeferredBlock, trigger: TmplAstDeferredTrigger): TmplAstElement | null;
|
|
582
|
+
/**
|
|
583
|
+
* Whether a given node is located in a `@defer` block.
|
|
584
|
+
*/
|
|
585
|
+
isDeferred(node: TmplAstElement): boolean;
|
|
581
586
|
}
|
|
582
587
|
|
|
583
588
|
export declare class BuiltinType extends Type {
|
|
@@ -686,7 +691,7 @@ export declare type CompileClassMetadataFn = (metadata: R3ClassMetadata) => outp
|
|
|
686
691
|
* Similar to the `setClassMetadata` call, it's wrapped into the `ngDevMode`
|
|
687
692
|
* check to tree-shake away this code in production mode.
|
|
688
693
|
*/
|
|
689
|
-
export declare function compileComponentClassMetadata(metadata: R3ClassMetadata, deferrableTypes: Map<string, string>): outputAst.Expression;
|
|
694
|
+
export declare function compileComponentClassMetadata(metadata: R3ClassMetadata, deferrableTypes: Map<string, string> | null): outputAst.Expression;
|
|
690
695
|
|
|
691
696
|
/**
|
|
692
697
|
* Compile a component for the render3 runtime as defined by the `R3ComponentMetadata`.
|
|
@@ -841,6 +846,7 @@ declare namespace core {
|
|
|
841
846
|
ViewEncapsulation,
|
|
842
847
|
ChangeDetectionStrategy,
|
|
843
848
|
Input,
|
|
849
|
+
InputFlags,
|
|
844
850
|
Output,
|
|
845
851
|
HostBinding,
|
|
846
852
|
HostListener,
|
|
@@ -1015,6 +1021,30 @@ export declare class DeclareVarStmt extends Statement {
|
|
|
1015
1021
|
|
|
1016
1022
|
export declare const DEFAULT_INTERPOLATION_CONFIG: InterpolationConfig;
|
|
1017
1023
|
|
|
1024
|
+
/**
|
|
1025
|
+
* Defines how dynamic imports for deferred dependencies should be emitted in the
|
|
1026
|
+
* generated output:
|
|
1027
|
+
* - either in a function on per-component basis (in case of local compilation)
|
|
1028
|
+
* - or in a function on per-block basis (in full compilation mode)
|
|
1029
|
+
*/
|
|
1030
|
+
export declare const enum DeferBlockDepsEmitMode {
|
|
1031
|
+
/**
|
|
1032
|
+
* Dynamic imports are grouped on per-block basis.
|
|
1033
|
+
*
|
|
1034
|
+
* This is used in full compilation mode, when compiler has more information
|
|
1035
|
+
* about particular dependencies that belong to this block.
|
|
1036
|
+
*/
|
|
1037
|
+
PerBlock = 0,
|
|
1038
|
+
/**
|
|
1039
|
+
* Dynamic imports are grouped on per-component basis.
|
|
1040
|
+
*
|
|
1041
|
+
* In local compilation, compiler doesn't have enough information to determine
|
|
1042
|
+
* which deferred dependencies belong to which block. In this case we group all
|
|
1043
|
+
* dynamic imports into a single file on per-component basis.
|
|
1044
|
+
*/
|
|
1045
|
+
PerComponent = 1
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1018
1048
|
export declare function devOnlyGuardedExpression(expr: outputAst.Expression): outputAst.Expression;
|
|
1019
1049
|
|
|
1020
1050
|
/**
|
|
@@ -1244,6 +1274,7 @@ export declare abstract class Expression {
|
|
|
1244
1274
|
multiply(rhs: Expression, sourceSpan?: ParseSourceSpan | null): BinaryOperatorExpr;
|
|
1245
1275
|
modulo(rhs: Expression, sourceSpan?: ParseSourceSpan | null): BinaryOperatorExpr;
|
|
1246
1276
|
and(rhs: Expression, sourceSpan?: ParseSourceSpan | null): BinaryOperatorExpr;
|
|
1277
|
+
bitwiseOr(rhs: Expression, sourceSpan?: ParseSourceSpan | null, parens?: boolean): BinaryOperatorExpr;
|
|
1247
1278
|
bitwiseAnd(rhs: Expression, sourceSpan?: ParseSourceSpan | null, parens?: boolean): BinaryOperatorExpr;
|
|
1248
1279
|
or(rhs: Expression, sourceSpan?: ParseSourceSpan | null): BinaryOperatorExpr;
|
|
1249
1280
|
lower(rhs: Expression, sourceSpan?: ParseSourceSpan | null): BinaryOperatorExpr;
|
|
@@ -1582,6 +1613,14 @@ declare interface Input {
|
|
|
1582
1613
|
alias?: string;
|
|
1583
1614
|
required?: boolean;
|
|
1584
1615
|
transform?: (value: any) => any;
|
|
1616
|
+
isSignal: boolean;
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1619
|
+
/** Flags describing an input for a directive. */
|
|
1620
|
+
declare enum InputFlags {
|
|
1621
|
+
None = 0,
|
|
1622
|
+
SignalBased = 1,
|
|
1623
|
+
HasDecoratorInputTransform = 2
|
|
1585
1624
|
}
|
|
1586
1625
|
|
|
1587
1626
|
/**
|
|
@@ -2859,10 +2898,11 @@ export declare class R3BoundTarget<DirectiveT extends DirectiveMeta> implements
|
|
|
2859
2898
|
private usedPipes;
|
|
2860
2899
|
private eagerPipes;
|
|
2861
2900
|
private deferredBlocks;
|
|
2901
|
+
private rootScope;
|
|
2862
2902
|
constructor(target: Target, directives: Map<TmplAstElement | TmplAstTemplate, DirectiveT[]>, eagerDirectives: DirectiveT[], bindings: Map<TmplAstBoundAttribute | TmplAstBoundEvent | TmplAstTextAttribute, DirectiveT | TmplAstElement | TmplAstTemplate>, references: Map<TmplAstBoundAttribute | TmplAstBoundEvent | TmplAstReference | TmplAstTextAttribute, {
|
|
2863
2903
|
directive: DirectiveT;
|
|
2864
2904
|
node: TmplAstElement | TmplAstTemplate;
|
|
2865
|
-
} | TmplAstElement | TmplAstTemplate>, exprTargets: Map<AST, TmplAstReference | TmplAstVariable>, symbols: Map<TmplAstReference | TmplAstVariable, TmplAstTemplate>, nestingLevel: Map<ScopedNode, number>, scopedNodeEntities: Map<ScopedNode | null, ReadonlySet<TmplAstReference | TmplAstVariable>>, usedPipes: Set<string>, eagerPipes: Set<string>, deferredBlocks: Set<TmplAstDeferredBlock
|
|
2905
|
+
} | TmplAstElement | TmplAstTemplate>, exprTargets: Map<AST, TmplAstReference | TmplAstVariable>, symbols: Map<TmplAstReference | TmplAstVariable, TmplAstTemplate>, nestingLevel: Map<ScopedNode, number>, scopedNodeEntities: Map<ScopedNode | null, ReadonlySet<TmplAstReference | TmplAstVariable>>, usedPipes: Set<string>, eagerPipes: Set<string>, deferredBlocks: Set<TmplAstDeferredBlock>, rootScope: Scope);
|
|
2866
2906
|
getEntitiesInScope(node: ScopedNode | null): ReadonlySet<TmplAstReference | TmplAstVariable>;
|
|
2867
2907
|
getDirectivesOfNode(node: TmplAstElement | TmplAstTemplate): DirectiveT[] | null;
|
|
2868
2908
|
getReferenceTarget(ref: TmplAstReference): ReferenceTarget<DirectiveT> | null;
|
|
@@ -2876,6 +2916,7 @@ export declare class R3BoundTarget<DirectiveT extends DirectiveMeta> implements
|
|
|
2876
2916
|
getEagerlyUsedPipes(): string[];
|
|
2877
2917
|
getDeferBlocks(): TmplAstDeferredBlock[];
|
|
2878
2918
|
getDeferredTriggerTarget(block: TmplAstDeferredBlock, trigger: TmplAstDeferredTrigger): TmplAstElement | null;
|
|
2919
|
+
isDeferred(element: TmplAstElement): boolean;
|
|
2879
2920
|
/**
|
|
2880
2921
|
* Finds an entity with a specific name in a scope.
|
|
2881
2922
|
* @param rootNode Root node of the scope.
|
|
@@ -2987,6 +3028,16 @@ export declare interface R3ComponentMetadata<DeclarationT extends R3TemplateDepe
|
|
|
2987
3028
|
* Map of `@defer` blocks -> their corresponding metadata.
|
|
2988
3029
|
*/
|
|
2989
3030
|
deferBlocks: Map<t.DeferredBlock, R3DeferBlockMetadata>;
|
|
3031
|
+
/**
|
|
3032
|
+
* Defines how dynamic imports for deferred dependencies should be grouped:
|
|
3033
|
+
* - either in a function on per-component basis (in case of local compilation)
|
|
3034
|
+
* - or in a function on per-block basis (in full compilation mode)
|
|
3035
|
+
*/
|
|
3036
|
+
deferBlockDepsEmitMode: DeferBlockDepsEmitMode;
|
|
3037
|
+
/**
|
|
3038
|
+
* Map of deferrable symbol names -> corresponding import paths.
|
|
3039
|
+
*/
|
|
3040
|
+
deferrableTypes: Map<string, string>;
|
|
2990
3041
|
/**
|
|
2991
3042
|
* Specifies how the 'directives' and/or `pipes` array, if generated, need to be emitted.
|
|
2992
3043
|
*/
|
|
@@ -3984,6 +4035,7 @@ export declare class R3Identifiers {
|
|
|
3984
4035
|
static InputTransformsFeatureFeature: outputAst.ExternalReference;
|
|
3985
4036
|
static listener: outputAst.ExternalReference;
|
|
3986
4037
|
static getInheritedFactory: outputAst.ExternalReference;
|
|
4038
|
+
static InputFlags: outputAst.ExternalReference;
|
|
3987
4039
|
static sanitizeHtml: outputAst.ExternalReference;
|
|
3988
4040
|
static sanitizeStyle: outputAst.ExternalReference;
|
|
3989
4041
|
static sanitizeResourceUrl: outputAst.ExternalReference;
|
|
@@ -4517,6 +4569,80 @@ export declare interface SchemaMetadata {
|
|
|
4517
4569
|
name: string;
|
|
4518
4570
|
}
|
|
4519
4571
|
|
|
4572
|
+
/**
|
|
4573
|
+
* Represents a binding scope within a template.
|
|
4574
|
+
*
|
|
4575
|
+
* Any variables, references, or other named entities declared within the template will
|
|
4576
|
+
* be captured and available by name in `namedEntities`. Additionally, child templates will
|
|
4577
|
+
* be analyzed and have their child `Scope`s available in `childScopes`.
|
|
4578
|
+
*/
|
|
4579
|
+
declare class Scope implements Visitor_3 {
|
|
4580
|
+
readonly parentScope: Scope | null;
|
|
4581
|
+
readonly rootNode: ScopedNode | null;
|
|
4582
|
+
/**
|
|
4583
|
+
* Named members of the `Scope`, such as `Reference`s or `Variable`s.
|
|
4584
|
+
*/
|
|
4585
|
+
readonly namedEntities: Map<string, TmplAstVariable | TmplAstReference>;
|
|
4586
|
+
/**
|
|
4587
|
+
* Set of elements that belong to this scope.
|
|
4588
|
+
*/
|
|
4589
|
+
readonly elementsInScope: Set<TmplAstElement>;
|
|
4590
|
+
/**
|
|
4591
|
+
* Child `Scope`s for immediately nested `ScopedNode`s.
|
|
4592
|
+
*/
|
|
4593
|
+
readonly childScopes: Map<ScopedNode, Scope>;
|
|
4594
|
+
/** Whether this scope is deferred or if any of its ancestors are deferred. */
|
|
4595
|
+
readonly isDeferred: boolean;
|
|
4596
|
+
private constructor();
|
|
4597
|
+
static newRootScope(): Scope;
|
|
4598
|
+
/**
|
|
4599
|
+
* Process a template (either as a `Template` sub-template with variables, or a plain array of
|
|
4600
|
+
* template `Node`s) and construct its `Scope`.
|
|
4601
|
+
*/
|
|
4602
|
+
static apply(template: TmplAstNode[]): Scope;
|
|
4603
|
+
/**
|
|
4604
|
+
* Internal method to process the scoped node and populate the `Scope`.
|
|
4605
|
+
*/
|
|
4606
|
+
private ingest;
|
|
4607
|
+
visitElement(element: TmplAstElement): void;
|
|
4608
|
+
visitTemplate(template: TmplAstTemplate): void;
|
|
4609
|
+
visitVariable(variable: TmplAstVariable): void;
|
|
4610
|
+
visitReference(reference: TmplAstReference): void;
|
|
4611
|
+
visitDeferredBlock(deferred: TmplAstDeferredBlock): void;
|
|
4612
|
+
visitDeferredBlockPlaceholder(block: TmplAstDeferredBlockPlaceholder): void;
|
|
4613
|
+
visitDeferredBlockError(block: TmplAstDeferredBlockError): void;
|
|
4614
|
+
visitDeferredBlockLoading(block: TmplAstDeferredBlockLoading): void;
|
|
4615
|
+
visitSwitchBlock(block: TmplAstSwitchBlock): void;
|
|
4616
|
+
visitSwitchBlockCase(block: TmplAstSwitchBlockCase): void;
|
|
4617
|
+
visitForLoopBlock(block: TmplAstForLoopBlock): void;
|
|
4618
|
+
visitForLoopBlockEmpty(block: TmplAstForLoopBlockEmpty): void;
|
|
4619
|
+
visitIfBlock(block: TmplAstIfBlock): void;
|
|
4620
|
+
visitIfBlockBranch(block: TmplAstIfBlockBranch): void;
|
|
4621
|
+
visitContent(content: TmplAstContent): void;
|
|
4622
|
+
visitBoundAttribute(attr: TmplAstBoundAttribute): void;
|
|
4623
|
+
visitBoundEvent(event: TmplAstBoundEvent): void;
|
|
4624
|
+
visitBoundText(text: TmplAstBoundText): void;
|
|
4625
|
+
visitText(text: TmplAstText): void;
|
|
4626
|
+
visitTextAttribute(attr: TmplAstTextAttribute): void;
|
|
4627
|
+
visitIcu(icu: TmplAstIcu): void;
|
|
4628
|
+
visitDeferredTrigger(trigger: TmplAstDeferredTrigger): void;
|
|
4629
|
+
visitUnknownBlock(block: TmplAstUnknownBlock): void;
|
|
4630
|
+
private maybeDeclare;
|
|
4631
|
+
/**
|
|
4632
|
+
* Look up a variable within this `Scope`.
|
|
4633
|
+
*
|
|
4634
|
+
* This can recurse into a parent `Scope` if it's available.
|
|
4635
|
+
*/
|
|
4636
|
+
lookup(name: string): TmplAstReference | TmplAstVariable | null;
|
|
4637
|
+
/**
|
|
4638
|
+
* Get the child scope for a `ScopedNode`.
|
|
4639
|
+
*
|
|
4640
|
+
* This should always be defined.
|
|
4641
|
+
*/
|
|
4642
|
+
getChildScope(node: ScopedNode): Scope;
|
|
4643
|
+
private ingestScopedNode;
|
|
4644
|
+
}
|
|
4645
|
+
|
|
4520
4646
|
/** Node that has a `Scope` associated with it. */
|
|
4521
4647
|
export declare type ScopedNode = TmplAstTemplate | TmplAstSwitchBlockCase | TmplAstIfBlockBranch | TmplAstForLoopBlock | TmplAstForLoopBlockEmpty | TmplAstDeferredBlock | TmplAstDeferredBlockError | TmplAstDeferredBlockLoading | TmplAstDeferredBlockPlaceholder;
|
|
4522
4648
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/compiler",
|
|
3
|
-
"version": "17.1.0
|
|
3
|
+
"version": "17.1.0",
|
|
4
4
|
"description": "Angular - the compiler library",
|
|
5
5
|
"author": "angular",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"tslib": "^2.3.0"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"@angular/core": "17.1.0
|
|
14
|
+
"@angular/core": "17.1.0"
|
|
15
15
|
},
|
|
16
16
|
"peerDependenciesMeta": {
|
|
17
17
|
"@angular/core": {
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import * as o from '../../../../output/output_ast';
|
|
9
|
-
import * as ir from '../../ir';
|
|
10
|
-
/**
|
|
11
|
-
* Inside the body of a repeater, certain context variables (such as `$first`) are ambiently
|
|
12
|
-
* available. This phase finds those variable usages, and replaces them with the appropriate
|
|
13
|
-
* expression.
|
|
14
|
-
*/
|
|
15
|
-
export function generateRepeaterDerivedVars(job) {
|
|
16
|
-
const repeaters = new Map();
|
|
17
|
-
for (const unit of job.units) {
|
|
18
|
-
for (const op of unit.ops()) {
|
|
19
|
-
if (op.kind === ir.OpKind.RepeaterCreate) {
|
|
20
|
-
repeaters.set(op.xref, op);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
for (const unit of job.units) {
|
|
25
|
-
for (const op of unit.ops()) {
|
|
26
|
-
ir.transformExpressionsInOp(op, expr => {
|
|
27
|
-
if (!(expr instanceof ir.DerivedRepeaterVarExpr)) {
|
|
28
|
-
return expr;
|
|
29
|
-
}
|
|
30
|
-
const repeaterOp = repeaters.get(expr.xref);
|
|
31
|
-
switch (expr.identity) {
|
|
32
|
-
case ir.DerivedRepeaterVarIdentity.First:
|
|
33
|
-
return new o.BinaryOperatorExpr(o.BinaryOperator.Identical, new ir.LexicalReadExpr(repeaterOp.varNames.$index), o.literal(0));
|
|
34
|
-
case ir.DerivedRepeaterVarIdentity.Last:
|
|
35
|
-
return new o.BinaryOperatorExpr(o.BinaryOperator.Identical, new ir.LexicalReadExpr(repeaterOp.varNames.$index), new o.BinaryOperatorExpr(o.BinaryOperator.Minus, new ir.LexicalReadExpr(repeaterOp.varNames.$count), o.literal(1)));
|
|
36
|
-
case ir.DerivedRepeaterVarIdentity.Even:
|
|
37
|
-
return new o.BinaryOperatorExpr(o.BinaryOperator.Identical, new o.BinaryOperatorExpr(o.BinaryOperator.Modulo, new ir.LexicalReadExpr(repeaterOp.varNames.$index), o.literal(2)), o.literal(0));
|
|
38
|
-
case ir.DerivedRepeaterVarIdentity.Odd:
|
|
39
|
-
return new o.BinaryOperatorExpr(o.BinaryOperator.NotIdentical, new o.BinaryOperatorExpr(o.BinaryOperator.Modulo, new ir.LexicalReadExpr(repeaterOp.varNames.$index), o.literal(2)), o.literal(0));
|
|
40
|
-
}
|
|
41
|
-
}, ir.VisitorContextFlag.None);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXJfZGVyaXZlZF92YXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvcmVwZWF0ZXJfZGVyaXZlZF92YXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0I7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxHQUFtQjtJQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztJQUU1RCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN6QyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUM1QixFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztvQkFDakQsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUUsQ0FBQztnQkFFN0MsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3RCLEtBQUssRUFBRSxDQUFDLDBCQUEwQixDQUFDLEtBQUs7d0JBQ3RDLE9BQU8sSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQzNCLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM5RSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BCLEtBQUssRUFBRSxDQUFDLDBCQUEwQixDQUFDLElBQUk7d0JBQ3JDLE9BQU8sSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQzNCLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM5RSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FDcEIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QixLQUFLLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJO3dCQUNyQyxPQUFPLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUMzQixDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFDMUIsSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQ3BCLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUMzRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2pCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDcEIsS0FBSyxFQUFFLENBQUMsMEJBQTBCLENBQUMsR0FBRzt3QkFDcEMsT0FBTyxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FDM0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQzdCLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUNwQixDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDM0UsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNqQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7WUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBvIGZyb20gJy4uLy4uLy4uLy4uL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCAqIGFzIGlyIGZyb20gJy4uLy4uL2lyJztcblxuaW1wb3J0IHR5cGUge0NvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogSW5zaWRlIHRoZSBib2R5IG9mIGEgcmVwZWF0ZXIsIGNlcnRhaW4gY29udGV4dCB2YXJpYWJsZXMgKHN1Y2ggYXMgYCRmaXJzdGApIGFyZSBhbWJpZW50bHlcbiAqIGF2YWlsYWJsZS4gVGhpcyBwaGFzZSBmaW5kcyB0aG9zZSB2YXJpYWJsZSB1c2FnZXMsIGFuZCByZXBsYWNlcyB0aGVtIHdpdGggdGhlIGFwcHJvcHJpYXRlXG4gKiBleHByZXNzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSZXBlYXRlckRlcml2ZWRWYXJzKGpvYjogQ29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgY29uc3QgcmVwZWF0ZXJzID0gbmV3IE1hcDxpci5YcmVmSWQsIGlyLlJlcGVhdGVyQ3JlYXRlT3A+KCk7XG5cbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC5vcHMoKSkge1xuICAgICAgaWYgKG9wLmtpbmQgPT09IGlyLk9wS2luZC5SZXBlYXRlckNyZWF0ZSkge1xuICAgICAgICByZXBlYXRlcnMuc2V0KG9wLnhyZWYsIG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0Lm9wcygpKSB7XG4gICAgICBpci50cmFuc2Zvcm1FeHByZXNzaW9uc0luT3Aob3AsIGV4cHIgPT4ge1xuICAgICAgICBpZiAoIShleHByIGluc3RhbmNlb2YgaXIuRGVyaXZlZFJlcGVhdGVyVmFyRXhwcikpIHtcbiAgICAgICAgICByZXR1cm4gZXhwcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXBlYXRlck9wID0gcmVwZWF0ZXJzLmdldChleHByLnhyZWYpITtcblxuICAgICAgICBzd2l0Y2ggKGV4cHIuaWRlbnRpdHkpIHtcbiAgICAgICAgICBjYXNlIGlyLkRlcml2ZWRSZXBlYXRlclZhcklkZW50aXR5LkZpcnN0OlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBvLkJpbmFyeU9wZXJhdG9yRXhwcihcbiAgICAgICAgICAgICAgICBvLkJpbmFyeU9wZXJhdG9yLklkZW50aWNhbCwgbmV3IGlyLkxleGljYWxSZWFkRXhwcihyZXBlYXRlck9wLnZhck5hbWVzLiRpbmRleCksXG4gICAgICAgICAgICAgICAgby5saXRlcmFsKDApKTtcbiAgICAgICAgICBjYXNlIGlyLkRlcml2ZWRSZXBlYXRlclZhcklkZW50aXR5Lkxhc3Q6XG4gICAgICAgICAgICByZXR1cm4gbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKFxuICAgICAgICAgICAgICAgIG8uQmluYXJ5T3BlcmF0b3IuSWRlbnRpY2FsLCBuZXcgaXIuTGV4aWNhbFJlYWRFeHByKHJlcGVhdGVyT3AudmFyTmFtZXMuJGluZGV4KSxcbiAgICAgICAgICAgICAgICBuZXcgby5CaW5hcnlPcGVyYXRvckV4cHIoXG4gICAgICAgICAgICAgICAgICAgIG8uQmluYXJ5T3BlcmF0b3IuTWludXMsIG5ldyBpci5MZXhpY2FsUmVhZEV4cHIocmVwZWF0ZXJPcC52YXJOYW1lcy4kY291bnQpLFxuICAgICAgICAgICAgICAgICAgICBvLmxpdGVyYWwoMSkpKTtcbiAgICAgICAgICBjYXNlIGlyLkRlcml2ZWRSZXBlYXRlclZhcklkZW50aXR5LkV2ZW46XG4gICAgICAgICAgICByZXR1cm4gbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKFxuICAgICAgICAgICAgICAgIG8uQmluYXJ5T3BlcmF0b3IuSWRlbnRpY2FsLFxuICAgICAgICAgICAgICAgIG5ldyBvLkJpbmFyeU9wZXJhdG9yRXhwcihcbiAgICAgICAgICAgICAgICAgICAgby5CaW5hcnlPcGVyYXRvci5Nb2R1bG8sIG5ldyBpci5MZXhpY2FsUmVhZEV4cHIocmVwZWF0ZXJPcC52YXJOYW1lcy4kaW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICBvLmxpdGVyYWwoMikpLFxuICAgICAgICAgICAgICAgIG8ubGl0ZXJhbCgwKSk7XG4gICAgICAgICAgY2FzZSBpci5EZXJpdmVkUmVwZWF0ZXJWYXJJZGVudGl0eS5PZGQ6XG4gICAgICAgICAgICByZXR1cm4gbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKFxuICAgICAgICAgICAgICAgIG8uQmluYXJ5T3BlcmF0b3IuTm90SWRlbnRpY2FsLFxuICAgICAgICAgICAgICAgIG5ldyBvLkJpbmFyeU9wZXJhdG9yRXhwcihcbiAgICAgICAgICAgICAgICAgICAgby5CaW5hcnlPcGVyYXRvci5Nb2R1bG8sIG5ldyBpci5MZXhpY2FsUmVhZEV4cHIocmVwZWF0ZXJPcC52YXJOYW1lcy4kaW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICBvLmxpdGVyYWwoMikpLFxuICAgICAgICAgICAgICAgIG8ubGl0ZXJhbCgwKSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGlyLlZpc2l0b3JDb250ZXh0RmxhZy5Ob25lKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|