@angular/compiler-cli 12.2.3 → 12.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/linker/src/file_linker/partial_linkers/partial_linker_selector.js +2 -2
  2. package/ngcc/src/host/delegating_host.d.ts +1 -1
  3. package/ngcc/src/host/delegating_host.js +3 -3
  4. package/ngcc/src/packages/build_marker.d.ts +1 -1
  5. package/ngcc/src/packages/build_marker.js +1 -1
  6. package/package.json +2 -2
  7. package/src/ngtsc/core/src/compiler.js +7 -3
  8. package/src/ngtsc/diagnostics/src/error_code.d.ts +9 -0
  9. package/src/ngtsc/diagnostics/src/error_code.js +10 -1
  10. package/src/ngtsc/reflection/src/host.d.ts +6 -6
  11. package/src/ngtsc/reflection/src/host.js +1 -1
  12. package/src/ngtsc/reflection/src/typescript.d.ts +3 -3
  13. package/src/ngtsc/reflection/src/typescript.js +15 -16
  14. package/src/ngtsc/typecheck/extended/api/api.d.ts +18 -4
  15. package/src/ngtsc/typecheck/extended/api/api.js +106 -2
  16. package/src/ngtsc/typecheck/extended/checks/invalid_banana_in_box/index.d.ts +22 -0
  17. package/src/ngtsc/typecheck/extended/checks/invalid_banana_in_box/index.js +52 -0
  18. package/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable/index.d.ts +23 -0
  19. package/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable/index.js +64 -0
  20. package/src/ngtsc/typecheck/extended/src/extended_template_checker.d.ts +1 -2
  21. package/src/ngtsc/typecheck/extended/src/extended_template_checker.js +4 -74
  22. package/src/ngtsc/typecheck/src/type_parameter_emitter.d.ts +1 -1
  23. package/src/ngtsc/typecheck/src/type_parameter_emitter.js +11 -7
  24. package/src/transformers/downlevel_decorators_transform.js +85 -91
  25. package/src/version.js +1 -1
  26. package/src/ngtsc/typecheck/extended/src/template_checks/invalid_banana_in_box/index.d.ts +0 -21
  27. package/src/ngtsc/typecheck/extended/src/template_checks/invalid_banana_in_box/index.js +0 -83
