@angular/compiler-cli 11.2.9 → 11.2.13
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/linker/src/file_linker/partial_linkers/partial_linker_selector.d.ts +1 -1
- package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +4 -4
- package/ngcc/src/analysis/decoration_analyzer.js +6 -6
- package/ngcc/src/packages/build_marker.d.ts +1 -1
- package/ngcc/src/packages/build_marker.js +1 -1
- package/package.json +2 -2
- package/src/ngtsc/annotations/src/component.d.ts +2 -3
- package/src/ngtsc/annotations/src/component.js +4 -5
- package/src/ngtsc/annotations/src/directive.d.ts +3 -4
- package/src/ngtsc/annotations/src/directive.js +6 -7
- package/src/ngtsc/annotations/src/injectable.d.ts +1 -3
- package/src/ngtsc/annotations/src/injectable.js +9 -9
- package/src/ngtsc/annotations/src/metadata.d.ts +1 -2
- package/src/ngtsc/annotations/src/metadata.js +5 -5
- package/src/ngtsc/annotations/src/ng_module.d.ts +2 -3
- package/src/ngtsc/annotations/src/ng_module.js +4 -5
- package/src/ngtsc/annotations/src/pipe.d.ts +1 -3
- package/src/ngtsc/annotations/src/pipe.js +4 -5
- package/src/ngtsc/annotations/src/util.d.ts +5 -5
- package/src/ngtsc/annotations/src/util.js +12 -11
- package/src/ngtsc/core/api/src/interfaces.d.ts +4 -1
- package/src/ngtsc/core/api/src/interfaces.js +1 -1
- package/src/ngtsc/core/src/compiler.js +9 -10
- package/src/ngtsc/core/src/host.d.ts +1 -1
- package/src/ngtsc/diagnostics/src/error_code.d.ts +5 -0
- package/src/ngtsc/diagnostics/src/error_code.js +6 -1
- package/src/ngtsc/imports/index.d.ts +1 -1
- package/src/ngtsc/imports/index.js +2 -3
- package/src/ngtsc/imports/src/default.d.ts +10 -37
- package/src/ngtsc/imports/src/default.js +22 -37
- package/src/ngtsc/incremental/src/state.js +6 -4
- package/src/ngtsc/resource/src/loader.js +3 -2
- package/src/ngtsc/transform/src/transform.d.ts +2 -2
- package/src/ngtsc/transform/src/transform.js +18 -16
- package/src/ngtsc/translator/index.d.ts +1 -1
- package/src/ngtsc/translator/index.js +1 -1
- package/src/ngtsc/translator/src/translator.d.ts +3 -3
- package/src/ngtsc/translator/src/translator.js +3 -3
- package/src/ngtsc/typecheck/api/checker.d.ts +1 -1
- package/src/ngtsc/typecheck/api/checker.js +1 -1
- package/src/ngtsc/typecheck/api/completion.d.ts +5 -0
- package/src/ngtsc/typecheck/api/completion.js +1 -1
- package/src/ngtsc/typecheck/src/checker.d.ts +2 -2
- package/src/ngtsc/typecheck/src/checker.js +3 -3
- package/src/ngtsc/typecheck/src/completion.d.ts +17 -7
- package/src/ngtsc/typecheck/src/completion.js +82 -47
- package/src/ngtsc/typecheck/src/context.js +26 -14
- package/src/ngtsc/typecheck/src/expression.js +4 -2
- package/src/ngtsc/typecheck/src/host.js +5 -7
- package/src/ngtsc/typecheck/src/tcb_util.d.ts +24 -2
- package/src/ngtsc/typecheck/src/tcb_util.js +40 -11
- package/src/ngtsc/typecheck/src/type_check_block.d.ts +28 -1
- package/src/ngtsc/typecheck/src/type_check_block.js +61 -25
- package/src/ngtsc/typecheck/src/type_check_file.d.ts +2 -1
- package/src/ngtsc/typecheck/src/type_check_file.js +3 -3
- package/src/ngtsc/typecheck/src/type_constructor.js +4 -8
- package/src/ngtsc/util/src/typescript.d.ts +4 -0
- package/src/ngtsc/util/src/typescript.js +13 -2
- package/src/transformers/program.js +70 -3
- package/src/version.js +1 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
/// <amd-module name="@angular/compiler-cli/src/ngtsc/typecheck/src/tcb_util" />
|
|
9
9
|
import { AbsoluteSourceSpan, ParseSourceSpan } from '@angular/compiler';
|
|
10
|
-
import { ClassDeclaration } from '@angular/compiler-cli/src/ngtsc/reflection';
|
|
10
|
+
import { ClassDeclaration, ReflectionHost } from '@angular/compiler-cli/src/ngtsc/reflection';
|
|
11
11
|
import * as ts from 'typescript';
|
|
12
12
|
import { Reference } from '../../imports';
|
|
13
13
|
import { FullTemplateMapping, SourceLocation, TemplateId, TemplateSourceMapping } from '../api';
|
|
@@ -29,7 +29,28 @@ export interface TemplateSourceResolver {
|
|
|
29
29
|
*/
|
|
30
30
|
toParseSourceSpan(id: TemplateId, span: AbsoluteSourceSpan): ParseSourceSpan | null;
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Indicates whether a particular component requires an inline type check block.
|
|
34
|
+
*
|
|
35
|
+
* This is not a boolean state as inlining might only be required to get the best possible
|
|
36
|
+
* type-checking, but the component could theoretically still be checked without it.
|
|
37
|
+
*/
|
|
38
|
+
export declare enum TcbInliningRequirement {
|
|
39
|
+
/**
|
|
40
|
+
* There is no way to type check this component without inlining.
|
|
41
|
+
*/
|
|
42
|
+
MustInline = 0,
|
|
43
|
+
/**
|
|
44
|
+
* Inlining should be used due to the component's generic bounds, but a non-inlining fallback
|
|
45
|
+
* method can be used if that's not possible.
|
|
46
|
+
*/
|
|
47
|
+
ShouldInlineForGenericBounds = 1,
|
|
48
|
+
/**
|
|
49
|
+
* There is no requirement for this component's TCB to be inlined.
|
|
50
|
+
*/
|
|
51
|
+
None = 2
|
|
52
|
+
}
|
|
53
|
+
export declare function requiresInlineTypeCheckBlock(node: ClassDeclaration<ts.ClassDeclaration>, usedPipes: Map<string, Reference<ClassDeclaration<ts.ClassDeclaration>>>, reflector: ReflectionHost): TcbInliningRequirement;
|
|
33
54
|
/** Maps a shim position back to a template location. */
|
|
34
55
|
export declare function getTemplateMapping(shimSf: ts.SourceFile, position: number, resolver: TemplateSourceResolver, isDiagnosticRequest: boolean): FullTemplateMapping | null;
|
|
35
56
|
export declare function findTypeCheckBlock(file: ts.SourceFile, id: TemplateId, isDiagnosticRequest: boolean): ts.Node | null;
|
|
@@ -40,3 +61,4 @@ export declare function findTypeCheckBlock(file: ts.SourceFile, id: TemplateId,
|
|
|
40
61
|
* returns null.
|
|
41
62
|
*/
|
|
42
63
|
export declare function findSourceLocation(node: ts.Node, sourceFile: ts.SourceFile, isDiagnosticsRequest: boolean): SourceLocation | null;
|
|
64
|
+
export declare function checkIfGenericTypeBoundsAreContextFree(node: ClassDeclaration<ts.ClassDeclaration>, reflector: ReflectionHost): boolean;
|
|
@@ -11,37 +11,61 @@
|
|
|
11
11
|
if (v !== undefined) module.exports = v;
|
|
12
12
|
}
|
|
13
13
|
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/compiler-cli/src/ngtsc/typecheck/src/tcb_util", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/src/ngtsc/util/src/typescript", "@angular/compiler-cli/src/ngtsc/typecheck/src/comments", "@angular/compiler-cli/src/ngtsc/typecheck/src/ts_util"], factory);
|
|
14
|
+
define("@angular/compiler-cli/src/ngtsc/typecheck/src/tcb_util", ["require", "exports", "tslib", "typescript", "@angular/compiler-cli/src/ngtsc/util/src/typescript", "@angular/compiler-cli/src/ngtsc/typecheck/src/comments", "@angular/compiler-cli/src/ngtsc/typecheck/src/ts_util", "@angular/compiler-cli/src/ngtsc/typecheck/src/type_parameter_emitter"], factory);
|
|
15
15
|
}
|
|
16
16
|
})(function (require, exports) {
|
|
17
17
|
"use strict";
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.findSourceLocation = exports.findTypeCheckBlock = exports.getTemplateMapping = exports.requiresInlineTypeCheckBlock = void 0;
|
|
19
|
+
exports.checkIfGenericTypeBoundsAreContextFree = exports.findSourceLocation = exports.findTypeCheckBlock = exports.getTemplateMapping = exports.requiresInlineTypeCheckBlock = exports.TcbInliningRequirement = void 0;
|
|
20
20
|
var tslib_1 = require("tslib");
|
|
21
21
|
var ts = require("typescript");
|
|
22
22
|
var typescript_1 = require("@angular/compiler-cli/src/ngtsc/util/src/typescript");
|
|
23
23
|
var comments_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/comments");
|
|
24
24
|
var ts_util_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/ts_util");
|
|
25
|
-
|
|
25
|
+
var type_parameter_emitter_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/type_parameter_emitter");
|
|
26
|
+
/**
|
|
27
|
+
* Indicates whether a particular component requires an inline type check block.
|
|
28
|
+
*
|
|
29
|
+
* This is not a boolean state as inlining might only be required to get the best possible
|
|
30
|
+
* type-checking, but the component could theoretically still be checked without it.
|
|
31
|
+
*/
|
|
32
|
+
var TcbInliningRequirement;
|
|
33
|
+
(function (TcbInliningRequirement) {
|
|
34
|
+
/**
|
|
35
|
+
* There is no way to type check this component without inlining.
|
|
36
|
+
*/
|
|
37
|
+
TcbInliningRequirement[TcbInliningRequirement["MustInline"] = 0] = "MustInline";
|
|
38
|
+
/**
|
|
39
|
+
* Inlining should be used due to the component's generic bounds, but a non-inlining fallback
|
|
40
|
+
* method can be used if that's not possible.
|
|
41
|
+
*/
|
|
42
|
+
TcbInliningRequirement[TcbInliningRequirement["ShouldInlineForGenericBounds"] = 1] = "ShouldInlineForGenericBounds";
|
|
43
|
+
/**
|
|
44
|
+
* There is no requirement for this component's TCB to be inlined.
|
|
45
|
+
*/
|
|
46
|
+
TcbInliningRequirement[TcbInliningRequirement["None"] = 2] = "None";
|
|
47
|
+
})(TcbInliningRequirement = exports.TcbInliningRequirement || (exports.TcbInliningRequirement = {}));
|
|
48
|
+
function requiresInlineTypeCheckBlock(node, usedPipes, reflector) {
|
|
26
49
|
// In order to qualify for a declared TCB (not inline) two conditions must be met:
|
|
27
50
|
// 1) the class must be exported
|
|
28
|
-
// 2) it must not have
|
|
51
|
+
// 2) it must not have contextual generic type bounds
|
|
29
52
|
if (!ts_util_1.checkIfClassIsExported(node)) {
|
|
30
53
|
// Condition 1 is false, the class is not exported.
|
|
31
|
-
return
|
|
54
|
+
return TcbInliningRequirement.MustInline;
|
|
32
55
|
}
|
|
33
|
-
else if (!
|
|
34
|
-
// Condition 2 is false, the class has constrained generic types
|
|
35
|
-
|
|
56
|
+
else if (!checkIfGenericTypeBoundsAreContextFree(node, reflector)) {
|
|
57
|
+
// Condition 2 is false, the class has constrained generic types. It should be checked with an
|
|
58
|
+
// inline TCB if possible, but can potentially use fallbacks to avoid inlining if not.
|
|
59
|
+
return TcbInliningRequirement.ShouldInlineForGenericBounds;
|
|
36
60
|
}
|
|
37
61
|
else if (Array.from(usedPipes.values())
|
|
38
62
|
.some(function (pipeRef) { return !ts_util_1.checkIfClassIsExported(pipeRef.node); })) {
|
|
39
63
|
// If one of the pipes used by the component is not exported, a non-inline TCB will not be able
|
|
40
64
|
// to import it, so this requires an inline TCB.
|
|
41
|
-
return
|
|
65
|
+
return TcbInliningRequirement.MustInline;
|
|
42
66
|
}
|
|
43
67
|
else {
|
|
44
|
-
return
|
|
68
|
+
return TcbInliningRequirement.None;
|
|
45
69
|
}
|
|
46
70
|
}
|
|
47
71
|
exports.requiresInlineTypeCheckBlock = requiresInlineTypeCheckBlock;
|
|
@@ -132,5 +156,10 @@
|
|
|
132
156
|
return commentText;
|
|
133
157
|
}) || null;
|
|
134
158
|
}
|
|
159
|
+
function checkIfGenericTypeBoundsAreContextFree(node, reflector) {
|
|
160
|
+
// Generic type parameters are considered context free if they can be emitted into any context.
|
|
161
|
+
return new type_parameter_emitter_1.TypeParameterEmitter(node.typeParameters, reflector).canEmit();
|
|
162
|
+
}
|
|
163
|
+
exports.checkIfGenericTypeBoundsAreContextFree = checkIfGenericTypeBoundsAreContextFree;
|
|
135
164
|
});
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNiX3V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3R5cGVjaGVjay9zcmMvdGNiX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUlILCtCQUFpQztJQUdqQyxrRkFBNkQ7SUFHN0QsbUZBQTBFO0lBQzFFLGlGQUFnRjtJQXVCaEYsU0FBZ0IsNEJBQTRCLENBQ3hDLElBQTJDLEVBQzNDLFNBQXdFO1FBQzFFLGtGQUFrRjtRQUNsRixnQ0FBZ0M7UUFDaEMsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxnQ0FBc0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQyxtREFBbUQ7WUFDbkQsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNLElBQUksQ0FBQyx1Q0FBNkIsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQyxnRUFBZ0U7WUFDaEUsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDekIsSUFBSSxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsQ0FBQyxnQ0FBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQXJDLENBQXFDLENBQUMsRUFBRTtZQUN0RSwrRkFBK0Y7WUFDL0YsZ0RBQWdEO1lBQ2hELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBcEJELG9FQW9CQztJQUVELHdEQUF3RDtJQUN4RCxTQUFnQixrQkFBa0IsQ0FDOUIsTUFBcUIsRUFBRSxRQUFnQixFQUFFLFFBQWdDLEVBQ3pFLG1CQUE0QjtRQUM5QixJQUFNLElBQUksR0FBRywrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEQsSUFBTSxj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QUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUk7WUFDMUUsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRTtnQkFDakQsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELElBQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUMsQ0FBZSxJQUFJLElBQUksQ0FBQztJQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7QWJzb2x1dGVTb3VyY2VTcGFuLCBQYXJzZVNvdXJjZVNwYW59IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7Q2xhc3NEZWNsYXJhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9yZWZsZWN0aW9uJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge2dldFRva2VuQXRQb3NpdGlvbn0gZnJvbSAnLi4vLi4vdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5pbXBvcnQge0Z1bGxUZW1wbGF0ZU1hcHBpbmcsIFNvdXJjZUxvY2F0aW9uLCBUZW1wbGF0ZUlkLCBUZW1wbGF0ZVNvdXJjZU1hcHBpbmd9IGZyb20gJy4uL2FwaSc7XG5cbmltcG9ydCB7aGFzSWdub3JlRm9yRGlhZ25vc3RpY3NNYXJrZXIsIHJlYWRTcGFuQ29tbWVudH0gZnJvbSAnLi9jb21tZW50cyc7XG5pbXBvcnQge2NoZWNrSWZDbGFzc0lzRXhwb3J0ZWQsIGNoZWNrSWZHZW5lcmljVHlwZXNBcmVVbmJvdW5kfSBmcm9tICcuL3RzX3V0aWwnO1xuXG4vKipcbiAqIEFkYXB0ZXIgaW50ZXJmYWNlIHdoaWNoIGFsbG93cyB0aGUgdGVtcGxhdGUgdHlwZS1jaGVja2luZyBkaWFnbm9zdGljcyBjb2RlIHRvIGludGVycHJldCBvZmZzZXRzXG4gKiBpbiBhIFRDQiBhbmQgbWFwIHRoZW0gYmFjayB0byBvcmlnaW5hbCBsb2NhdGlvbnMgaW4gdGhlIHRlbXBsYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlU291cmNlUmVzb2x2ZXIge1xuICBnZXRUZW1wbGF0ZUlkKG5vZGU6IHRzLkNsYXNzRGVjbGFyYXRpb24pOiBUZW1wbGF0ZUlkO1xuXG4gIC8qKlxuICAgKiBGb3IgdGhlIGdpdmVuIHRlbXBsYXRlIGlkLCByZXRyaWV2ZSB0aGUgb3JpZ2luYWwgc291cmNlIG1hcHBpbmcgd2hpY2ggZGVzY3JpYmVzIGhvdyB0aGUgb2Zmc2V0c1xuICAgKiBpbiB0aGUgdGVtcGxhdGUgc2hvdWxkIGJlIGludGVycHJldGVkLlxuICAgKi9cbiAgZ2V0U291cmNlTWFwcGluZyhpZDogVGVtcGxhdGVJZCk6IFRlbXBsYXRlU291cmNlTWFwcGluZztcblxuICAvKipcbiAgICogQ29udmVydCBhbiBhYnNvbHV0ZSBzb3VyY2Ugc3BhbiBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIHRlbXBsYXRlIGlkIGludG8gYSBmdWxsXG4gICAqIGBQYXJzZVNvdXJjZVNwYW5gLiBUaGUgcmV0dXJuZWQgcGFyc2Ugc3BhbiBoYXMgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgaW4gYWRkaXRpb24gdG8gb25seVxuICAgKiBhYnNvbHV0ZSBvZmZzZXRzIGFuZCBnaXZlcyBhY2Nlc3MgdG8gdGhlIG9yaWdpbmFsIHRlbXBsYXRlIHNvdXJjZS5cbiAgICovXG4gIHRvUGFyc2VTb3VyY2VTcGFuKGlkOiBUZW1wbGF0ZUlkLCBzcGFuOiBBYnNvbHV0ZVNvdXJjZVNwYW4pOiBQYXJzZVNvdXJjZVNwYW58bnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVzSW5saW5lVHlwZUNoZWNrQmxvY2soXG4gICAgbm9kZTogQ2xhc3NEZWNsYXJhdGlvbjx0cy5DbGFzc0RlY2xhcmF0aW9uPixcbiAgICB1c2VkUGlwZXM6IE1hcDxzdHJpbmcsIFJlZmVyZW5jZTxDbGFzc0RlY2xhcmF0aW9uPHRzLkNsYXNzRGVjbGFyYXRpb24+Pj4pOiBib29sZWFuIHtcbiAgLy8gSW4gb3JkZXIgdG8gcXVhbGlmeSBmb3IgYSBkZWNsYXJlZCBUQ0IgKG5vdCBpbmxpbmUpIHR3byBjb25kaXRpb25zIG11c3QgYmUgbWV0OlxuICAvLyAxKSB0aGUgY2xhc3MgbXVzdCBiZSBleHBvcnRlZFxuICAvLyAyKSBpdCBtdXN0IG5vdCBoYXZlIGNvbnN0cmFpbmVkIGdlbmVyaWMgdHlwZXNcbiAgaWYgKCFjaGVja0lmQ2xhc3NJc0V4cG9ydGVkKG5vZGUpKSB7XG4gICAgLy8gQ29uZGl0aW9uIDEgaXMgZmFsc2UsIHRoZSBjbGFzcyBpcyBub3QgZXhwb3J0ZWQuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoIWNoZWNrSWZHZW5lcmljVHlwZXNBcmVVbmJvdW5kKG5vZGUpKSB7XG4gICAgLy8gQ29uZGl0aW9uIDIgaXMgZmFsc2UsIHRoZSBjbGFzcyBoYXMgY29uc3RyYWluZWQgZ2VuZXJpYyB0eXBlc1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKEFycmF5LmZyb20odXNlZFBpcGVzLnZhbHVlcygpKVxuICAgICAgICAgICAgICAgICAuc29tZShwaXBlUmVmID0+ICFjaGVja0lmQ2xhc3NJc0V4cG9ydGVkKHBpcGVSZWYubm9kZSkpKSB7XG4gICAgLy8gSWYgb25lIG9mIHRoZSBwaXBlcyB1c2VkIGJ5IHRoZSBjb21wb25lbnQgaXMgbm90IGV4cG9ydGVkLCBhIG5vbi1pbmxpbmUgVENCIHdpbGwgbm90IGJlIGFibGVcbiAgICAvLyB0byBpbXBvcnQgaXQsIHNvIHRoaXMgcmVxdWlyZXMgYW4gaW5saW5lIFRDQi5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqIE1hcHMgYSBzaGltIHBvc2l0aW9uIGJhY2sgdG8gYSB0ZW1wbGF0ZSBsb2NhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wbGF0ZU1hcHBpbmcoXG4gICAgc2hpbVNmOiB0cy5Tb3VyY2VGaWxlLCBwb3NpdGlvbjogbnVtYmVyLCByZXNvbHZlcjogVGVtcGxhdGVTb3VyY2VSZXNvbHZlcixcbiAgICBpc0RpYWdub3N0aWNSZXF1ZXN0OiBib29sZWFuKTogRnVsbFRlbXBsYXRlTWFwcGluZ3xudWxsIHtcbiAgY29uc3Qgbm9kZSA9IGdldFRva2VuQXRQb3NpdGlvbihzaGltU2YsIHBvc2l0aW9uKTtcbiAgY29uc3Qgc291cmNlTG9jYXRpb24gPSBmaW5kU291cmNlTG9jYXRpb24obm9kZSwgc2hpbVNmLCBpc0RpYWdub3N0aWNSZXF1ZXN0KTtcbiAgaWYgKHNvdXJjZUxvY2F0aW9uID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBtYXBwaW5nID0gcmVzb2x2ZXIuZ2V0U291cmNlTWFwcGluZyhzb3VyY2VMb2NhdGlvbi5pZCk7XG4gIGNvbnN0IHNwYW4gPSByZXNvbHZlci50b1BhcnNlU291cmNlU3Bhbihzb3VyY2VMb2NhdGlvbi5pZCwgc291cmNlTG9jYXRpb24uc3Bhbik7XG4gIGlmIChzcGFuID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gVE9ETyhhdHNjb3R0KTogQ29uc2lkZXIgYWRkaW5nIGEgY29udGV4dCBzcGFuIGJ5IHdhbGtpbmcgdXAgZnJvbSBgbm9kZWAgdW50aWwgd2UgZ2V0IGFcbiAgLy8gZGlmZmVyZW50IHNwYW4uXG4gIHJldHVybiB7c291cmNlTG9jYXRpb24sIHRlbXBsYXRlU291cmNlTWFwcGluZzogbWFwcGluZywgc3Bhbn07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kVHlwZUNoZWNrQmxvY2soXG4gICAgZmlsZTogdHMuU291cmNlRmlsZSwgaWQ6IFRlbXBsYXRlSWQsIGlzRGlhZ25vc3RpY1JlcXVlc3Q6IGJvb2xlYW4pOiB0cy5Ob2RlfG51bGwge1xuICBmb3IgKGNvbnN0IHN0bXQgb2YgZmlsZS5zdGF0ZW1lbnRzKSB7XG4gICAgaWYgKHRzLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihzdG10KSAmJiBnZXRUZW1wbGF0ZUlkKHN0bXQsIGZpbGUsIGlzRGlhZ25vc3RpY1JlcXVlc3QpID09PSBpZCkge1xuICAgICAgcmV0dXJuIHN0bXQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFRyYXZlcnNlcyB1cCB0aGUgQVNUIHN0YXJ0aW5nIGZyb20gdGhlIGdpdmVuIG5vZGUgdG8gZXh0cmFjdCB0aGUgc291cmNlIGxvY2F0aW9uIGZyb20gY29tbWVudHNcbiAqIHRoYXQgaGF2ZSBiZWVuIGVtaXR0ZWQgaW50byB0aGUgVENCLiBJZiB0aGUgbm9kZSBkb2VzIG5vdCBleGlzdCB3aXRoaW4gYSBUQ0IsIG9yIGlmIGFuIGlnbm9yZVxuICogbWFya2VyIGNvbW1lbnQgaXMgZm91bmQgdXAgdGhlIHRyZWUgKGFuZCB0aGlzIGlzIHBhcnQgb2YgYSBkaWFnbm9zdGljIHJlcXVlc3QpLCB0aGlzIGZ1bmN0aW9uXG4gKiByZXR1cm5zIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kU291cmNlTG9jYXRpb24oXG4gICAgbm9kZTogdHMuTm9kZSwgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgaXNEaWFnbm9zdGljc1JlcXVlc3Q6IGJvb2xlYW4pOiBTb3VyY2VMb2NhdGlvbnxudWxsIHtcbiAgLy8gU2VhcmNoIGZvciBjb21tZW50cyB1bnRpbCB0aGUgVENCJ3MgZnVuY3Rpb24gZGVjbGFyYXRpb24gaXMgZW5jb3VudGVyZWQuXG4gIHdoaWxlIChub2RlICE9PSB1bmRlZmluZWQgJiYgIXRzLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihub2RlKSkge1xuICAgIGlmIChoYXNJZ25vcmVGb3JEaWFnbm9zdGljc01hcmtlcihub2RlLCBzb3VyY2VGaWxlKSAmJiBpc0RpYWdub3N0aWNzUmVxdWVzdCkge1xuICAgICAgLy8gVGhlcmUncyBhbiBpZ25vcmUgbWFya2VyIG9uIHRoaXMgbm9kZSwgc28gdGhlIGRpYWdub3N0aWMgc2hvdWxkIG5vdCBiZSByZXBvcnRlZC5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNwYW4gPSByZWFkU3BhbkNvbW1lbnQobm9kZSwgc291cmNlRmlsZSk7XG4gICAgaWYgKHNwYW4gIT09IG51bGwpIHtcbiAgICAgIC8vIE9uY2UgdGhlIHBvc2l0aW9uYWwgaW5mb3JtYXRpb24gaGFzIGJlZW4gZXh0cmFjdGVkLCBzZWFyY2ggZnVydGhlciB1cCB0aGUgVENCIHRvIGV4dHJhY3RcbiAgICAgIC8vIHRoZSB1bmlxdWUgaWQgdGhhdCBpcyBhdHRhY2hlZCB3aXRoIHRoZSBUQ0IncyBmdW5jdGlvbiBkZWNsYXJhdGlvbi5cbiAgICAgIGNvbnN0IGlkID0gZ2V0VGVtcGxhdGVJZChub2RlLCBzb3VyY2VGaWxlLCBpc0RpYWdub3N0aWNzUmVxdWVzdCk7XG4gICAgICBpZiAoaWQgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4ge2lkLCBzcGFufTtcbiAgICB9XG5cbiAgICBub2RlID0gbm9kZS5wYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0VGVtcGxhdGVJZChcbiAgICBub2RlOiB0cy5Ob2RlLCBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCBpc0RpYWdub3N0aWNSZXF1ZXN0OiBib29sZWFuKTogVGVtcGxhdGVJZHxudWxsIHtcbiAgLy8gV2FsayB1cCB0byB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gb2YgdGhlIFRDQiwgdGhlIGZpbGUgaW5mb3JtYXRpb24gaXMgYXR0YWNoZWQgdGhlcmUuXG4gIHdoaWxlICghdHMuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKG5vZGUpKSB7XG4gICAgaWYgKGhhc0lnbm9yZUZvckRpYWdub3N0aWNzTWFya2VyKG5vZGUsIHNvdXJjZUZpbGUpICYmIGlzRGlhZ25vc3RpY1JlcXVlc3QpIHtcbiAgICAgIC8vIFRoZXJlJ3MgYW4gaWdub3JlIG1hcmtlciBvbiB0aGlzIG5vZGUsIHNvIHRoZSBkaWFnbm9zdGljIHNob3VsZCBub3QgYmUgcmVwb3J0ZWQuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGUucGFyZW50O1xuXG4gICAgLy8gQmFpbCBvbmNlIHdlIGhhdmUgcmVhY2hlZCB0aGUgcm9vdC5cbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdGFydCA9IG5vZGUuZ2V0RnVsbFN0YXJ0KCk7XG4gIHJldHVybiB0cy5mb3JFYWNoTGVhZGluZ0NvbW1lbnRSYW5nZShzb3VyY2VGaWxlLnRleHQsIHN0YXJ0LCAocG9zLCBlbmQsIGtpbmQpID0+IHtcbiAgICBpZiAoa2luZCAhPT0gdHMuU3ludGF4S2luZC5NdWx0aUxpbmVDb21tZW50VHJpdmlhKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgY29tbWVudFRleHQgPSBzb3VyY2VGaWxlLnRleHQuc3Vic3RyaW5nKHBvcyArIDIsIGVuZCAtIDIpO1xuICAgIHJldHVybiBjb21tZW50VGV4dDtcbiAgfSkgYXMgVGVtcGxhdGVJZCB8fCBudWxsO1xufVxuIl19
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNiX3V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3R5cGVjaGVjay9zcmMvdGNiX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUlILCtCQUFpQztJQUdqQyxrRkFBNkQ7SUFHN0QsbUZBQTBFO0lBQzFFLGlGQUFnRjtJQUNoRiwrR0FBOEQ7SUF1QjlEOzs7OztPQUtHO0lBQ0gsSUFBWSxzQkFnQlg7SUFoQkQsV0FBWSxzQkFBc0I7UUFDaEM7O1dBRUc7UUFDSCwrRUFBVSxDQUFBO1FBRVY7OztXQUdHO1FBQ0gsbUhBQTRCLENBQUE7UUFFNUI7O1dBRUc7UUFDSCxtRUFBSSxDQUFBO0lBQ04sQ0FBQyxFQWhCVyxzQkFBc0IsR0FBdEIsOEJBQXNCLEtBQXRCLDhCQUFzQixRQWdCakM7SUFFRCxTQUFnQiw0QkFBNEIsQ0FDeEMsSUFBMkMsRUFDM0MsU0FBd0UsRUFDeEUsU0FBeUI7UUFDM0Isa0ZBQWtGO1FBQ2xGLGdDQUFnQztRQUNoQyxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLGdDQUFzQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pDLG1EQUFtRDtZQUNuRCxPQUFPLHNCQUFzQixDQUFDLFVBQVUsQ0FBQztTQUMxQzthQUFNLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDbkUsOEZBQThGO1lBQzlGLHNGQUFzRjtZQUN0RixPQUFPLHNCQUFzQixDQUFDLDRCQUE0QixDQUFDO1NBQzVEO2FBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUN6QixJQUFJLENBQUMsVUFBQSxPQUFPLElBQUksT0FBQSxDQUFDLGdDQUFzQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBckMsQ0FB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QyxJQUFJLENBQUMsRUFBRTtZQUN0QyxJQUFJLHdDQUE2QixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxtQkFBbUIsRUFBRTtnQkFDMUUsbUZBQW1GO2dCQUNuRixPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFFbkIsc0NBQXNDO1lBQ3RDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDdEIsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsSUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xDLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJO1lBQzFFLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLEVBQUU7Z0JBQ2pELE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNoRSxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDLENBQWUsSUFBSSxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELFNBQWdCLHNDQUFzQyxDQUNsRCxJQUEyQyxFQUFFLFNBQXlCO1FBQ3hFLCtGQUErRjtRQUMvRixPQUFPLElBQUksNkNBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBSkQsd0ZBSUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtBYnNvbHV0ZVNvdXJjZVNwYW4sIFBhcnNlU291cmNlU3Bhbn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHtDbGFzc0RlY2xhcmF0aW9uLCBSZWZsZWN0aW9uSG9zdH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9yZWZsZWN0aW9uJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge1JlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge2dldFRva2VuQXRQb3NpdGlvbn0gZnJvbSAnLi4vLi4vdXRpbC9zcmMvdHlwZXNjcmlwdCc7XG5pbXBvcnQge0Z1bGxUZW1wbGF0ZU1hcHBpbmcsIFNvdXJjZUxvY2F0aW9uLCBUZW1wbGF0ZUlkLCBUZW1wbGF0ZVNvdXJjZU1hcHBpbmd9IGZyb20gJy4uL2FwaSc7XG5cbmltcG9ydCB7aGFzSWdub3JlRm9yRGlhZ25vc3RpY3NNYXJrZXIsIHJlYWRTcGFuQ29tbWVudH0gZnJvbSAnLi9jb21tZW50cyc7XG5pbXBvcnQge2NoZWNrSWZDbGFzc0lzRXhwb3J0ZWQsIGNoZWNrSWZHZW5lcmljVHlwZXNBcmVVbmJvdW5kfSBmcm9tICcuL3RzX3V0aWwnO1xuaW1wb3J0IHtUeXBlUGFyYW1ldGVyRW1pdHRlcn0gZnJvbSAnLi90eXBlX3BhcmFtZXRlcl9lbWl0dGVyJztcblxuLyoqXG4gKiBBZGFwdGVyIGludGVyZmFjZSB3aGljaCBhbGxvd3MgdGhlIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcgZGlhZ25vc3RpY3MgY29kZSB0byBpbnRlcnByZXQgb2Zmc2V0c1xuICogaW4gYSBUQ0IgYW5kIG1hcCB0aGVtIGJhY2sgdG8gb3JpZ2luYWwgbG9jYXRpb25zIGluIHRoZSB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZVNvdXJjZVJlc29sdmVyIHtcbiAgZ2V0VGVtcGxhdGVJZChub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uKTogVGVtcGxhdGVJZDtcblxuICAvKipcbiAgICogRm9yIHRoZSBnaXZlbiB0ZW1wbGF0ZSBpZCwgcmV0cmlldmUgdGhlIG9yaWdpbmFsIHNvdXJjZSBtYXBwaW5nIHdoaWNoIGRlc2NyaWJlcyBob3cgdGhlIG9mZnNldHNcbiAgICogaW4gdGhlIHRlbXBsYXRlIHNob3VsZCBiZSBpbnRlcnByZXRlZC5cbiAgICovXG4gIGdldFNvdXJjZU1hcHBpbmcoaWQ6IFRlbXBsYXRlSWQpOiBUZW1wbGF0ZVNvdXJjZU1hcHBpbmc7XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYW4gYWJzb2x1dGUgc291cmNlIHNwYW4gYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiB0ZW1wbGF0ZSBpZCBpbnRvIGEgZnVsbFxuICAgKiBgUGFyc2VTb3VyY2VTcGFuYC4gVGhlIHJldHVybmVkIHBhcnNlIHNwYW4gaGFzIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGluIGFkZGl0aW9uIHRvIG9ubHlcbiAgICogYWJzb2x1dGUgb2Zmc2V0cyBhbmQgZ2l2ZXMgYWNjZXNzIHRvIHRoZSBvcmlnaW5hbCB0ZW1wbGF0ZSBzb3VyY2UuXG4gICAqL1xuICB0b1BhcnNlU291cmNlU3BhbihpZDogVGVtcGxhdGVJZCwgc3BhbjogQWJzb2x1dGVTb3VyY2VTcGFuKTogUGFyc2VTb3VyY2VTcGFufG51bGw7XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGNvbXBvbmVudCByZXF1aXJlcyBhbiBpbmxpbmUgdHlwZSBjaGVjayBibG9jay5cbiAqXG4gKiBUaGlzIGlzIG5vdCBhIGJvb2xlYW4gc3RhdGUgYXMgaW5saW5pbmcgbWlnaHQgb25seSBiZSByZXF1aXJlZCB0byBnZXQgdGhlIGJlc3QgcG9zc2libGVcbiAqIHR5cGUtY2hlY2tpbmcsIGJ1dCB0aGUgY29tcG9uZW50IGNvdWxkIHRoZW9yZXRpY2FsbHkgc3RpbGwgYmUgY2hlY2tlZCB3aXRob3V0IGl0LlxuICovXG5leHBvcnQgZW51bSBUY2JJbmxpbmluZ1JlcXVpcmVtZW50IHtcbiAgLyoqXG4gICAqIFRoZXJlIGlzIG5vIHdheSB0byB0eXBlIGNoZWNrIHRoaXMgY29tcG9uZW50IHdpdGhvdXQgaW5saW5pbmcuXG4gICAqL1xuICBNdXN0SW5saW5lLFxuXG4gIC8qKlxuICAgKiBJbmxpbmluZyBzaG91bGQgYmUgdXNlZCBkdWUgdG8gdGhlIGNvbXBvbmVudCdzIGdlbmVyaWMgYm91bmRzLCBidXQgYSBub24taW5saW5pbmcgZmFsbGJhY2tcbiAgICogbWV0aG9kIGNhbiBiZSB1c2VkIGlmIHRoYXQncyBub3QgcG9zc2libGUuXG4gICAqL1xuICBTaG91bGRJbmxpbmVGb3JHZW5lcmljQm91bmRzLFxuXG4gIC8qKlxuICAgKiBUaGVyZSBpcyBubyByZXF1aXJlbWVudCBmb3IgdGhpcyBjb21wb25lbnQncyBUQ0IgdG8gYmUgaW5saW5lZC5cbiAgICovXG4gIE5vbmUsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlc0lubGluZVR5cGVDaGVja0Jsb2NrKFxuICAgIG5vZGU6IENsYXNzRGVjbGFyYXRpb248dHMuQ2xhc3NEZWNsYXJhdGlvbj4sXG4gICAgdXNlZFBpcGVzOiBNYXA8c3RyaW5nLCBSZWZlcmVuY2U8Q2xhc3NEZWNsYXJhdGlvbjx0cy5DbGFzc0RlY2xhcmF0aW9uPj4+LFxuICAgIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpOiBUY2JJbmxpbmluZ1JlcXVpcmVtZW50IHtcbiAgLy8gSW4gb3JkZXIgdG8gcXVhbGlmeSBmb3IgYSBkZWNsYXJlZCBUQ0IgKG5vdCBpbmxpbmUpIHR3byBjb25kaXRpb25zIG11c3QgYmUgbWV0OlxuICAvLyAxKSB0aGUgY2xhc3MgbXVzdCBiZSBleHBvcnRlZFxuICAvLyAyKSBpdCBtdXN0IG5vdCBoYXZlIGNvbnRleHR1YWwgZ2VuZXJpYyB0eXBlIGJvdW5kc1xuICBpZiAoIWNoZWNrSWZDbGFzc0lzRXhwb3J0ZWQobm9kZSkpIHtcbiAgICAvLyBDb25kaXRpb24gMSBpcyBmYWxzZSwgdGhlIGNsYXNzIGlzIG5vdCBleHBvcnRlZC5cbiAgICByZXR1cm4gVGNiSW5saW5pbmdSZXF1aXJlbWVudC5NdXN0SW5saW5lO1xuICB9IGVsc2UgaWYgKCFjaGVja0lmR2VuZXJpY1R5cGVCb3VuZHNBcmVDb250ZXh0RnJlZShub2RlLCByZWZsZWN0b3IpKSB7XG4gICAgLy8gQ29uZGl0aW9uIDIgaXMgZmFsc2UsIHRoZSBjbGFzcyBoYXMgY29uc3RyYWluZWQgZ2VuZXJpYyB0eXBlcy4gSXQgc2hvdWxkIGJlIGNoZWNrZWQgd2l0aCBhblxuICAgIC8vIGlubGluZSBUQ0IgaWYgcG9zc2libGUsIGJ1dCBjYW4gcG90ZW50aWFsbHkgdXNlIGZhbGxiYWNrcyB0byBhdm9pZCBpbmxpbmluZyBpZiBub3QuXG4gICAgcmV0dXJuIFRjYklubGluaW5nUmVxdWlyZW1lbnQuU2hvdWxkSW5saW5lRm9yR2VuZXJpY0JvdW5kcztcbiAgfSBlbHNlIGlmIChBcnJheS5mcm9tKHVzZWRQaXBlcy52YWx1ZXMoKSlcbiAgICAgICAgICAgICAgICAgLnNvbWUocGlwZVJlZiA9PiAhY2hlY2tJZkNsYXNzSXNFeHBvcnRlZChwaXBlUmVmLm5vZGUpKSkge1xuICAgIC8vIElmIG9uZSBvZiB0aGUgcGlwZXMgdXNlZCBieSB0aGUgY29tcG9uZW50IGlzIG5vdCBleHBvcnRlZCwgYSBub24taW5saW5lIFRDQiB3aWxsIG5vdCBiZSBhYmxlXG4gICAgLy8gdG8gaW1wb3J0IGl0LCBzbyB0aGlzIHJlcXVpcmVzIGFuIGlubGluZSBUQ0IuXG4gICAgcmV0dXJuIFRjYklubGluaW5nUmVxdWlyZW1lbnQuTXVzdElubGluZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gVGNiSW5saW5pbmdSZXF1aXJlbWVudC5Ob25lO1xuICB9XG59XG5cbi8qKiBNYXBzIGEgc2hpbSBwb3NpdGlvbiBiYWNrIHRvIGEgdGVtcGxhdGUgbG9jYXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcGxhdGVNYXBwaW5nKFxuICAgIHNoaW1TZjogdHMuU291cmNlRmlsZSwgcG9zaXRpb246IG51bWJlciwgcmVzb2x2ZXI6IFRlbXBsYXRlU291cmNlUmVzb2x2ZXIsXG4gICAgaXNEaWFnbm9zdGljUmVxdWVzdDogYm9vbGVhbik6IEZ1bGxUZW1wbGF0ZU1hcHBpbmd8bnVsbCB7XG4gIGNvbnN0IG5vZGUgPSBnZXRUb2tlbkF0UG9zaXRpb24oc2hpbVNmLCBwb3NpdGlvbik7XG4gIGNvbnN0IHNvdXJjZUxvY2F0aW9uID0gZmluZFNvdXJjZUxvY2F0aW9uKG5vZGUsIHNoaW1TZiwgaXNEaWFnbm9zdGljUmVxdWVzdCk7XG4gIGlmIChzb3VyY2VMb2NhdGlvbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbWFwcGluZyA9IHJlc29sdmVyLmdldFNvdXJjZU1hcHBpbmcoc291cmNlTG9jYXRpb24uaWQpO1xuICBjb25zdCBzcGFuID0gcmVzb2x2ZXIudG9QYXJzZVNvdXJjZVNwYW4oc291cmNlTG9jYXRpb24uaWQsIHNvdXJjZUxvY2F0aW9uLnNwYW4pO1xuICBpZiAoc3BhbiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIFRPRE8oYXRzY290dCk6IENvbnNpZGVyIGFkZGluZyBhIGNvbnRleHQgc3BhbiBieSB3YWxraW5nIHVwIGZyb20gYG5vZGVgIHVudGlsIHdlIGdldCBhXG4gIC8vIGRpZmZlcmVudCBzcGFuLlxuICByZXR1cm4ge3NvdXJjZUxvY2F0aW9uLCB0ZW1wbGF0ZVNvdXJjZU1hcHBpbmc6IG1hcHBpbmcsIHNwYW59O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFR5cGVDaGVja0Jsb2NrKFxuICAgIGZpbGU6IHRzLlNvdXJjZUZpbGUsIGlkOiBUZW1wbGF0ZUlkLCBpc0RpYWdub3N0aWNSZXF1ZXN0OiBib29sZWFuKTogdHMuTm9kZXxudWxsIHtcbiAgZm9yIChjb25zdCBzdG10IG9mIGZpbGUuc3RhdGVtZW50cykge1xuICAgIGlmICh0cy5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oc3RtdCkgJiYgZ2V0VGVtcGxhdGVJZChzdG10LCBmaWxlLCBpc0RpYWdub3N0aWNSZXF1ZXN0KSA9PT0gaWQpIHtcbiAgICAgIHJldHVybiBzdG10O1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBUcmF2ZXJzZXMgdXAgdGhlIEFTVCBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiBub2RlIHRvIGV4dHJhY3QgdGhlIHNvdXJjZSBsb2NhdGlvbiBmcm9tIGNvbW1lbnRzXG4gKiB0aGF0IGhhdmUgYmVlbiBlbWl0dGVkIGludG8gdGhlIFRDQi4gSWYgdGhlIG5vZGUgZG9lcyBub3QgZXhpc3Qgd2l0aGluIGEgVENCLCBvciBpZiBhbiBpZ25vcmVcbiAqIG1hcmtlciBjb21tZW50IGlzIGZvdW5kIHVwIHRoZSB0cmVlIChhbmQgdGhpcyBpcyBwYXJ0IG9mIGEgZGlhZ25vc3RpYyByZXF1ZXN0KSwgdGhpcyBmdW5jdGlvblxuICogcmV0dXJucyBudWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFNvdXJjZUxvY2F0aW9uKFxuICAgIG5vZGU6IHRzLk5vZGUsIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIGlzRGlhZ25vc3RpY3NSZXF1ZXN0OiBib29sZWFuKTogU291cmNlTG9jYXRpb258bnVsbCB7XG4gIC8vIFNlYXJjaCBmb3IgY29tbWVudHMgdW50aWwgdGhlIFRDQidzIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGlzIGVuY291bnRlcmVkLlxuICB3aGlsZSAobm9kZSAhPT0gdW5kZWZpbmVkICYmICF0cy5pc0Z1bmN0aW9uRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICBpZiAoaGFzSWdub3JlRm9yRGlhZ25vc3RpY3NNYXJrZXIobm9kZSwgc291cmNlRmlsZSkgJiYgaXNEaWFnbm9zdGljc1JlcXVlc3QpIHtcbiAgICAgIC8vIFRoZXJlJ3MgYW4gaWdub3JlIG1hcmtlciBvbiB0aGlzIG5vZGUsIHNvIHRoZSBkaWFnbm9zdGljIHNob3VsZCBub3QgYmUgcmVwb3J0ZWQuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzcGFuID0gcmVhZFNwYW5Db21tZW50KG5vZGUsIHNvdXJjZUZpbGUpO1xuICAgIGlmIChzcGFuICE9PSBudWxsKSB7XG4gICAgICAvLyBPbmNlIHRoZSBwb3NpdGlvbmFsIGluZm9ybWF0aW9uIGhhcyBiZWVuIGV4dHJhY3RlZCwgc2VhcmNoIGZ1cnRoZXIgdXAgdGhlIFRDQiB0byBleHRyYWN0XG4gICAgICAvLyB0aGUgdW5pcXVlIGlkIHRoYXQgaXMgYXR0YWNoZWQgd2l0aCB0aGUgVENCJ3MgZnVuY3Rpb24gZGVjbGFyYXRpb24uXG4gICAgICBjb25zdCBpZCA9IGdldFRlbXBsYXRlSWQobm9kZSwgc291cmNlRmlsZSwgaXNEaWFnbm9zdGljc1JlcXVlc3QpO1xuICAgICAgaWYgKGlkID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtpZCwgc3Bhbn07XG4gICAgfVxuXG4gICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldFRlbXBsYXRlSWQoXG4gICAgbm9kZTogdHMuTm9kZSwgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgaXNEaWFnbm9zdGljUmVxdWVzdDogYm9vbGVhbik6IFRlbXBsYXRlSWR8bnVsbCB7XG4gIC8vIFdhbGsgdXAgdG8gdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG9mIHRoZSBUQ0IsIHRoZSBmaWxlIGluZm9ybWF0aW9uIGlzIGF0dGFjaGVkIHRoZXJlLlxuICB3aGlsZSAoIXRzLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihub2RlKSkge1xuICAgIGlmIChoYXNJZ25vcmVGb3JEaWFnbm9zdGljc01hcmtlcihub2RlLCBzb3VyY2VGaWxlKSAmJiBpc0RpYWdub3N0aWNSZXF1ZXN0KSB7XG4gICAgICAvLyBUaGVyZSdzIGFuIGlnbm9yZSBtYXJrZXIgb24gdGhpcyBub2RlLCBzbyB0aGUgZGlhZ25vc3RpYyBzaG91bGQgbm90IGJlIHJlcG9ydGVkLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIG5vZGUgPSBub2RlLnBhcmVudDtcblxuICAgIC8vIEJhaWwgb25jZSB3ZSBoYXZlIHJlYWNoZWQgdGhlIHJvb3QuXG4gICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RhcnQgPSBub2RlLmdldEZ1bGxTdGFydCgpO1xuICByZXR1cm4gdHMuZm9yRWFjaExlYWRpbmdDb21tZW50UmFuZ2Uoc291cmNlRmlsZS50ZXh0LCBzdGFydCwgKHBvcywgZW5kLCBraW5kKSA9PiB7XG4gICAgaWYgKGtpbmQgIT09IHRzLlN5bnRheEtpbmQuTXVsdGlMaW5lQ29tbWVudFRyaXZpYSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1lbnRUZXh0ID0gc291cmNlRmlsZS50ZXh0LnN1YnN0cmluZyhwb3MgKyAyLCBlbmQgLSAyKTtcbiAgICByZXR1cm4gY29tbWVudFRleHQ7XG4gIH0pIGFzIFRlbXBsYXRlSWQgfHwgbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSWZHZW5lcmljVHlwZUJvdW5kc0FyZUNvbnRleHRGcmVlKFxuICAgIG5vZGU6IENsYXNzRGVjbGFyYXRpb248dHMuQ2xhc3NEZWNsYXJhdGlvbj4sIHJlZmxlY3RvcjogUmVmbGVjdGlvbkhvc3QpOiBib29sZWFuIHtcbiAgLy8gR2VuZXJpYyB0eXBlIHBhcmFtZXRlcnMgYXJlIGNvbnNpZGVyZWQgY29udGV4dCBmcmVlIGlmIHRoZXkgY2FuIGJlIGVtaXR0ZWQgaW50byBhbnkgY29udGV4dC5cbiAgcmV0dXJuIG5ldyBUeXBlUGFyYW1ldGVyRW1pdHRlcihub2RlLnR5cGVQYXJhbWV0ZXJzLCByZWZsZWN0b3IpLmNhbkVtaXQoKTtcbn1cbiJdfQ==
|
|
@@ -14,6 +14,31 @@ import { TemplateId, TypeCheckableDirectiveMeta, TypeCheckBlockMetadata } from '
|
|
|
14
14
|
import { DomSchemaChecker } from './dom';
|
|
15
15
|
import { Environment } from './environment';
|
|
16
16
|
import { OutOfBandDiagnosticRecorder } from './oob';
|
|
17
|
+
/**
|
|
18
|
+
* Controls how generics for the component context class will be handled during TCB generation.
|
|
19
|
+
*/
|
|
20
|
+
export declare enum TcbGenericContextBehavior {
|
|
21
|
+
/**
|
|
22
|
+
* References to generic parameter bounds will be emitted via the `TypeParameterEmitter`.
|
|
23
|
+
*
|
|
24
|
+
* The caller must verify that all parameter bounds are emittable in order to use this mode.
|
|
25
|
+
*/
|
|
26
|
+
UseEmitter = 0,
|
|
27
|
+
/**
|
|
28
|
+
* Generic parameter declarations will be copied directly from the `ts.ClassDeclaration` of the
|
|
29
|
+
* component class.
|
|
30
|
+
*
|
|
31
|
+
* The caller must only use the generated TCB code in a context where such copies will still be
|
|
32
|
+
* valid, such as an inline type check block.
|
|
33
|
+
*/
|
|
34
|
+
CopyClassNodes = 1,
|
|
35
|
+
/**
|
|
36
|
+
* Any generic parameters for the component context class will be set to `any`.
|
|
37
|
+
*
|
|
38
|
+
* Produces a less useful type, but is always safe to use.
|
|
39
|
+
*/
|
|
40
|
+
FallbackToAny = 2
|
|
41
|
+
}
|
|
17
42
|
/**
|
|
18
43
|
* Given a `ts.ClassDeclaration` for a component, and metadata regarding that component, compose a
|
|
19
44
|
* "type check block" function.
|
|
@@ -35,8 +60,10 @@ import { OutOfBandDiagnosticRecorder } from './oob';
|
|
|
35
60
|
* and bindings.
|
|
36
61
|
* @param oobRecorder used to record errors regarding template elements which could not be correctly
|
|
37
62
|
* translated into types during TCB generation.
|
|
63
|
+
* @param genericContextBehavior controls how generic parameters (especially parameters with generic
|
|
64
|
+
* bounds) will be referenced from the generated TCB code.
|
|
38
65
|
*/
|
|
39
|
-
export declare function generateTypeCheckBlock(env: Environment, ref: Reference<ClassDeclaration<ts.ClassDeclaration>>, name: ts.Identifier, meta: TypeCheckBlockMetadata, domSchemaChecker: DomSchemaChecker, oobRecorder: OutOfBandDiagnosticRecorder): ts.FunctionDeclaration;
|
|
66
|
+
export declare function generateTypeCheckBlock(env: Environment, ref: Reference<ClassDeclaration<ts.ClassDeclaration>>, name: ts.Identifier, meta: TypeCheckBlockMetadata, domSchemaChecker: DomSchemaChecker, oobRecorder: OutOfBandDiagnosticRecorder, genericContextBehavior: TcbGenericContextBehavior): ts.FunctionDeclaration;
|
|
40
67
|
/**
|
|
41
68
|
* A code generation operation that's involved in the construction of a Type Check Block.
|
|
42
69
|
*
|