@@ -0,0 +1,23 @@
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
+ /// <amd-module name="@angular/compiler-cli/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable" />
9
+ import { AST, TmplAstNode } from '@angular/compiler';
10
+ import * as ts from 'typescript';
11
+ import { ErrorCode } from '../../../../diagnostics';
12
+ import { NgTemplateDiagnostic } from '../../../api';
13
+ import { TemplateCheckWithVisitor, TemplateContext } from '../../api';
14
+ /**
15
+ * Ensures the left side of a nullish coalescing operation is nullable.
16
+ * Returns diagnostics for the cases where the operator is useless.
17
+ * This check should only be use if `strictNullChecks` is enabled,
18
+ * otherwise it would produce inaccurate results.
19
+ */
20
+ export declare class NullishCoalescingNotNullableCheck extends TemplateCheckWithVisitor<ErrorCode.NULLISH_COALESCING_NOT_NULLABLE> {
21
+ code: ErrorCode.NULLISH_COALESCING_NOT_NULLABLE;
22
+ visitNode(ctx: TemplateContext, component: ts.ClassDeclaration, node: TmplAstNode | AST): NgTemplateDiagnostic<ErrorCode.NULLISH_COALESCING_NOT_NULLABLE>[];
23
+ }
@@ -0,0 +1,64 @@
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
+ (function (factory) {
9
+ if (typeof module === "object" && typeof module.exports === "object") {
10
+ var v = factory(require, exports);
11
+ if (v !== undefined) module.exports = v;
12
+ }
13
+ else if (typeof define === "function" && define.amd) {
14
+ define("@angular/compiler-cli/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable", ["require", "exports", "tslib", "@angular/compiler", "typescript", "@angular/compiler-cli/src/ngtsc/diagnostics", "@angular/compiler-cli/src/ngtsc/typecheck/api", "@angular/compiler-cli/src/ngtsc/typecheck/extended/api"], factory);
15
+ }
16
+ })(function (require, exports) {
17
+ "use strict";
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.NullishCoalescingNotNullableCheck = void 0;
20
+ var tslib_1 = require("tslib");
21
+ var compiler_1 = require("@angular/compiler");
22
+ var ts = require("typescript");
23
+ var diagnostics_1 = require("@angular/compiler-cli/src/ngtsc/diagnostics");
24
+ var api_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/api");
25
+ var api_2 = require("@angular/compiler-cli/src/ngtsc/typecheck/extended/api");
26
+ /**
27
+ * Ensures the left side of a nullish coalescing operation is nullable.
28
+ * Returns diagnostics for the cases where the operator is useless.
29
+ * This check should only be use if `strictNullChecks` is enabled,
30
+ * otherwise it would produce inaccurate results.
31
+ */
32
+ var NullishCoalescingNotNullableCheck = /** @class */ (function (_super) {
33
+ tslib_1.__extends(NullishCoalescingNotNullableCheck, _super);
34
+ function NullishCoalescingNotNullableCheck() {
35
+ var _this = _super !== null && _super.apply(this, arguments) || this;
36
+ _this.code = diagnostics_1.ErrorCode.NULLISH_COALESCING_NOT_NULLABLE;
37
+ return _this;
38
+ }
39
+ NullishCoalescingNotNullableCheck.prototype.visitNode = function (ctx, component, node) {
40
+ if (!(node instanceof compiler_1.Binary) || node.operation !== '??')
41
+ return [];
42
+ var symbolLeft = ctx.templateTypeChecker.getSymbolOfNode(node.left, component);
43
+ if (symbolLeft === null || symbolLeft.kind !== api_1.SymbolKind.Expression) {
44
+ return [];
45
+ }
46
+ var typeLeft = symbolLeft.tsType;
47
+ // If the left operand's type is different from its non-nullable self, then it must
48
+ // contain a null or undefined so this nullish coalescing operator is useful. No diagnostic to
49
+ // report.
50
+ if (typeLeft.getNonNullableType() !== typeLeft)
51
+ return [];
52
+ var symbol = ctx.templateTypeChecker.getSymbolOfNode(node, component);
53
+ if (symbol.kind !== api_1.SymbolKind.Expression) {
54
+ return [];
55
+ }
56
+ var span = ctx.templateTypeChecker.getTemplateMappingAtShimLocation(symbol.shimLocation).span;
57
+ var diagnostic = ctx.templateTypeChecker.makeTemplateDiagnostic(component, span, ts.DiagnosticCategory.Warning, diagnostics_1.ErrorCode.NULLISH_COALESCING_NOT_NULLABLE, "The left side of this nullish coalescing operation does not include 'null' or 'undefined' in its type, therefore the '??' operator can be safely removed.");
58
+ return [diagnostic];
59
+ };
60
+ return NullishCoalescingNotNullableCheck;
61
+ }(api_2.TemplateCheckWithVisitor));
62
+ exports.NullishCoalescingNotNullableCheck = NullishCoalescingNotNullableCheck;
63
+ });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25ndHNjL3R5cGVjaGVjay9leHRlbmRlZC9jaGVja3MvbnVsbGlzaF9jb2FsZXNjaW5nX25vdF9udWxsYWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7O0lBRUgsOENBQTJEO0lBQzNELCtCQUFpQztJQUVqQywyRUFBa0Q7SUFDbEQscUVBQThEO0lBQzlELDhFQUFvRTtJQUVwRTs7Ozs7T0FLRztJQUNIO1FBQ0ksNkRBQW1FO1FBRHZFO1lBQUEscUVBNkJDO1lBM0JVLFVBQUksR0FBRyx1QkFBUyxDQUFDLCtCQUF3QyxDQUFDOztRQTJCckUsQ0FBQztRQXpCVSxxREFBUyxHQUFsQixVQUFtQixHQUFvQixFQUFFLFNBQThCLEVBQUUsSUFBcUI7WUFFNUYsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLGlCQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUk7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFFcEUsSUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksVUFBVSxLQUFLLElBQUksSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGdCQUFVLENBQUMsVUFBVSxFQUFFO2dCQUNwRSxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsSUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxtRkFBbUY7WUFDbkYsOEZBQThGO1lBQzlGLFVBQVU7WUFDVixJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFFMUQsSUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFFLENBQUM7WUFDekUsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGdCQUFVLENBQUMsVUFBVSxFQUFFO2dCQUN6QyxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsSUFBTSxJQUFJLEdBQ04sR0FBRyxDQUFDLG1CQUFtQixDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUUsQ0FBQyxJQUFJLENBQUM7WUFDeEYsSUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUM3RCxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsdUJBQVMsQ0FBQywrQkFBK0IsRUFDekYsMkpBQTJKLENBQUMsQ0FBQztZQUNqSyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNILHdDQUFDO0lBQUQsQ0FBQyxBQTdCRCxDQUNJLDhCQUF3QixHQTRCM0I7SUE3QlksOEVBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7QVNULCBCaW5hcnksIFRtcGxBc3ROb2RlfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtFcnJvckNvZGV9IGZyb20gJy4uLy4uLy4uLy4uL2RpYWdub3N0aWNzJztcbmltcG9ydCB7TmdUZW1wbGF0ZURpYWdub3N0aWMsIFN5bWJvbEtpbmR9IGZyb20gJy4uLy4uLy4uL2FwaSc7XG5pbXBvcnQge1RlbXBsYXRlQ2hlY2tXaXRoVmlzaXRvciwgVGVtcGxhdGVDb250ZXh0fSBmcm9tICcuLi8uLi9hcGknO1xuXG4vKipcbiAqIEVuc3VyZXMgdGhlIGxlZnQgc2lkZSBvZiBhIG51bGxpc2ggY29hbGVzY2luZyBvcGVyYXRpb24gaXMgbnVsbGFibGUuXG4gKiBSZXR1cm5zIGRpYWdub3N0aWNzIGZvciB0aGUgY2FzZXMgd2hlcmUgdGhlIG9wZXJhdG9yIGlzIHVzZWxlc3MuXG4gKiBUaGlzIGNoZWNrIHNob3VsZCBvbmx5IGJlIHVzZSBpZiBgc3RyaWN0TnVsbENoZWNrc2AgaXMgZW5hYmxlZCxcbiAqIG90aGVyd2lzZSBpdCB3b3VsZCBwcm9kdWNlIGluYWNjdXJhdGUgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIE51bGxpc2hDb2FsZXNjaW5nTm90TnVsbGFibGVDaGVjayBleHRlbmRzXG4gICAgVGVtcGxhdGVDaGVja1dpdGhWaXNpdG9yPEVycm9yQ29kZS5OVUxMSVNIX0NPQUxFU0NJTkdfTk9UX05VTExBQkxFPiB7XG4gIG92ZXJyaWRlIGNvZGUgPSBFcnJvckNvZGUuTlVMTElTSF9DT0FMRVNDSU5HX05PVF9OVUxMQUJMRSBhcyBjb25zdDtcblxuICBvdmVycmlkZSB2aXNpdE5vZGUoY3R4OiBUZW1wbGF0ZUNvbnRleHQsIGNvbXBvbmVudDogdHMuQ2xhc3NEZWNsYXJhdGlvbiwgbm9kZTogVG1wbEFzdE5vZGV8QVNUKTpcbiAgICAgIE5nVGVtcGxhdGVEaWFnbm9zdGljPEVycm9yQ29kZS5OVUxMSVNIX0NPQUxFU0NJTkdfTk9UX05VTExBQkxFPltdIHtcbiAgICBpZiAoIShub2RlIGluc3RhbmNlb2YgQmluYXJ5KSB8fCBub2RlLm9wZXJhdGlvbiAhPT0gJz8/JykgcmV0dXJuIFtdO1xuXG4gICAgY29uc3Qgc3ltYm9sTGVmdCA9IGN0eC50ZW1wbGF0ZVR5cGVDaGVja2VyLmdldFN5bWJvbE9mTm9kZShub2RlLmxlZnQsIGNvbXBvbmVudCk7XG4gICAgaWYgKHN5bWJvbExlZnQgPT09IG51bGwgfHwgc3ltYm9sTGVmdC5raW5kICE9PSBTeW1ib2xLaW5kLkV4cHJlc3Npb24pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgdHlwZUxlZnQgPSBzeW1ib2xMZWZ0LnRzVHlwZTtcbiAgICAvLyBJZiB0aGUgbGVmdCBvcGVyYW5kJ3MgdHlwZSBpcyBkaWZmZXJlbnQgZnJvbSBpdHMgbm9uLW51bGxhYmxlIHNlbGYsIHRoZW4gaXQgbXVzdFxuICAgIC8vIGNvbnRhaW4gYSBudWxsIG9yIHVuZGVmaW5lZCBzbyB0aGlzIG51bGxpc2ggY29hbGVzY2luZyBvcGVyYXRvciBpcyB1c2VmdWwuIE5vIGRpYWdub3N0aWMgdG9cbiAgICAvLyByZXBvcnQuXG4gICAgaWYgKHR5cGVMZWZ0LmdldE5vbk51bGxhYmxlVHlwZSgpICE9PSB0eXBlTGVmdCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3Qgc3ltYm9sID0gY3R4LnRlbXBsYXRlVHlwZUNoZWNrZXIuZ2V0U3ltYm9sT2ZOb2RlKG5vZGUsIGNvbXBvbmVudCkhO1xuICAgIGlmIChzeW1ib2wua2luZCAhPT0gU3ltYm9sS2luZC5FeHByZXNzaW9uKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHNwYW4gPVxuICAgICAgICBjdHgudGVtcGxhdGVUeXBlQ2hlY2tlci5nZXRUZW1wbGF0ZU1hcHBpbmdBdFNoaW1Mb2NhdGlvbihzeW1ib2wuc2hpbUxvY2F0aW9uKSEuc3BhbjtcbiAgICBjb25zdCBkaWFnbm9zdGljID0gY3R4LnRlbXBsYXRlVHlwZUNoZWNrZXIubWFrZVRlbXBsYXRlRGlhZ25vc3RpYyhcbiAgICAgICAgY29tcG9uZW50LCBzcGFuLCB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuV2FybmluZywgRXJyb3JDb2RlLk5VTExJU0hfQ09BTEVTQ0lOR19OT1RfTlVMTEFCTEUsXG4gICAgICAgIGBUaGUgbGVmdCBzaWRlIG9mIHRoaXMgbnVsbGlzaCBjb2FsZXNjaW5nIG9wZXJhdGlvbiBkb2VzIG5vdCBpbmNsdWRlICdudWxsJyBvciAndW5kZWZpbmVkJyBpbiBpdHMgdHlwZSwgdGhlcmVmb3JlIHRoZSAnPz8nIG9wZXJhdG9yIGNhbiBiZSBzYWZlbHkgcmVtb3ZlZC5gKTtcbiAgICByZXR1cm4gW2RpYWdub3N0aWNdO1xuICB9XG59XG4iXX0=
@@ -11,9 +11,8 @@ import { ErrorCode } from '../../../diagnostics';
11
11
  import { TemplateDiagnostic, TemplateTypeChecker } from '../../api';
12
12
  import { ExtendedTemplateChecker, TemplateCheck } from '../api';
13
13
  export declare class ExtendedTemplateCheckerImpl implements ExtendedTemplateChecker {
14
- private readonly templateTypeChecker;
15
- private readonly typeChecker;
16
14
  private readonly templateChecks;
15
+ private ctx;
17
16
  constructor(templateTypeChecker: TemplateTypeChecker, typeChecker: ts.TypeChecker, templateChecks: TemplateCheck<ErrorCode>[]);
18
17
  getDiagnosticsForComponent(component: ts.ClassDeclaration): TemplateDiagnostic[];
19
18
  }
@@ -20,13 +20,12 @@
20
20
  var tslib_1 = require("tslib");
21
21
  var ExtendedTemplateCheckerImpl = /** @class */ (function () {
22
22
  function ExtendedTemplateCheckerImpl(templateTypeChecker, typeChecker, templateChecks) {
23
- this.templateTypeChecker = templateTypeChecker;
24
- this.typeChecker = typeChecker;
25
23
  this.templateChecks = templateChecks;
24
+ this.ctx = { templateTypeChecker: templateTypeChecker, typeChecker: typeChecker };
26
25
  }
27
26
  ExtendedTemplateCheckerImpl.prototype.getDiagnosticsForComponent = function (component) {
28
27
  var e_1, _a;
29
- var template = this.templateTypeChecker.getTemplate(component);
28
+ var template = this.ctx.templateTypeChecker.getTemplate(component);
30
29
  // Skip checks if component has no template. This can happen if the user writes a
31
30
  // `@Component()` but doesn't add the template, could happen in the language service
32
31
  // when users are in the middle of typing code.
@@ -34,15 +33,10 @@
34
33
  return [];
35
34
  }
36
35
  var diagnostics = [];
37
- var ctx = {
38
- templateTypeChecker: this.templateTypeChecker,
39
- typeChecker: this.typeChecker,
40
- component: component
41
- };
42
36
  try {
43
37
  for (var _b = tslib_1.__values(this.templateChecks), _c = _b.next(); !_c.done; _c = _b.next()) {
44
38
  var check = _c.value;
45
- diagnostics.push.apply(diagnostics, tslib_1.__spreadArray([], tslib_1.__read(deduplicateDiagnostics(check.run(ctx, template)))));
39
+ diagnostics.push.apply(diagnostics, tslib_1.__spreadArray([], tslib_1.__read(check.run(this.ctx, component, template))));
46
40
  }
47
41
  }
48
42
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
@@ -57,69 +51,5 @@
57
51
  return ExtendedTemplateCheckerImpl;
58
52
  }());
59
53
  exports.ExtendedTemplateCheckerImpl = ExtendedTemplateCheckerImpl;
60
- // Filter out duplicated diagnostics, this is possible due to the way the compiler
61
- // handles desugaring and produces `AST`s. Ex.
62
- //
63
- // ```
64
- // <div *ngIf="true" (foo)="bar">test</div>
65
- // ```
66
- //
67
- // Would result in the following AST:
68
- //
69
- // ```
70
- // Template {
71
- // outputs: [
72
- // BoundEvent {
73
- // name: 'foo',
74
- // /.../
75
- // }
76
- // ],
77
- // children: [
78
- // Element {
79
- // outputs: [
80
- // BoundEvent {
81
- // name: 'foo',
82
- // /.../
83
- // }
84
- // ]
85
- // }
86
- // ],
87
- // /.../
88
- // }
89
- // ```
90
- //
91
- // In this case a duplicated diagnostic could be generated for the output `foo`.
92
- // TODO(danieltrevino): handle duplicated diagnostics when they are being generated
93
- // to avoid extra work (could be directly in the visitor).
94
- // https://github.com/angular/angular/pull/42984#discussion_r684823926
95
- function deduplicateDiagnostics(diagnostics) {
96
- var e_2, _a;
97
- var result = [];
98
- var _loop_1 = function (newDiag) {
99
- var isDuplicateDiag = result.some(function (existingDiag) { return areDiagnosticsEqual(newDiag, existingDiag); });
100
- if (!isDuplicateDiag) {
101
- result.push(newDiag);
102
- }
103
- };
104
- try {
105
- for (var diagnostics_1 = tslib_1.__values(diagnostics), diagnostics_1_1 = diagnostics_1.next(); !diagnostics_1_1.done; diagnostics_1_1 = diagnostics_1.next()) {
106
- var newDiag = diagnostics_1_1.value;
107
- _loop_1(newDiag);
108
- }
109
- }
110
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
111
- finally {
112
- try {
113
- if (diagnostics_1_1 && !diagnostics_1_1.done && (_a = diagnostics_1.return)) _a.call(diagnostics_1);
114
- }
115
- finally { if (e_2) throw e_2.error; }
116
- }
117
- return result;
118
- }
119
- function areDiagnosticsEqual(first, second) {
120
- var _a, _b;
121
- return ((_a = first.file) === null || _a === void 0 ? void 0 : _a.fileName) === ((_b = second.file) === null || _b === void 0 ? void 0 : _b.fileName) && first.start === second.start &&
122
- first.length === second.length && first.code === second.code;
123
- }
124
54
  });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWRfdGVtcGxhdGVfY2hlY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL2V4dGVuZGVkL3NyYy9leHRlbmRlZF90ZW1wbGF0ZV9jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7SUFRSDtRQUNFLHFDQUNxQixtQkFBd0MsRUFDeEMsV0FBMkIsRUFDM0IsY0FBMEM7WUFGMUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtZQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7WUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQTRCO1FBQUcsQ0FBQztRQUVuRSxnRUFBMEIsR0FBMUIsVUFBMkIsU0FBOEI7O1lBQ3ZELElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakUsaUZBQWlGO1lBQ2pGLG9GQUFvRjtZQUNwRiwrQ0FBK0M7WUFDL0MsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUNyQixPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsSUFBTSxXQUFXLEdBQXlCLEVBQUUsQ0FBQztZQUU3QyxJQUFNLEdBQUcsR0FBRztnQkFDVixtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO2dCQUM3QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLFNBQVMsV0FBQTthQUNTLENBQUM7O2dCQUVyQixLQUFvQixJQUFBLEtBQUEsaUJBQUEsSUFBSSxDQUFDLGNBQWMsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBcEMsSUFBTSxLQUFLLFdBQUE7b0JBQ2QsV0FBVyxDQUFDLElBQUksT0FBaEIsV0FBVywyQ0FBUyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFFO2lCQUN2RTs7Ozs7Ozs7O1lBRUQsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUNILGtDQUFDO0lBQUQsQ0FBQyxBQTVCRCxJQTRCQztJQTVCWSxrRUFBMkI7SUErQnhDLGtGQUFrRjtJQUNsRiw4Q0FBOEM7SUFDOUMsRUFBRTtJQUNGLE1BQU07SUFDTiwyQ0FBMkM7SUFDM0MsTUFBTTtJQUNOLEVBQUU7SUFDRixxQ0FBcUM7SUFDckMsRUFBRTtJQUNGLE1BQU07SUFDTixhQUFhO0lBQ2IsZUFBZTtJQUNmLGtCQUFrQjtJQUNsQixvQkFBb0I7SUFDcEIsYUFBYTtJQUNiLE9BQU87SUFDUCxPQUFPO0lBQ1AsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLHlCQUF5QjtJQUN6QixrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLFVBQVU7SUFDVixRQUFRO0lBQ1IsT0FBTztJQUNQLFVBQVU7SUFDVixJQUFJO0lBQ0osTUFBTTtJQUNOLEVBQUU7SUFDRixnRkFBZ0Y7SUFDaEYsbUZBQW1GO0lBQ25GLDBEQUEwRDtJQUMxRCxzRUFBc0U7SUFDdEUsU0FBUyxzQkFBc0IsQ0FBMEIsV0FBZ0I7O1FBQ3ZFLElBQU0sTUFBTSxHQUFRLEVBQUUsQ0FBQztnQ0FDWixPQUFPO1lBQ2hCLElBQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBQSxZQUFZLElBQUksT0FBQSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLEVBQTFDLENBQTBDLENBQUMsQ0FBQztZQUNoRyxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3RCOzs7WUFKSCxLQUFzQixJQUFBLGdCQUFBLGlCQUFBLFdBQVcsQ0FBQSx3Q0FBQTtnQkFBNUIsSUFBTSxPQUFPLHdCQUFBO3dCQUFQLE9BQU87YUFLakI7Ozs7Ozs7OztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTLG1CQUFtQixDQUFDLEtBQW9CLEVBQUUsTUFBcUI7O1FBQ3RFLE9BQU8sQ0FBQSxNQUFBLEtBQUssQ0FBQyxJQUFJLDBDQUFFLFFBQVEsT0FBSyxNQUFBLE1BQU0sQ0FBQyxJQUFJLDBDQUFFLFFBQVEsQ0FBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLEtBQUs7WUFDakYsS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQztJQUNuRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0Vycm9yQ29kZX0gZnJvbSAnLi4vLi4vLi4vZGlhZ25vc3RpY3MnO1xuaW1wb3J0IHtUZW1wbGF0ZURpYWdub3N0aWMsIFRlbXBsYXRlVHlwZUNoZWNrZXJ9IGZyb20gJy4uLy4uL2FwaSc7XG5pbXBvcnQge0V4dGVuZGVkVGVtcGxhdGVDaGVja2VyLCBUZW1wbGF0ZUNoZWNrLCBUZW1wbGF0ZUNvbnRleHR9IGZyb20gJy4uL2FwaSc7XG5cbmV4cG9ydCBjbGFzcyBFeHRlbmRlZFRlbXBsYXRlQ2hlY2tlckltcGwgaW1wbGVtZW50cyBFeHRlbmRlZFRlbXBsYXRlQ2hlY2tlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVR5cGVDaGVja2VyOiBUZW1wbGF0ZVR5cGVDaGVja2VyLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlQ2hlY2tzOiBUZW1wbGF0ZUNoZWNrPEVycm9yQ29kZT5bXSkge31cblxuICBnZXREaWFnbm9zdGljc0ZvckNvbXBvbmVudChjb21wb25lbnQ6IHRzLkNsYXNzRGVjbGFyYXRpb24pOiBUZW1wbGF0ZURpYWdub3N0aWNbXSB7XG4gICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlVHlwZUNoZWNrZXIuZ2V0VGVtcGxhdGUoY29tcG9uZW50KTtcbiAgICAvLyBTa2lwIGNoZWNrcyBpZiBjb21wb25lbnQgaGFzIG5vIHRlbXBsYXRlLiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHVzZXIgd3JpdGVzIGFcbiAgICAvLyBgQENvbXBvbmVudCgpYCBidXQgZG9lc24ndCBhZGQgdGhlIHRlbXBsYXRlLCBjb3VsZCBoYXBwZW4gaW4gdGhlIGxhbmd1YWdlIHNlcnZpY2VcbiAgICAvLyB3aGVuIHVzZXJzIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHR5cGluZyBjb2RlLlxuICAgIGlmICh0ZW1wbGF0ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBkaWFnbm9zdGljczogVGVtcGxhdGVEaWFnbm9zdGljW10gPSBbXTtcblxuICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgIHRlbXBsYXRlVHlwZUNoZWNrZXI6IHRoaXMudGVtcGxhdGVUeXBlQ2hlY2tlcixcbiAgICAgIHR5cGVDaGVja2VyOiB0aGlzLnR5cGVDaGVja2VyLFxuICAgICAgY29tcG9uZW50XG4gICAgfSBhcyBUZW1wbGF0ZUNvbnRleHQ7XG5cbiAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMudGVtcGxhdGVDaGVja3MpIHtcbiAgICAgIGRpYWdub3N0aWNzLnB1c2goLi4uZGVkdXBsaWNhdGVEaWFnbm9zdGljcyhjaGVjay5ydW4oY3R4LCB0ZW1wbGF0ZSkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlhZ25vc3RpY3M7XG4gIH1cbn1cblxuXG4vLyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZWQgZGlhZ25vc3RpY3MsIHRoaXMgaXMgcG9zc2libGUgZHVlIHRvIHRoZSB3YXkgdGhlIGNvbXBpbGVyXG4vLyBoYW5kbGVzIGRlc3VnYXJpbmcgYW5kIHByb2R1Y2VzIGBBU1Rgcy4gRXguXG4vL1xuLy8gYGBgXG4vLyA8ZGl2ICpuZ0lmPVwidHJ1ZVwiIChmb28pPVwiYmFyXCI+dGVzdDwvZGl2PlxuLy8gYGBgXG4vL1xuLy8gV291bGQgcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgQVNUOlxuLy9cbi8vIGBgYFxuLy8gVGVtcGxhdGUge1xuLy8gICBvdXRwdXRzOiBbXG4vLyAgICBCb3VuZEV2ZW50IHtcbi8vICAgICAgbmFtZTogJ2ZvbycsXG4vLyAgICAgIC8uLi4vXG4vLyAgICB9XG4vLyAgIF0sXG4vLyAgIGNoaWxkcmVuOiBbXG4vLyAgICAgRWxlbWVudCB7XG4vLyAgICAgICBvdXRwdXRzOiBbXG4vLyAgICAgICAgIEJvdW5kRXZlbnQge1xuLy8gICAgICAgICAgIG5hbWU6ICdmb28nLFxuLy8gICAgICAgICAgIC8uLi4vXG4vLyAgICAgICAgIH1cbi8vICAgICAgIF1cbi8vICAgICB9XG4vLyAgIF0sXG4vLyAgIC8uLi4vXG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBJbiB0aGlzIGNhc2UgYSBkdXBsaWNhdGVkIGRpYWdub3N0aWMgY291bGQgYmUgZ2VuZXJhdGVkIGZvciB0aGUgb3V0cHV0IGBmb29gLlxuLy8gVE9ETyhkYW5pZWx0cmV2aW5vKTogaGFuZGxlIGR1cGxpY2F0ZWQgZGlhZ25vc3RpY3Mgd2hlbiB0aGV5IGFyZSBiZWluZyBnZW5lcmF0ZWRcbi8vIHRvIGF2b2lkIGV4dHJhIHdvcmsgKGNvdWxkIGJlIGRpcmVjdGx5IGluIHRoZSB2aXNpdG9yKS5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvcHVsbC80Mjk4NCNkaXNjdXNzaW9uX3I2ODQ4MjM5MjZcbmZ1bmN0aW9uIGRlZHVwbGljYXRlRGlhZ25vc3RpY3M8VCBleHRlbmRzIHRzLkRpYWdub3N0aWM+KGRpYWdub3N0aWNzOiBUW10pOiBUW10ge1xuICBjb25zdCByZXN1bHQ6IFRbXSA9IFtdO1xuICBmb3IgKGNvbnN0IG5ld0RpYWcgb2YgZGlhZ25vc3RpY3MpIHtcbiAgICBjb25zdCBpc0R1cGxpY2F0ZURpYWcgPSByZXN1bHQuc29tZShleGlzdGluZ0RpYWcgPT4gYXJlRGlhZ25vc3RpY3NFcXVhbChuZXdEaWFnLCBleGlzdGluZ0RpYWcpKTtcbiAgICBpZiAoIWlzRHVwbGljYXRlRGlhZykge1xuICAgICAgcmVzdWx0LnB1c2gobmV3RGlhZyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGFyZURpYWdub3N0aWNzRXF1YWwoZmlyc3Q6IHRzLkRpYWdub3N0aWMsIHNlY29uZDogdHMuRGlhZ25vc3RpYyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmlyc3QuZmlsZT8uZmlsZU5hbWUgPT09IHNlY29uZC5maWxlPy5maWxlTmFtZSAmJiBmaXJzdC5zdGFydCA9PT0gc2Vjb25kLnN0YXJ0ICYmXG4gICAgICBmaXJzdC5sZW5ndGggPT09IHNlY29uZC5sZW5ndGggJiYgZmlyc3QuY29kZSA9PT0gc2Vjb25kLmNvZGU7XG59XG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWRfdGVtcGxhdGVfY2hlY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL2V4dGVuZGVkL3NyYy9leHRlbmRlZF90ZW1wbGF0ZV9jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7SUFRSDtRQUdFLHFDQUNJLG1CQUF3QyxFQUFFLFdBQTJCLEVBQ3BELGNBQTBDO1lBQTFDLG1CQUFjLEdBQWQsY0FBYyxDQUE0QjtZQUM3RCxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUMsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFDM0QsQ0FBQztRQUN0QixDQUFDO1FBRUQsZ0VBQTBCLEdBQTFCLFVBQTJCLFNBQThCOztZQUN2RCxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRSxpRkFBaUY7WUFDakYsb0ZBQW9GO1lBQ3BGLCtDQUErQztZQUMvQyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3JCLE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFDRCxJQUFNLFdBQVcsR0FBeUIsRUFBRSxDQUFDOztnQkFFN0MsS0FBb0IsSUFBQSxLQUFBLGlCQUFBLElBQUksQ0FBQyxjQUFjLENBQUEsZ0JBQUEsNEJBQUU7b0JBQXBDLElBQU0sS0FBSyxXQUFBO29CQUNkLFdBQVcsQ0FBQyxJQUFJLE9BQWhCLFdBQVcsMkNBQVMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBRTtpQkFDL0Q7Ozs7Ozs7OztZQUVELE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFDSCxrQ0FBQztJQUFELENBQUMsQUExQkQsSUEwQkM7SUExQlksa0VBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0Vycm9yQ29kZX0gZnJvbSAnLi4vLi4vLi4vZGlhZ25vc3RpY3MnO1xuaW1wb3J0IHtUZW1wbGF0ZURpYWdub3N0aWMsIFRlbXBsYXRlVHlwZUNoZWNrZXJ9IGZyb20gJy4uLy4uL2FwaSc7XG5pbXBvcnQge0V4dGVuZGVkVGVtcGxhdGVDaGVja2VyLCBUZW1wbGF0ZUNoZWNrLCBUZW1wbGF0ZUNvbnRleHR9IGZyb20gJy4uL2FwaSc7XG5cbmV4cG9ydCBjbGFzcyBFeHRlbmRlZFRlbXBsYXRlQ2hlY2tlckltcGwgaW1wbGVtZW50cyBFeHRlbmRlZFRlbXBsYXRlQ2hlY2tlciB7XG4gIHByaXZhdGUgY3R4OiBUZW1wbGF0ZUNvbnRleHQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICB0ZW1wbGF0ZVR5cGVDaGVja2VyOiBUZW1wbGF0ZVR5cGVDaGVja2VyLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlQ2hlY2tzOiBUZW1wbGF0ZUNoZWNrPEVycm9yQ29kZT5bXSkge1xuICAgIHRoaXMuY3R4ID0ge3RlbXBsYXRlVHlwZUNoZWNrZXI6IHRlbXBsYXRlVHlwZUNoZWNrZXIsIHR5cGVDaGVja2VyOiB0eXBlQ2hlY2tlcn0gYXNcbiAgICAgICAgVGVtcGxhdGVDb250ZXh0O1xuICB9XG5cbiAgZ2V0RGlhZ25vc3RpY3NGb3JDb21wb25lbnQoY29tcG9uZW50OiB0cy5DbGFzc0RlY2xhcmF0aW9uKTogVGVtcGxhdGVEaWFnbm9zdGljW10ge1xuICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5jdHgudGVtcGxhdGVUeXBlQ2hlY2tlci5nZXRUZW1wbGF0ZShjb21wb25lbnQpO1xuICAgIC8vIFNraXAgY2hlY2tzIGlmIGNvbXBvbmVudCBoYXMgbm8gdGVtcGxhdGUuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgdXNlciB3cml0ZXMgYVxuICAgIC8vIGBAQ29tcG9uZW50KClgIGJ1dCBkb2Vzbid0IGFkZCB0aGUgdGVtcGxhdGUsIGNvdWxkIGhhcHBlbiBpbiB0aGUgbGFuZ3VhZ2Ugc2VydmljZVxuICAgIC8vIHdoZW4gdXNlcnMgYXJlIGluIHRoZSBtaWRkbGUgb2YgdHlwaW5nIGNvZGUuXG4gICAgaWYgKHRlbXBsYXRlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGRpYWdub3N0aWNzOiBUZW1wbGF0ZURpYWdub3N0aWNbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLnRlbXBsYXRlQ2hlY2tzKSB7XG4gICAgICBkaWFnbm9zdGljcy5wdXNoKC4uLmNoZWNrLnJ1bih0aGlzLmN0eCwgY29tcG9uZW50LCB0ZW1wbGF0ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBkaWFnbm9zdGljcztcbiAgfVxufVxuIl19
@@ -28,6 +28,6 @@ export declare class TypeParameterEmitter {
28
28
  */
29
29
  emit(emitReference: (ref: Reference) => ts.TypeNode): ts.TypeParameterDeclaration[] | undefined;
30
30
  private resolveTypeReference;
31
- private isStaticallyExported;
31
+ private isTopLevelExport;
32
32
  private isLocalTypeParameter;
33
33
  }
@@ -4,7 +4,7 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define("@angular/compiler-cli/src/ngtsc/typecheck/src/type_parameter_emitter", ["require", "exports", "typescript", "@angular/compiler-cli/src/ngtsc/imports", "@angular/compiler-cli/src/ngtsc/reflection", "@angular/compiler-cli/src/ngtsc/typecheck/src/type_emitter"], factory);
7
+ define("@angular/compiler-cli/src/ngtsc/typecheck/src/type_parameter_emitter", ["require", "exports", "typescript", "@angular/compiler-cli/src/ngtsc/imports", "@angular/compiler-cli/src/ngtsc/typecheck/src/type_emitter"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -19,7 +19,6 @@
19
19
  */
20
20
  var ts = require("typescript");
21
21
  var imports_1 = require("@angular/compiler-cli/src/ngtsc/imports");
22
- var reflection_1 = require("@angular/compiler-cli/src/ngtsc/reflection");
23
22
  var type_emitter_1 = require("@angular/compiler-cli/src/ngtsc/typecheck/src/type_emitter");
24
23
  /**
25
24
  * See `TypeEmitter` for more information on the emitting process.
@@ -89,15 +88,20 @@
89
88
  resolutionContext: type.getSourceFile().fileName,
90
89
  };
91
90
  }
92
- // If no owning module is known, the reference needs to be exported to be able to emit an import
91
+ // The declaration needs to be exported as a top-level export to be able to emit an import
93
92
  // statement for it. If the declaration is not exported, null is returned to prevent emit.
94
- if (owningModule === null && !this.isStaticallyExported(declaration.node)) {
93
+ if (!this.isTopLevelExport(declaration.node)) {
95
94
  return null;
96
95
  }
97
96
  return new imports_1.Reference(declaration.node, owningModule);
98
97
  };
99
- TypeParameterEmitter.prototype.isStaticallyExported = function (decl) {
100
- return reflection_1.isNamedClassDeclaration(decl) && this.reflector.isStaticallyExported(decl);
98
+ TypeParameterEmitter.prototype.isTopLevelExport = function (decl) {
99
+ if (decl.parent === undefined || !ts.isSourceFile(decl.parent)) {
100
+ // The declaration has to exist at the top-level, as the reference emitters are not capable of
101
+ // generating imports to classes declared in a namespace.
102
+ return false;
103
+ }
104
+ return this.reflector.isStaticallyExported(decl);
101
105
  };
102
106
  TypeParameterEmitter.prototype.isLocalTypeParameter = function (decl) {
103
107
  // Checking for local type parameters only occurs during resolution of type parameters, so it is
@@ -108,4 +112,4 @@
108
112
  }());
109
113
  exports.TypeParameterEmitter = TypeParameterEmitter;
110
114
  });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9wYXJhbWV0ZXJfZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL3NyYy90eXBlX3BhcmFtZXRlcl9lbWl0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILCtCQUFpQztJQUVqQyxtRUFBc0Q7SUFDdEQseUVBQTBGO0lBRTFGLDJGQUErRTtJQUcvRTs7T0FFRztJQUNIO1FBQ0UsOEJBQ1ksY0FBbUUsRUFDbkUsU0FBeUI7WUFEekIsbUJBQWMsR0FBZCxjQUFjLENBQXFEO1lBQ25FLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQUcsQ0FBQztRQUV6Qzs7OztXQUlHO1FBQ0gsc0NBQU8sR0FBUDtZQUFBLGlCQVFDO1lBUEMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtnQkFDckMsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBQSxTQUFTO2dCQUN4QyxPQUFPLEtBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVPLDBDQUFXLEdBQW5CLFVBQW9CLElBQTJCO1lBQS9DLGlCQU1DO1lBTEMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUN0QixPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsT0FBTywwQkFBVyxDQUFDLElBQUksRUFBRSxVQUFBLGFBQWEsSUFBSSxPQUFBLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsRUFBeEMsQ0FBd0MsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7UUFFRDs7V0FFRztRQUNILG1DQUFJLEdBQUosVUFBSyxhQUE4QztZQUFuRCxpQkFtQkM7WUFsQkMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtnQkFDckMsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFFRCxJQUFNLE9BQU8sR0FBRyxJQUFJLDBCQUFXLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxLQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQS9CLENBQStCLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFeEYsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFBLFNBQVM7Z0JBQ3RDLElBQU0sVUFBVSxHQUNaLFNBQVMsQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUM1RixJQUFNLFdBQVcsR0FDYixTQUFTLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFFdEYsT0FBTyxFQUFFLENBQUMsOEJBQThCO2dCQUNwQyxVQUFVLENBQUMsU0FBUztnQkFDcEIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJO2dCQUN6QixnQkFBZ0IsQ0FBQyxVQUFVO2dCQUMzQixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFTyxtREFBb0IsR0FBNUIsVUFBNkIsSUFBMEI7WUFDckQsSUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ3BGLElBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFdEUsOEZBQThGO1lBQzlGLFlBQVk7WUFDWixJQUFJLFdBQVcsS0FBSyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ3JELE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCw2RkFBNkY7WUFDN0YsU0FBUztZQUNULElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0MsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELElBQUksWUFBWSxHQUFzQixJQUFJLENBQUM7WUFDM0MsSUFBSSxXQUFXLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtnQkFDbEMsWUFBWSxHQUFHO29CQUNiLFNBQVMsRUFBRSxXQUFXLENBQUMsU0FBUztvQkFDaEMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVE7aUJBQ2pELENBQUM7YUFDSDtZQUVELGdHQUFnRztZQUNoRywwRkFBMEY7WUFDMUYsSUFBSSxZQUFZLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekUsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU8sSUFBSSxtQkFBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVPLG1EQUFvQixHQUE1QixVQUE2QixJQUFxQjtZQUNoRCxPQUFPLG9DQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUVPLG1EQUFvQixHQUE1QixVQUE2QixJQUFxQjtZQUNoRCxnR0FBZ0c7WUFDaEcsK0NBQStDO1lBQy9DLE9BQU8sSUFBSSxDQUFDLGNBQWUsQ0FBQyxJQUFJLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLEtBQUssSUFBSSxFQUFkLENBQWMsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDSCwyQkFBQztJQUFELENBQUMsQUE5RkQsSUE4RkM7SUE5Rlksb0RBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtPd25pbmdNb2R1bGUsIFJlZmVyZW5jZX0gZnJvbSAnLi4vLi4vaW1wb3J0cyc7XG5pbXBvcnQge0RlY2xhcmF0aW9uTm9kZSwgaXNOYW1lZENsYXNzRGVjbGFyYXRpb24sIFJlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuaW1wb3J0IHtjYW5FbWl0VHlwZSwgUmVzb2x2ZWRUeXBlUmVmZXJlbmNlLCBUeXBlRW1pdHRlcn0gZnJvbSAnLi90eXBlX2VtaXR0ZXInO1xuXG5cbi8qKlxuICogU2VlIGBUeXBlRW1pdHRlcmAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGVtaXR0aW5nIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlUGFyYW1ldGVyRW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSB0eXBlUGFyYW1ldGVyczogdHMuTm9kZUFycmF5PHRzLlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbj58dW5kZWZpbmVkLFxuICAgICAgcHJpdmF0ZSByZWZsZWN0b3I6IFJlZmxlY3Rpb25Ib3N0KSB7fVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUgcGFyYW1ldGVycyBjYW4gYmUgZW1pdHRlZC4gSWYgdGhpcyByZXR1cm5zIHRydWUsIHRoZW4gYSBjYWxsIHRvXG4gICAqIGBlbWl0YCBpcyBrbm93biB0byBzdWNjZWVkLiBWaWNlIHZlcnNhLCBpZiBmYWxzZSBpcyByZXR1cm5lZCB0aGVuIGBlbWl0YCBzaG91bGQgbm90IGJlXG4gICAqIGNhbGxlZCwgYXMgaXQgd291bGQgZmFpbC5cbiAgICovXG4gIGNhbkVtaXQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudHlwZVBhcmFtZXRlcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHlwZVBhcmFtZXRlcnMuZXZlcnkodHlwZVBhcmFtID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmNhbkVtaXRUeXBlKHR5cGVQYXJhbS5jb25zdHJhaW50KSAmJiB0aGlzLmNhbkVtaXRUeXBlKHR5cGVQYXJhbS5kZWZhdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuRW1pdFR5cGUodHlwZTogdHMuVHlwZU5vZGV8dW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhbkVtaXRUeXBlKHR5cGUsIHR5cGVSZWZlcmVuY2UgPT4gdGhpcy5yZXNvbHZlVHlwZVJlZmVyZW5jZSh0eXBlUmVmZXJlbmNlKSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHR5cGUgcGFyYW1ldGVycyB1c2luZyB0aGUgcHJvdmlkZWQgZW1pdHRlciBmdW5jdGlvbiBmb3IgYFJlZmVyZW5jZWBzLlxuICAgKi9cbiAgZW1pdChlbWl0UmVmZXJlbmNlOiAocmVmOiBSZWZlcmVuY2UpID0+IHRzLlR5cGVOb2RlKTogdHMuVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uW118dW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy50eXBlUGFyYW1ldGVycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgVHlwZUVtaXR0ZXIodHlwZSA9PiB0aGlzLnJlc29sdmVUeXBlUmVmZXJlbmNlKHR5cGUpLCBlbWl0UmVmZXJlbmNlKTtcblxuICAgIHJldHVybiB0aGlzLnR5cGVQYXJhbWV0ZXJzLm1hcCh0eXBlUGFyYW0gPT4ge1xuICAgICAgY29uc3QgY29uc3RyYWludCA9XG4gICAgICAgICAgdHlwZVBhcmFtLmNvbnN0cmFpbnQgIT09IHVuZGVmaW5lZCA/IGVtaXR0ZXIuZW1pdFR5cGUodHlwZVBhcmFtLmNvbnN0cmFpbnQpIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgZGVmYXVsdFR5cGUgPVxuICAgICAgICAgIHR5cGVQYXJhbS5kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBlbWl0dGVyLmVtaXRUeXBlKHR5cGVQYXJhbS5kZWZhdWx0KSA6IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIHRzLnVwZGF0ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbihcbiAgICAgICAgICAvKiBub2RlICovIHR5cGVQYXJhbSxcbiAgICAgICAgICAvKiBuYW1lICovIHR5cGVQYXJhbS5uYW1lLFxuICAgICAgICAgIC8qIGNvbnN0cmFpbnQgKi8gY29uc3RyYWludCxcbiAgICAgICAgICAvKiBkZWZhdWx0VHlwZSAqLyBkZWZhdWx0VHlwZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUeXBlUmVmZXJlbmNlKHR5cGU6IHRzLlR5cGVSZWZlcmVuY2VOb2RlKTogUmVzb2x2ZWRUeXBlUmVmZXJlbmNlIHtcbiAgICBjb25zdCB0YXJnZXQgPSB0cy5pc0lkZW50aWZpZXIodHlwZS50eXBlTmFtZSkgPyB0eXBlLnR5cGVOYW1lIDogdHlwZS50eXBlTmFtZS5yaWdodDtcbiAgICBjb25zdCBkZWNsYXJhdGlvbiA9IHRoaXMucmVmbGVjdG9yLmdldERlY2xhcmF0aW9uT2ZJZGVudGlmaWVyKHRhcmdldCk7XG5cbiAgICAvLyBJZiBubyBkZWNsYXJhdGlvbiBjb3VsZCBiZSByZXNvbHZlZCBvciBkb2VzIG5vdCBoYXZlIGEgYHRzLkRlY2xhcmF0aW9uYCwgdGhlIHR5cGUgY2Fubm90IGJlXG4gICAgLy8gcmVzb2x2ZWQuXG4gICAgaWYgKGRlY2xhcmF0aW9uID09PSBudWxsIHx8IGRlY2xhcmF0aW9uLm5vZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBkZWNsYXJhdGlvbiBjb3JyZXNwb25kcyB3aXRoIGEgbG9jYWwgdHlwZSBwYXJhbWV0ZXIsIHRoZSB0eXBlIHJlZmVyZW5jZSBjYW4gYmUgdXNlZFxuICAgIC8vIGFzIGlzLlxuICAgIGlmICh0aGlzLmlzTG9jYWxUeXBlUGFyYW1ldGVyKGRlY2xhcmF0aW9uLm5vZGUpKSB7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICBsZXQgb3duaW5nTW9kdWxlOiBPd25pbmdNb2R1bGV8bnVsbCA9IG51bGw7XG4gICAgaWYgKGRlY2xhcmF0aW9uLnZpYU1vZHVsZSAhPT0gbnVsbCkge1xuICAgICAgb3duaW5nTW9kdWxlID0ge1xuICAgICAgICBzcGVjaWZpZXI6IGRlY2xhcmF0aW9uLnZpYU1vZHVsZSxcbiAgICAgICAgcmVzb2x1dGlvbkNvbnRleHQ6IHR5cGUuZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJZiBubyBvd25pbmcgbW9kdWxlIGlzIGtub3duLCB0aGUgcmVmZXJlbmNlIG5lZWRzIHRvIGJlIGV4cG9ydGVkIHRvIGJlIGFibGUgdG8gZW1pdCBhbiBpbXBvcnRcbiAgICAvLyBzdGF0ZW1lbnQgZm9yIGl0LiBJZiB0aGUgZGVjbGFyYXRpb24gaXMgbm90IGV4cG9ydGVkLCBudWxsIGlzIHJldHVybmVkIHRvIHByZXZlbnQgZW1pdC5cbiAgICBpZiAob3duaW5nTW9kdWxlID09PSBudWxsICYmICF0aGlzLmlzU3RhdGljYWxseUV4cG9ydGVkKGRlY2xhcmF0aW9uLm5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlZmVyZW5jZShkZWNsYXJhdGlvbi5ub2RlLCBvd25pbmdNb2R1bGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N0YXRpY2FsbHlFeHBvcnRlZChkZWNsOiBEZWNsYXJhdGlvbk5vZGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOYW1lZENsYXNzRGVjbGFyYXRpb24oZGVjbCkgJiYgdGhpcy5yZWZsZWN0b3IuaXNTdGF0aWNhbGx5RXhwb3J0ZWQoZGVjbCk7XG4gIH1cblxuICBwcml2YXRlIGlzTG9jYWxUeXBlUGFyYW1ldGVyKGRlY2w6IERlY2xhcmF0aW9uTm9kZSk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNraW5nIGZvciBsb2NhbCB0eXBlIHBhcmFtZXRlcnMgb25seSBvY2N1cnMgZHVyaW5nIHJlc29sdXRpb24gb2YgdHlwZSBwYXJhbWV0ZXJzLCBzbyBpdCBpc1xuICAgIC8vIGd1YXJhbnRlZWQgdGhhdCB0eXBlIHBhcmFtZXRlcnMgYXJlIHByZXNlbnQuXG4gICAgcmV0dXJuIHRoaXMudHlwZVBhcmFtZXRlcnMhLnNvbWUocGFyYW0gPT4gcGFyYW0gPT09IGRlY2wpO1xuICB9XG59XG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZV9wYXJhbWV0ZXJfZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmd0c2MvdHlwZWNoZWNrL3NyYy90eXBlX3BhcmFtZXRlcl9lbWl0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILCtCQUFpQztJQUVqQyxtRUFBc0Q7SUFHdEQsMkZBQStFO0lBRy9FOztPQUVHO0lBQ0g7UUFDRSw4QkFDWSxjQUFtRSxFQUNuRSxTQUF5QjtZQUR6QixtQkFBYyxHQUFkLGNBQWMsQ0FBcUQ7WUFDbkUsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFBRyxDQUFDO1FBRXpDOzs7O1dBSUc7UUFDSCxzQ0FBTyxHQUFQO1lBQUEsaUJBUUM7WUFQQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO2dCQUNyQyxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFBLFNBQVM7Z0JBQ3hDLE9BQU8sS0FBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRU8sMENBQVcsR0FBbkIsVUFBb0IsSUFBMkI7WUFBL0MsaUJBTUM7WUFMQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxPQUFPLDBCQUFXLENBQUMsSUFBSSxFQUFFLFVBQUEsYUFBYSxJQUFJLE9BQUEsS0FBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxFQUF4QyxDQUF3QyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUVEOztXQUVHO1FBQ0gsbUNB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aEQsZ0dBQWdHO1lBQ2hHLCtDQUErQztZQUMvQyxPQUFPLElBQUksQ0FBQyxjQUFlLENBQUMsSUFBSSxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSyxLQUFLLElBQUksRUFBZCxDQUFjLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0gsMkJBQUM7SUFBRCxDQUFDLEFBcEdELElBb0dDO0lBcEdZLG9EQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7T3duaW5nTW9kdWxlLCBSZWZlcmVuY2V9IGZyb20gJy4uLy4uL2ltcG9ydHMnO1xuaW1wb3J0IHtEZWNsYXJhdGlvbk5vZGUsIFJlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi8uLi9yZWZsZWN0aW9uJztcblxuaW1wb3J0IHtjYW5FbWl0VHlwZSwgUmVzb2x2ZWRUeXBlUmVmZXJlbmNlLCBUeXBlRW1pdHRlcn0gZnJvbSAnLi90eXBlX2VtaXR0ZXInO1xuXG5cbi8qKlxuICogU2VlIGBUeXBlRW1pdHRlcmAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGVtaXR0aW5nIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlUGFyYW1ldGVyRW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSB0eXBlUGFyYW1ldGVyczogdHMuTm9kZUFycmF5PHRzLlR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbj58dW5kZWZpbmVkLFxuICAgICAgcHJpdmF0ZSByZWZsZWN0b3I6IFJlZmxlY3Rpb25Ib3N0KSB7fVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHR5cGUgcGFyYW1ldGVycyBjYW4gYmUgZW1pdHRlZC4gSWYgdGhpcyByZXR1cm5zIHRydWUsIHRoZW4gYSBjYWxsIHRvXG4gICAqIGBlbWl0YCBpcyBrbm93biB0byBzdWNjZWVkLiBWaWNlIHZlcnNhLCBpZiBmYWxzZSBpcyByZXR1cm5lZCB0aGVuIGBlbWl0YCBzaG91bGQgbm90IGJlXG4gICAqIGNhbGxlZCwgYXMgaXQgd291bGQgZmFpbC5cbiAgICovXG4gIGNhbkVtaXQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudHlwZVBhcmFtZXRlcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHlwZVBhcmFtZXRlcnMuZXZlcnkodHlwZVBhcmFtID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmNhbkVtaXRUeXBlKHR5cGVQYXJhbS5jb25zdHJhaW50KSAmJiB0aGlzLmNhbkVtaXRUeXBlKHR5cGVQYXJhbS5kZWZhdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuRW1pdFR5cGUodHlwZTogdHMuVHlwZU5vZGV8dW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhbkVtaXRUeXBlKHR5cGUsIHR5cGVSZWZlcmVuY2UgPT4gdGhpcy5yZXNvbHZlVHlwZVJlZmVyZW5jZSh0eXBlUmVmZXJlbmNlKSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHR5cGUgcGFyYW1ldGVycyB1c2luZyB0aGUgcHJvdmlkZWQgZW1pdHRlciBmdW5jdGlvbiBmb3IgYFJlZmVyZW5jZWBzLlxuICAgKi9cbiAgZW1pdChlbWl0UmVmZXJlbmNlOiAocmVmOiBSZWZlcmVuY2UpID0+IHRzLlR5cGVOb2RlKTogdHMuVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uW118dW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy50eXBlUGFyYW1ldGVycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgVHlwZUVtaXR0ZXIodHlwZSA9PiB0aGlzLnJlc29sdmVUeXBlUmVmZXJlbmNlKHR5cGUpLCBlbWl0UmVmZXJlbmNlKTtcblxuICAgIHJldHVybiB0aGlzLnR5cGVQYXJhbWV0ZXJzLm1hcCh0eXBlUGFyYW0gPT4ge1xuICAgICAgY29uc3QgY29uc3RyYWludCA9XG4gICAgICAgICAgdHlwZVBhcmFtLmNvbnN0cmFpbnQgIT09IHVuZGVmaW5lZCA/IGVtaXR0ZXIuZW1pdFR5cGUodHlwZVBhcmFtLmNvbnN0cmFpbnQpIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgZGVmYXVsdFR5cGUgPVxuICAgICAgICAgIHR5cGVQYXJhbS5kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBlbWl0dGVyLmVtaXRUeXBlKHR5cGVQYXJhbS5kZWZhdWx0KSA6IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIHRzLnVwZGF0ZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbihcbiAgICAgICAgICAvKiBub2RlICovIHR5cGVQYXJhbSxcbiAgICAgICAgICAvKiBuYW1lICovIHR5cGVQYXJhbS5uYW1lLFxuICAgICAgICAgIC8qIGNvbnN0cmFpbnQgKi8gY29uc3RyYWludCxcbiAgICAgICAgICAvKiBkZWZhdWx0VHlwZSAqLyBkZWZhdWx0VHlwZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVUeXBlUmVmZXJlbmNlKHR5cGU6IHRzLlR5cGVSZWZlcmVuY2VOb2RlKTogUmVzb2x2ZWRUeXBlUmVmZXJlbmNlIHtcbiAgICBjb25zdCB0YXJnZXQgPSB0cy5pc0lkZW50aWZpZXIodHlwZS50eXBlTmFtZSkgPyB0eXBlLnR5cGVOYW1lIDogdHlwZS50eXBlTmFtZS5yaWdodDtcbiAgICBjb25zdCBkZWNsYXJhdGlvbiA9IHRoaXMucmVmbGVjdG9yLmdldERlY2xhcmF0aW9uT2ZJZGVudGlmaWVyKHRhcmdldCk7XG5cbiAgICAvLyBJZiBubyBkZWNsYXJhdGlvbiBjb3VsZCBiZSByZXNvbHZlZCBvciBkb2VzIG5vdCBoYXZlIGEgYHRzLkRlY2xhcmF0aW9uYCwgdGhlIHR5cGUgY2Fubm90IGJlXG4gICAgLy8gcmVzb2x2ZWQuXG4gICAgaWYgKGRlY2xhcmF0aW9uID09PSBudWxsIHx8IGRlY2xhcmF0aW9uLm5vZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBkZWNsYXJhdGlvbiBjb3JyZXNwb25kcyB3aXRoIGEgbG9jYWwgdHlwZSBwYXJhbWV0ZXIsIHRoZSB0eXBlIHJlZmVyZW5jZSBjYW4gYmUgdXNlZFxuICAgIC8vIGFzIGlzLlxuICAgIGlmICh0aGlzLmlzTG9jYWxUeXBlUGFyYW1ldGVyKGRlY2xhcmF0aW9uLm5vZGUpKSB7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICBsZXQgb3duaW5nTW9kdWxlOiBPd25pbmdNb2R1bGV8bnVsbCA9IG51bGw7XG4gICAgaWYgKGRlY2xhcmF0aW9uLnZpYU1vZHVsZSAhPT0gbnVsbCkge1xuICAgICAgb3duaW5nTW9kdWxlID0ge1xuICAgICAgICBzcGVjaWZpZXI6IGRlY2xhcmF0aW9uLnZpYU1vZHVsZSxcbiAgICAgICAgcmVzb2x1dGlvbkNvbnRleHQ6IHR5cGUuZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVjbGFyYXRpb24gbmVlZHMgdG8gYmUgZXhwb3J0ZWQgYXMgYSB0b3AtbGV2ZWwgZXhwb3J0IHRvIGJlIGFibGUgdG8gZW1pdCBhbiBpbXBvcnRcbiAgICAvLyBzdGF0ZW1lbnQgZm9yIGl0LiBJZiB0aGUgZGVjbGFyYXRpb24gaXMgbm90IGV4cG9ydGVkLCBudWxsIGlzIHJldHVybmVkIHRvIHByZXZlbnQgZW1pdC5cbiAgICBpZiAoIXRoaXMuaXNUb3BMZXZlbEV4cG9ydChkZWNsYXJhdGlvbi5ub2RlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZWZlcmVuY2UoZGVjbGFyYXRpb24ubm9kZSwgb3duaW5nTW9kdWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNUb3BMZXZlbEV4cG9ydChkZWNsOiBEZWNsYXJhdGlvbk5vZGUpOiBib29sZWFuIHtcbiAgICBpZiAoZGVjbC5wYXJlbnQgPT09IHVuZGVmaW5lZCB8fCAhdHMuaXNTb3VyY2VGaWxlKGRlY2wucGFyZW50KSkge1xuICAgICAgLy8gVGhlIGRlY2xhcmF0aW9uIGhhcyB0byBleGlzdCBhdCB0aGUgdG9wLWxldmVsLCBhcyB0aGUgcmVmZXJlbmNlIGVtaXR0ZXJzIGFyZSBub3QgY2FwYWJsZSBvZlxuICAgICAgLy8gZ2VuZXJhdGluZyBpbXBvcnRzIHRvIGNsYXNzZXMgZGVjbGFyZWQgaW4gYSBuYW1lc3BhY2UuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVmbGVjdG9yLmlzU3RhdGljYWxseUV4cG9ydGVkKGRlY2wpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xvY2FsVHlwZVBhcmFtZXRlcihkZWNsOiBEZWNsYXJhdGlvbk5vZGUpOiBib29sZWFuIHtcbiAgICAvLyBDaGVja2luZyBmb3IgbG9jYWwgdHlwZSBwYXJhbWV0ZXJzIG9ubHkgb2NjdXJzIGR1cmluZyByZXNvbHV0aW9uIG9mIHR5cGUgcGFyYW1ldGVycywgc28gaXQgaXNcbiAgICAvLyBndWFyYW50ZWVkIHRoYXQgdHlwZSBwYXJhbWV0ZXJzIGFyZSBwcmVzZW50LlxuICAgIHJldHVybiB0aGlzLnR5cGVQYXJhbWV0ZXJzIS5zb21lKHBhcmFtID0+IHBhcmFtID09PSBkZWNsKTtcbiAgfVxufVxuIl19