@angular/compiler-cli 7.0.0-rc.1 → 7.0.3
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/package.json +3 -3
- package/src/diagnostics/symbols.d.ts +10 -10
- package/src/diagnostics/symbols.js +2 -2
- package/src/ngcc/src/analysis/decoration_analyzer.d.ts +65 -0
- package/src/ngcc/src/analysis/decoration_analyzer.js +116 -0
- package/src/ngcc/src/analysis/switch_marker_analyzer.d.ts +33 -0
- package/src/ngcc/src/analysis/switch_marker_analyzer.js +44 -0
- package/src/ngcc/src/{parsing/parsed_class.d.ts → host/decorated_class.d.ts} +4 -4
- package/src/ngcc/src/host/decorated_class.js +40 -0
- package/src/ngcc/src/host/decorated_file.d.ts +21 -0
- package/src/ngcc/src/host/decorated_file.js +34 -0
- package/src/ngcc/src/host/esm5_host.d.ts +8 -0
- package/src/ngcc/src/host/esm5_host.js +37 -2
- package/src/ngcc/src/host/fesm2015_host.d.ts +2 -0
- package/src/ngcc/src/host/fesm2015_host.js +41 -2
- package/src/ngcc/src/host/ngcc_host.d.ts +8 -0
- package/src/ngcc/src/host/ngcc_host.js +1 -1
- package/src/ngcc/src/packages/build_marker.d.ts +1 -1
- package/src/ngcc/src/packages/build_marker.js +1 -1
- package/src/ngcc/src/packages/transformer.d.ts +6 -6
- package/src/ngcc/src/packages/transformer.js +32 -82
- package/src/ngcc/src/rendering/esm2015_renderer.d.ts +15 -28
- package/src/ngcc/src/rendering/esm2015_renderer.js +39 -81
- package/src/ngcc/src/rendering/esm5_renderer.d.ts +2 -2
- package/src/ngcc/src/rendering/esm5_renderer.js +4 -4
- package/src/ngcc/src/rendering/fesm2015_renderer.d.ts +38 -0
- package/src/ngcc/src/rendering/fesm2015_renderer.js +112 -0
- package/src/ngcc/src/rendering/renderer.d.ts +11 -11
- package/src/ngcc/src/rendering/renderer.js +49 -24
- package/src/ngtsc/annotations/src/component.js +2 -2
- package/src/ngtsc/annotations/src/directive.js +8 -1
- package/src/ngtsc/annotations/src/util.js +1 -4
- package/src/ngtsc/typecheck/src/type_check_block.js +1 -1
- package/src/perform_watch.js +5 -5
- package/src/transformers/api.d.ts +1 -1
- package/src/transformers/api.js +1 -1
- package/src/version.js +1 -1
- package/src/ngcc/canonical-path.d.ts +0 -14
- package/src/ngcc/src/analyzer.d.ts +0 -53
- package/src/ngcc/src/analyzer.js +0 -94
- package/src/ngcc/src/parsing/esm2015_parser.d.ts +0 -19
- package/src/ngcc/src/parsing/esm2015_parser.js +0 -64
- package/src/ngcc/src/parsing/esm5_parser.d.ts +0 -24
- package/src/ngcc/src/parsing/esm5_parser.js +0 -65
- package/src/ngcc/src/parsing/file_parser.d.ts +0 -35
- package/src/ngcc/src/parsing/file_parser.js +0 -13
- package/src/ngcc/src/parsing/parsed_class.js +0 -40
- package/src/ngcc/src/parsing/parsed_file.d.ts +0 -23
- package/src/ngcc/src/parsing/parsed_file.js +0 -36
|
@@ -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/ngcc/src/packages/transformer", ["require", "exports", "tslib", "canonical-path", "fs", "shelljs", "typescript", "@angular/compiler-cli/src/
|
|
7
|
+
define("@angular/compiler-cli/src/ngcc/src/packages/transformer", ["require", "exports", "tslib", "canonical-path", "fs", "shelljs", "typescript", "@angular/compiler-cli/src/ngcc/src/analysis/decoration_analyzer", "@angular/compiler-cli/src/ngcc/src/analysis/switch_marker_analyzer", "@angular/compiler-cli/src/ngcc/src/host/dts_mapper", "@angular/compiler-cli/src/ngcc/src/host/esm2015_host", "@angular/compiler-cli/src/ngcc/src/host/esm5_host", "@angular/compiler-cli/src/ngcc/src/host/fesm2015_host", "@angular/compiler-cli/src/ngcc/src/rendering/esm2015_renderer", "@angular/compiler-cli/src/ngcc/src/rendering/esm5_renderer", "@angular/compiler-cli/src/ngcc/src/rendering/fesm2015_renderer", "@angular/compiler-cli/src/ngcc/src/packages/build_marker"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -21,17 +21,15 @@
|
|
|
21
21
|
var fs_1 = require("fs");
|
|
22
22
|
var shelljs_1 = require("shelljs");
|
|
23
23
|
var ts = require("typescript");
|
|
24
|
-
var
|
|
25
|
-
var
|
|
26
|
-
var constants_1 = require("@angular/compiler-cli/src/ngcc/src/constants");
|
|
24
|
+
var decoration_analyzer_1 = require("@angular/compiler-cli/src/ngcc/src/analysis/decoration_analyzer");
|
|
25
|
+
var switch_marker_analyzer_1 = require("@angular/compiler-cli/src/ngcc/src/analysis/switch_marker_analyzer");
|
|
27
26
|
var dts_mapper_1 = require("@angular/compiler-cli/src/ngcc/src/host/dts_mapper");
|
|
28
27
|
var esm2015_host_1 = require("@angular/compiler-cli/src/ngcc/src/host/esm2015_host");
|
|
29
28
|
var esm5_host_1 = require("@angular/compiler-cli/src/ngcc/src/host/esm5_host");
|
|
30
29
|
var fesm2015_host_1 = require("@angular/compiler-cli/src/ngcc/src/host/fesm2015_host");
|
|
31
|
-
var esm2015_parser_1 = require("@angular/compiler-cli/src/ngcc/src/parsing/esm2015_parser");
|
|
32
|
-
var esm5_parser_1 = require("@angular/compiler-cli/src/ngcc/src/parsing/esm5_parser");
|
|
33
30
|
var esm2015_renderer_1 = require("@angular/compiler-cli/src/ngcc/src/rendering/esm2015_renderer");
|
|
34
31
|
var esm5_renderer_1 = require("@angular/compiler-cli/src/ngcc/src/rendering/esm5_renderer");
|
|
32
|
+
var fesm2015_renderer_1 = require("@angular/compiler-cli/src/ngcc/src/rendering/fesm2015_renderer");
|
|
35
33
|
var build_marker_1 = require("@angular/compiler-cli/src/ngcc/src/packages/build_marker");
|
|
36
34
|
/**
|
|
37
35
|
* A Package is stored in a directory on disk and that directory can contain one or more package
|
|
@@ -62,7 +60,6 @@
|
|
|
62
60
|
if (build_marker_1.checkMarkerFile(entryPoint, format)) {
|
|
63
61
|
return;
|
|
64
62
|
}
|
|
65
|
-
var outputFiles = [];
|
|
66
63
|
var options = {
|
|
67
64
|
allowJs: true,
|
|
68
65
|
maxNodeModuleJsDepth: Infinity,
|
|
@@ -71,16 +68,7 @@
|
|
|
71
68
|
// Create the TS program and necessary helpers.
|
|
72
69
|
// TODO : create a custom compiler host that reads from .bak files if available.
|
|
73
70
|
var host = ts.createCompilerHost(options);
|
|
74
|
-
var rootDirs =
|
|
75
|
-
if (options.rootDirs !== undefined) {
|
|
76
|
-
rootDirs = options.rootDirs;
|
|
77
|
-
}
|
|
78
|
-
else if (options.rootDir !== undefined) {
|
|
79
|
-
rootDirs = [options.rootDir];
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
rootDirs = [host.getCurrentDirectory()];
|
|
83
|
-
}
|
|
71
|
+
var rootDirs = this.getRootDirs(host, options);
|
|
84
72
|
var entryPointFilePath = entryPoint[format];
|
|
85
73
|
if (!entryPointFilePath) {
|
|
86
74
|
throw new Error("Missing entry point file for format, " + format + ", in package, " + entryPoint.path + ".");
|
|
@@ -89,30 +77,30 @@
|
|
|
89
77
|
var r3SymbolsPath = isCore ? this.findR3SymbolsPath(canonical_path_1.dirname(entryPointFilePath)) : null;
|
|
90
78
|
var rootPaths = r3SymbolsPath ? [entryPointFilePath, r3SymbolsPath] : [entryPointFilePath];
|
|
91
79
|
var packageProgram = ts.createProgram(rootPaths, options, host);
|
|
92
|
-
var typeChecker = packageProgram.getTypeChecker();
|
|
93
80
|
var dtsMapper = new dts_mapper_1.DtsMapper(canonical_path_1.dirname(entryPointFilePath), canonical_path_1.dirname(entryPoint.typings));
|
|
94
81
|
var reflectionHost = this.getHost(isCore, format, packageProgram, dtsMapper);
|
|
95
82
|
var r3SymbolsFile = r3SymbolsPath && packageProgram.getSourceFile(r3SymbolsPath) || null;
|
|
96
|
-
var parser = this.getFileParser(format, packageProgram, reflectionHost);
|
|
97
|
-
var analyzer = new analyzer_1.Analyzer(typeChecker, reflectionHost, rootDirs, isCore);
|
|
98
|
-
var renderer = this.getRenderer(format, packageProgram, reflectionHost, isCore, r3SymbolsFile);
|
|
99
83
|
// Parse and analyze the files.
|
|
100
|
-
var
|
|
101
|
-
var parsedFiles = parser.parseFile(entryPointFile);
|
|
102
|
-
var analyzedFiles = parsedFiles.map(function (parsedFile) { return analyzer.analyzeFile(parsedFile); });
|
|
84
|
+
var _a = this.analyzeProgram(packageProgram, reflectionHost, rootDirs, isCore), decorationAnalyses = _a.decorationAnalyses, switchMarkerAnalyses = _a.switchMarkerAnalyses;
|
|
103
85
|
// Transform the source files and source maps.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
// TODO(gkalpak): What about `.d.ts` source maps? (See
|
|
107
|
-
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-9.html#new---declarationmap.)
|
|
108
|
-
if (format === 'esm2015') {
|
|
109
|
-
outputFiles.push.apply(outputFiles, tslib_1.__spread(this.transformDtsFiles(analyzedFiles, this.sourcePath, this.targetPath, dtsMapper)));
|
|
110
|
-
}
|
|
86
|
+
var renderer = this.getRenderer(format, packageProgram, reflectionHost, isCore, r3SymbolsFile, dtsMapper);
|
|
87
|
+
var renderedFiles = renderer.renderProgram(packageProgram, decorationAnalyses, switchMarkerAnalyses);
|
|
111
88
|
// Write out all the transformed files.
|
|
112
|
-
|
|
89
|
+
renderedFiles.forEach(function (file) { return _this.writeFile(file); });
|
|
113
90
|
// Write the built-with-ngcc marker
|
|
114
91
|
build_marker_1.writeMarkerFile(entryPoint, format);
|
|
115
92
|
};
|
|
93
|
+
Transformer.prototype.getRootDirs = function (host, options) {
|
|
94
|
+
if (options.rootDirs !== undefined) {
|
|
95
|
+
return options.rootDirs;
|
|
96
|
+
}
|
|
97
|
+
else if (options.rootDir !== undefined) {
|
|
98
|
+
return [options.rootDir];
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return [host.getCurrentDirectory()];
|
|
102
|
+
}
|
|
103
|
+
};
|
|
116
104
|
Transformer.prototype.getHost = function (isCore, format, program, dtsMapper) {
|
|
117
105
|
switch (format) {
|
|
118
106
|
case 'esm2015':
|
|
@@ -126,64 +114,26 @@
|
|
|
126
114
|
throw new Error("Relection host for \"" + format + "\" not yet implemented.");
|
|
127
115
|
}
|
|
128
116
|
};
|
|
129
|
-
Transformer.prototype.
|
|
117
|
+
Transformer.prototype.getRenderer = function (format, program, host, isCore, rewriteCoreImportsTo, dtsMapper) {
|
|
130
118
|
switch (format) {
|
|
131
119
|
case 'esm2015':
|
|
120
|
+
return new esm2015_renderer_1.Esm2015Renderer(host, isCore, rewriteCoreImportsTo, this.sourcePath, this.targetPath, dtsMapper);
|
|
132
121
|
case 'fesm2015':
|
|
133
|
-
return new
|
|
122
|
+
return new fesm2015_renderer_1.Fesm2015Renderer(host, isCore, rewriteCoreImportsTo, this.sourcePath, this.targetPath);
|
|
134
123
|
case 'esm5':
|
|
135
124
|
case 'fesm5':
|
|
136
|
-
return new
|
|
137
|
-
default:
|
|
138
|
-
throw new Error("File parser for \"" + format + "\" not yet implemented.");
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
Transformer.prototype.getRenderer = function (format, program, host, isCore, rewriteCoreImportsTo) {
|
|
142
|
-
switch (format) {
|
|
143
|
-
case 'esm2015':
|
|
144
|
-
case 'fesm2015':
|
|
145
|
-
return new esm2015_renderer_1.Esm2015Renderer(host, isCore, rewriteCoreImportsTo);
|
|
146
|
-
case 'esm5':
|
|
147
|
-
case 'fesm5':
|
|
148
|
-
return new esm5_renderer_1.Esm5Renderer(host, isCore, rewriteCoreImportsTo);
|
|
125
|
+
return new esm5_renderer_1.Esm5Renderer(host, isCore, rewriteCoreImportsTo, this.sourcePath, this.targetPath);
|
|
149
126
|
default:
|
|
150
127
|
throw new Error("Renderer for \"" + format + "\" not yet implemented.");
|
|
151
128
|
}
|
|
152
129
|
};
|
|
153
|
-
Transformer.prototype.
|
|
154
|
-
var
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
return dtsTransformer.recordStaticField(analyzedClass.name, analyzedClass.compilation);
|
|
161
|
-
});
|
|
162
|
-
// Find the corresponding `.d.ts` file.
|
|
163
|
-
var sourceFileName = analyzedFile.sourceFile.fileName;
|
|
164
|
-
var originalDtsFileName = dtsMapper.getDtsFileNameFor(sourceFileName);
|
|
165
|
-
var originalDtsContents = fs_1.readFileSync(originalDtsFileName, 'utf8');
|
|
166
|
-
// Transform the `.d.ts` file based on the recorded source file changes.
|
|
167
|
-
var transformedDtsFileName = canonical_path_1.resolve(targetNodeModules, canonical_path_1.relative(sourceNodeModules, originalDtsFileName));
|
|
168
|
-
var transformedDtsContents = dtsTransformer.transform(originalDtsContents, sourceFileName);
|
|
169
|
-
// Add the transformed `.d.ts` file to the list of output files.
|
|
170
|
-
outputFiles.push({ path: transformedDtsFileName, contents: transformedDtsContents });
|
|
171
|
-
});
|
|
172
|
-
return outputFiles;
|
|
173
|
-
};
|
|
174
|
-
Transformer.prototype.transformSourceFiles = function (analyzedFiles, sourceNodeModules, targetNodeModules, renderer) {
|
|
175
|
-
var outputFiles = [];
|
|
176
|
-
analyzedFiles.forEach(function (analyzedFile) {
|
|
177
|
-
// Transform the source file based on the recorded changes.
|
|
178
|
-
var targetPath = canonical_path_1.resolve(targetNodeModules, canonical_path_1.relative(sourceNodeModules, analyzedFile.sourceFile.fileName));
|
|
179
|
-
var _a = renderer.renderFile(analyzedFile, targetPath), source = _a.source, map = _a.map;
|
|
180
|
-
// Add the transformed file (and source map, if available) to the list of output files.
|
|
181
|
-
outputFiles.push(source);
|
|
182
|
-
if (map) {
|
|
183
|
-
outputFiles.push(map);
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
return outputFiles;
|
|
130
|
+
Transformer.prototype.analyzeProgram = function (program, reflectionHost, rootDirs, isCore) {
|
|
131
|
+
var decorationAnalyzer = new decoration_analyzer_1.DecorationAnalyzer(program.getTypeChecker(), reflectionHost, rootDirs, isCore);
|
|
132
|
+
var switchMarkerAnalyzer = new switch_marker_analyzer_1.SwitchMarkerAnalyzer(reflectionHost);
|
|
133
|
+
return {
|
|
134
|
+
decorationAnalyses: decorationAnalyzer.analyzeProgram(program),
|
|
135
|
+
switchMarkerAnalyses: switchMarkerAnalyzer.analyzeProgram(program),
|
|
136
|
+
};
|
|
187
137
|
};
|
|
188
138
|
Transformer.prototype.writeFile = function (file) {
|
|
189
139
|
shelljs_1.mkdir('-p', canonical_path_1.dirname(file.path));
|
|
@@ -231,4 +181,4 @@
|
|
|
231
181
|
}());
|
|
232
182
|
exports.Transformer = Transformer;
|
|
233
183
|
});
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25nY2Mvc3JjL3BhY2thZ2VzL3RyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILGlEQUEwRDtJQUMxRCx5QkFBbUY7SUFDbkYsbUNBQWtDO0lBQ2xDLCtCQUFpQztJQUVqQyx1RUFBNEQ7SUFDNUQsd0VBQW1EO0lBQ25ELDBFQUEyQztJQUMzQyxpRkFBNkM7SUFDN0MscUZBQTJEO0lBQzNELCtFQUFxRDtJQUNyRCx1RkFBNkQ7SUFFN0QsNEZBQTREO0lBQzVELHNGQUFzRDtJQUV0RCxrR0FBOEQ7SUFDOUQsNEZBQXdEO0lBR3hELHlGQUFnRTtJQUdoRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JHO0lBQ0g7UUFDRSxxQkFBb0IsVUFBa0IsRUFBVSxVQUFrQjtZQUE5QyxlQUFVLEdBQVYsVUFBVSxDQUFRO1lBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUFHLENBQUM7UUFFdEUsK0JBQVMsR0FBVCxVQUFVLFVBQXNCLEVBQUUsTUFBd0I7WUFBMUQsaUJBZ0VDO1lBL0RDLElBQUksOEJBQWUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZDLE9BQU87YUFDUjtZQUVELElBQU0sV0FBVyxHQUFlLEVBQUUsQ0FBQztZQUNuQyxJQUFNLE9BQU8sR0FBdUI7Z0JBQ2xDLE9BQU8sRUFBRSxJQUFJO2dCQUNiLG9CQUFvQixFQUFFLFFBQVE7Z0JBQzlCLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSTthQUN6QixDQUFDO1lBRUYsK0NBQStDO1lBQy9DLGdGQUFnRjtZQUNoRixJQUFNLElBQUksR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsSUFBSSxRQUFRLEdBQXVCLFNBQVMs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Qyx3QkFBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0RCxDQUFDLENBQUMsQ0FBQzs7Z0JBRVgsS0FBMkIsSUFBQSxtQkFBQSxpQkFBQSxjQUFjLENBQUEsOENBQUEsMEVBQUU7b0JBQXRDLElBQU0sWUFBWSwyQkFBQTtvQkFDckIsSUFBTSxtQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQU8sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFDbkYsSUFBSSxtQkFBaUIsRUFBRTt3QkFDckIsT0FBTyxtQkFBaUIsQ0FBQztxQkFDMUI7aUJBQ0Y7Ozs7Ozs7OztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNILGtCQUFDO0lBQUQsQ0FBQyxBQXZNRCxJQXVNQztJQXZNWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7ZGlybmFtZSwgcmVsYXRpdmUsIHJlc29sdmV9IGZyb20gJ2Nhbm9uaWNhbC1wYXRoJztcbmltcG9ydCB7ZXhpc3RzU3luYywgbHN0YXRTeW5jLCByZWFkRmlsZVN5bmMsIHJlYWRkaXJTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge21rZGlyLCBtdn0gZnJvbSAnc2hlbGxqcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtEdHNGaWxlVHJhbnNmb3JtZXJ9IGZyb20gJy4uLy4uLy4uL25ndHNjL3RyYW5zZm9ybSc7XG5pbXBvcnQge0FuYWx5emVkRmlsZSwgQW5hbHl6ZXJ9IGZyb20gJy4uL2FuYWx5emVyJztcbmltcG9ydCB7SU1QT1JUX1BSRUZJWH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7RHRzTWFwcGVyfSBmcm9tICcuLi9ob3N0L2R0c19tYXBwZXInO1xuaW1wb3J0IHtFc20yMDE1UmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uL2hvc3QvZXNtMjAxNV9ob3N0JztcbmltcG9ydCB7RXNtNVJlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi9ob3N0L2VzbTVfaG9zdCc7XG5pbXBvcnQge0Zlc20yMDE1UmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uL2hvc3QvZmVzbTIwMTVfaG9zdCc7XG5pbXBvcnQge05nY2NSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vaG9zdC9uZ2NjX2hvc3QnO1xuaW1wb3J0IHtFc20yMDE1RmlsZVBhcnNlcn0gZnJvbSAnLi4vcGFyc2luZy9lc20yMDE1X3BhcnNlcic7XG5pbXBvcnQge0VzbTVGaWxlUGFyc2VyfSBmcm9tICcuLi9wYXJzaW5nL2VzbTVfcGFyc2VyJztcbmltcG9ydCB7RmlsZVBhcnNlcn0gZnJvbSAnLi4vcGFyc2luZy9maWxlX3BhcnNlcic7XG5pbXBvcnQge0VzbTIwMTVSZW5kZXJlcn0gZnJvbSAnLi4vcmVuZGVyaW5nL2VzbTIwMTVfcmVuZGVyZXInO1xuaW1wb3J0IHtFc201UmVuZGVyZXJ9IGZyb20gJy4uL3JlbmRlcmluZy9lc201X3JlbmRlcmVyJztcbmltcG9ydCB7RmlsZUluZm8sIFJlbmRlcmVyfSBmcm9tICcuLi9yZW5kZXJpbmcvcmVuZGVyZXInO1xuXG5pbXBvcnQge2NoZWNrTWFya2VyRmlsZSwgd3JpdGVNYXJrZXJGaWxlfSBmcm9tICcuL2J1aWxkX21hcmtlcic7XG5pbXBvcnQge0VudHJ5UG9pbnQsIEVudHJ5UG9pbnRGb3JtYXR9IGZyb20gJy4vZW50cnlfcG9pbnQnO1xuXG4vKipcbiAqIEEgUGFja2FnZSBpcyBzdG9yZWQgaW4gYSBkaXJlY3Rvcnkgb24gZGlzayBhbmQgdGhhdCBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgcGFja2FnZVxuICogZm9ybWF0cyAtIGUuZy4gZmVzbTIwMTUsIFVNRCwgZXRjLiBBZGRpdGlvbmFsbHksIGVhY2ggcGFja2FnZSBwcm92aWRlcyB0eXBpbmdzIChgLmQudHNgIGZpbGVzKS5cbiAqXG4gKiBFYWNoIG9mIHRoZXNlIGZvcm1hdHMgZXhwb3NlcyBvbmUgb3IgbW9yZSBlbnRyeSBwb2ludHMsIHdoaWNoIGFyZSBzb3VyY2UgZmlsZXMgdGhhdCBuZWVkIHRvIGJlXG4gKiBwYXJzZWQgdG8gaWRlbnRpZnkgdGhlIGRlY29yYXRlZCBleHBvcnRlZCBjbGFzc2VzIHRoYXQgbmVlZCB0byBiZSBhbmFseXplZCBhbmQgY29tcGlsZWQgYnkgb25lIG9yXG4gKiBtb3JlIGBEZWNvcmF0b3JIYW5kbGVyYCBvYmplY3RzLlxuICpcbiAqIEVhY2ggZW50cnkgcG9pbnQgdG8gYSBwYWNrYWdlIGlzIGlkZW50aWZpZWQgYnkgYSBgU291cmNlRmlsZWAgdGhhdCBjYW4gYmUgcGFyc2VkIGFuZCBhbmFseXplZCB0b1xuICogaWRlbnRpZnkgY2xhc3NlcyB0aGF0IG5lZWQgdG8gYmUgdHJhbnNmb3JtZWQ7IGFuZCB0aGVuIGZpbmFsbHkgcmVuZGVyZWQgYW5kIHdyaXR0ZW4gdG8gZGlzay5cbiAqIFRoZSBhY3R1YWwgZmlsZSB3aGljaCBuZWVkcyB0byBiZSB0cmFuc2Zvcm1lZCBkZXBlbmRzIHVwb24gdGhlIHBhY2thZ2UgZm9ybWF0LlxuICpcbiAqIEFsb25nIHdpdGggdGhlIHNvdXJjZSBmaWxlcywgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIG1hcHMgKGVpdGhlciBpbmxpbmUgb3IgZXh0ZXJuYWwpIGFuZFxuICogYC5kLnRzYCBmaWxlcyBhcmUgdHJhbnNmb3JtZWQgYWNjb3JkaW5nbHkuXG4gKlxuICogLSBGbGF0IGZpbGUgcGFja2FnZXMgaGF2ZSBhbGwgdGhlIGNsYXNzZXMgaW4gYSBzaW5nbGUgZmlsZS5cbiAqIC0gT3RoZXIgcGFja2FnZXMgbWF5IHJlLWV4cG9ydCBjbGFzc2VzIGZyb20gb3RoZXIgbm9uLWVudHJ5IHBvaW50IGZpbGVzLlxuICogLSBTb21lIGZvcm1hdHMgbWF5IGNvbnRhaW4gbXVsdGlwbGUgXCJtb2R1bGVzXCIgaW4gYSBzaW5nbGUgZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zZm9ybWVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzb3VyY2VQYXRoOiBzdHJpbmcsIHByaXZhdGUgdGFyZ2V0UGF0aDogc3RyaW5nKSB7fVxuXG4gIHRyYW5zZm9ybShlbnRyeVBvaW50OiBFbnRyeVBvaW50LCBmb3JtYXQ6IEVudHJ5UG9pbnRGb3JtYXQpOiB2b2lkIHtcbiAgICBpZiAoY2hlY2tNYXJrZXJGaWxlKGVudHJ5UG9pbnQsIGZvcm1hdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXRGaWxlczogRmlsZUluZm9bXSA9IFtdO1xuICAgIGNvbnN0IG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyA9IHtcbiAgICAgIGFsbG93SnM6IHRydWUsXG4gICAgICBtYXhOb2RlTW9kdWxlSnNEZXB0aDogSW5maW5pdHksXG4gICAgICByb290RGlyOiBlbnRyeVBvaW50LnBhdGgsXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSB0aGUgVFMgcHJvZ3JhbSBhbmQgbmVjZXNzYXJ5IGhlbHBlcnMuXG4gICAgLy8gVE9ETyA6IGNyZWF0ZSBhIGN1c3RvbSBjb21waWxlciBob3N0IHRoYXQgcmVhZHMgZnJvbSAuYmFrIGZpbGVzIGlmIGF2YWlsYWJsZS5cbiAgICBjb25zdCBob3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KG9wdGlvbnMpO1xuICAgIGxldCByb290RGlyczogc3RyaW5nW118dW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChvcHRpb25zLnJvb3REaXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJvb3REaXJzID0gb3B0aW9ucy5yb290RGlycztcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMucm9vdERpciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByb290RGlycyA9IFtvcHRpb25zLnJvb3REaXJdO1xuICAgIH0gZWxzZSB7XG4gICAgICByb290RGlycyA9IFtob3N0LmdldEN1cnJlbnREaXJlY3RvcnkoKV07XG4gICAgfVxuICAgIGNvbnN0IGVudHJ5UG9pbnRGaWxlUGF0aCA9IGVudHJ5UG9pbnRbZm9ybWF0XTtcbiAgICBpZiAoIWVudHJ5UG9pbnRGaWxlUGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBNaXNzaW5nIGVudHJ5IHBvaW50IGZpbGUgZm9yIGZvcm1hdCwgJHtmb3JtYXR9LCBpbiBwYWNrYWdlLCAke2VudHJ5UG9pbnQucGF0aH0uYCk7XG4gICAgfVxuICAgIGNvbnN0IGlzQ29yZSA9IGVudHJ5UG9pbnQubmFtZSA9PT0gJ0Bhbmd1bGFyL2NvcmUnO1xuICAgIGNvbnN0IHIzU3ltYm9sc1BhdGggPSBpc0NvcmUgPyB0aGlzLmZpbmRSM1N5bWJvbHNQYXRoKGRpcm5hbWUoZW50cnlQb2ludEZpbGVQYXRoKSkgOiBudWxsO1xuICAgIGNvbnN0IHJvb3RQYXRocyA9IHIzU3ltYm9sc1BhdGggPyBbZW50cnlQb2ludEZpbGVQYXRoLCByM1N5bWJvbHNQYXRoXSA6IFtlbnRyeVBvaW50RmlsZVBhdGhdO1xuICAgIGNvbnN0IHBhY2thZ2VQcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShyb290UGF0aHMsIG9wdGlvbnMsIGhvc3QpO1xuICAgIGNvbnN0IHR5cGVDaGVja2VyID0gcGFja2FnZVByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgICBjb25zdCBkdHNNYXBwZXIgPSBuZXcgRHRzTWFwcGVyKGRpcm5hbWUoZW50cnlQb2ludEZpbGVQYXRoKSwgZGlybmFtZShlbnRyeVBvaW50LnR5cGluZ3MpKTtcbiAgICBjb25zdCByZWZsZWN0aW9uSG9zdCA9IHRoaXMuZ2V0SG9zdChpc0NvcmUsIGZvcm1hdCwgcGFja2FnZVByb2dyYW0sIGR0c01hcHBlcik7XG4gICAgY29uc3QgcjNTeW1ib2xzRmlsZSA9IHIzU3ltYm9sc1BhdGggJiYgcGFja2FnZVByb2dyYW0uZ2V0U291cmNlRmlsZShyM1N5bWJvbHNQYXRoKSB8fCBudWxsO1xuXG4gICAgY29uc3QgcGFyc2VyID0gdGhpcy5nZXRGaWxlUGFyc2VyKGZvcm1hdCwgcGFja2FnZVByb2dyYW0sIHJlZmxlY3Rpb25Ib3N0KTtcbiAgICBjb25zdCBhbmFseXplciA9IG5ldyBBbmFseXplcih0eXBlQ2hlY2tlciwgcmVmbGVjdGlvbkhvc3QsIHJvb3REaXJzLCBpc0NvcmUpO1xuICAgIGNvbnN0IHJlbmRlcmVyID1cbiAgICAgICAgdGhpcy5nZXRSZW5kZXJlcihmb3JtYXQsIHBhY2thZ2VQcm9ncmFtLCByZWZsZWN0aW9uSG9zdCwgaXNDb3JlLCByM1N5bWJvbHNGaWxlKTtcblxuICAgIC8vIFBhcnNlIGFuZCBhbmFseXplIHRoZSBmaWxlcy5cbiAgICBjb25zdCBlbnRyeVBvaW50RmlsZSA9IHBhY2thZ2VQcm9ncmFtLmdldFNvdXJjZUZpbGUoZW50cnlQb2ludEZpbGVQYXRoKSAhO1xuICAgIGNvbnN0IHBhcnNlZEZpbGVzID0gcGFyc2VyLnBhcnNlRmlsZShlbnRyeVBvaW50RmlsZSk7XG4gICAgY29uc3QgYW5hbHl6ZWRGaWxlcyA9IHBhcnNlZEZpbGVzLm1hcChwYXJzZWRGaWxlID0+IGFuYWx5emVyLmFuYWx5emVGaWxlKHBhcnNlZEZpbGUpKTtcblxuICAgIC8vIFRyYW5zZm9ybSB0aGUgc291cmNlIGZpbGVzIGFuZCBzb3VyY2UgbWFwcy5cbiAgICBvdXRwdXRGaWxlcy5wdXNoKFxuICAgICAgICAuLi50aGlzLnRyYW5zZm9ybVNvdXJjZUZpbGVzKGFuYWx5emVkRmlsZXMsIHRoaXMuc291cmNlUGF0aCwgdGhpcy50YXJnZXRQYXRoLCByZW5kZXJlcikpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBgLmQudHNgIGZpbGVzIChpZiBuZWNlc3NhcnkpLlxuICAgIC8vIFRPRE8oZ2thbHBhayk6IFdoYXQgYWJvdXQgYC5kLnRzYCBzb3VyY2UgbWFwcz8gKFNlZVxuICAgIC8vIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL3JlbGVhc2Utbm90ZXMvdHlwZXNjcmlwdC0yLTkuaHRtbCNuZXctLS1kZWNsYXJhdGlvbm1hcC4pXG4gICAgaWYgKGZvcm1hdCA9PT0gJ2VzbTIwMTUnKSB7XG4gICAgICBvdXRwdXRGaWxlcy5wdXNoKFxuICAgICAgICAgIC4uLnRoaXMudHJhbnNmb3JtRHRzRmlsZXMoYW5hbHl6ZWRGaWxlcywgdGhpcy5zb3VyY2VQYXRoLCB0aGlzLnRhcmdldFBhdGgsIGR0c01hcHBlcikpO1xuICAgIH1cblxuICAgIC8vIFdyaXRlIG91dCBhbGwgdGhlIHRyYW5zZm9ybWVkIGZpbGVzLlxuICAgIG91dHB1dEZpbGVzLmZvckVhY2goZmlsZSA9PiB0aGlzLndyaXRlRmlsZShmaWxlKSk7XG5cbiAgICAvLyBXcml0ZSB0aGUgYnVpbHQtd2l0aC1uZ2NjIG1hcmtlclxuICAgIHdyaXRlTWFya2VyRmlsZShlbnRyeVBvaW50LCBmb3JtYXQpO1xuICB9XG5cbiAgZ2V0SG9zdChpc0NvcmU6IGJvb2xlYW4sIGZvcm1hdDogc3RyaW5nLCBwcm9ncmFtOiB0cy5Qcm9ncmFtLCBkdHNNYXBwZXI6IER0c01hcHBlcik6XG4gICAgICBOZ2NjUmVmbGVjdGlvbkhvc3Qge1xuICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICBjYXNlICdlc20yMDE1JzpcbiAgICAgICAgcmV0dXJuIG5ldyBFc20yMDE1UmVmbGVjdGlvbkhvc3QoaXNDb3JlLCBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCksIGR0c01hcHBlcik7XG4gICAgICBjYXNlICdmZXNtMjAxNSc6XG4gICAgICAgIHJldHVybiBuZXcgRmVzbTIwMTVSZWZsZWN0aW9uSG9zdChpc0NvcmUsIHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSk7XG4gICAgICBjYXNlICdlc201JzpcbiAgICAgIGNhc2UgJ2Zlc201JzpcbiAgICAgICAgcmV0dXJuIG5ldyBFc201UmVmbGVjdGlvbkhvc3QoaXNDb3JlLCBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCkpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWxlY3Rpb24gaG9zdCBmb3IgXCIke2Zvcm1hdH1cIiBub3QgeWV0IGltcGxlbWVudGVkLmApO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpbGVQYXJzZXIoZm9ybWF0OiBzdHJpbmcsIHByb2dyYW06IHRzLlByb2dyYW0sIGhvc3Q6IE5nY2NSZWZsZWN0aW9uSG9zdCk6IEZpbGVQYXJzZXIge1xuICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICBjYXNlICdlc20yMDE1JzpcbiAgICAgIGNhc2UgJ2Zlc20yMDE1JzpcbiAgICAgICAgcmV0dXJuIG5ldyBFc20yMDE1RmlsZVBhcnNlcihwcm9ncmFtLCBob3N0KTtcbiAgICAgIGNhc2UgJ2VzbTUnOlxuICAgICAgY2FzZSAnZmVzbTUnOlxuICAgICAgICByZXR1cm4gbmV3IEVzbTVGaWxlUGFyc2VyKHByb2dyYW0sIGhvc3QpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlIHBhcnNlciBmb3IgXCIke2Zvcm1hdH1cIiBub3QgeWV0IGltcGxlbWVudGVkLmApO1xuICAgIH1cbiAgfVxuXG4gIGdldFJlbmRlcmVyKFxuICAgICAgZm9ybWF0OiBzdHJpbmcsIHByb2dyYW06IHRzLlByb2dyYW0sIGhvc3Q6IE5nY2NSZWZsZWN0aW9uSG9zdCwgaXNDb3JlOiBib29sZWFuLFxuICAgICAgcmV3cml0ZUNvcmVJbXBvcnRzVG86IHRzLlNvdXJjZUZpbGV8bnVsbCk6IFJlbmRlcmVyIHtcbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAnZXNtMjAxNSc6XG4gICAgICBjYXNlICdmZXNtMjAxNSc6XG4gICAgICAgIHJldHVybiBuZXcgRXNtMjAxNVJlbmRlcmVyKGhvc3QsIGlzQ29yZSwgcmV3cml0ZUNvcmVJbXBvcnRzVG8pO1xuICAgICAgY2FzZSAnZXNtNSc6XG4gICAgICBjYXNlICdmZXNtNSc6XG4gICAgICAgIHJldHVybiBuZXcgRXNtNVJlbmRlcmVyKGhvc3QsIGlzQ29yZSwgcmV3cml0ZUNvcmVJbXBvcnRzVG8pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZW5kZXJlciBmb3IgXCIke2Zvcm1hdH1cIiBub3QgeWV0IGltcGxlbWVudGVkLmApO1xuICAgIH1cbiAgfVxuXG4gIHRyYW5zZm9ybUR0c0ZpbGVzKFxuICAgICAgYW5hbHl6ZWRGaWxlczogQW5hbHl6ZWRGaWxlW10sIHNvdXJjZU5vZGVNb2R1bGVzOiBzdHJpbmcsIHRhcmdldE5vZGVNb2R1bGVzOiBzdHJpbmcsXG4gICAgICBkdHNNYXBwZXI6IER0c01hcHBlcik6IEZpbGVJbmZvW10ge1xuICAgIGNvbnN0IG91dHB1dEZpbGVzOiBGaWxlSW5mb1tdID0gW107XG5cbiAgICBhbmFseXplZEZpbGVzLmZvckVhY2goYW5hbHl6ZWRGaWxlID0+IHtcbiAgICAgIC8vIENyZWF0ZSBhIGBEdHNGaWxlVHJhbnNmb3JtZXJgIGZvciB0aGUgc291cmNlIGZpbGUgYW5kIHJlY29yZCB0aGUgZ2VuZXJhdGVkIGZpZWxkcywgd2hpY2hcbiAgICAgIC8vIHdpbGwgYWxsb3cgdGhlIGNvcnJlc3BvbmRpbmcgYC5kLnRzYCBmaWxlIHRvIGJlIHRyYW5zZm9ybWVkIGxhdGVyLlxuICAgICAgY29uc3QgZHRzVHJhbnNmb3JtZXIgPSBuZXcgRHRzRmlsZVRyYW5zZm9ybWVyKG51bGwsIElNUE9SVF9QUkVGSVgpO1xuICAgICAgYW5hbHl6ZWRGaWxlLmFuYWx5emVkQ2xhc3Nlcy5mb3JFYWNoKFxuICAgICAgICAgIGFuYWx5emVkQ2xhc3MgPT5cbiAgICAgICAgICAgICAgZHRzVHJhbnNmb3JtZXIucmVjb3JkU3RhdGljRmllbGQoYW5hbHl6ZWRDbGFzcy5uYW1lLCBhbmFseXplZENsYXNzLmNvbXBpbGF0aW9uKSk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgYC5kLnRzYCBmaWxlLlxuICAgICAgY29uc3Qgc291cmNlRmlsZU5hbWUgPSBhbmFseXplZEZpbGUuc291cmNlRmlsZS5maWxlTmFtZTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsRHRzRmlsZU5hbWUgPSBkdHNNYXBwZXIuZ2V0RHRzRmlsZU5hbWVGb3Ioc291cmNlRmlsZU5hbWUpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxEdHNDb250ZW50cyA9IHJlYWRGaWxlU3luYyhvcmlnaW5hbER0c0ZpbGVOYW1lLCAndXRmOCcpO1xuXG4gICAgICAvLyBUcmFuc2Zvcm0gdGhlIGAuZC50c2AgZmlsZSBiYXNlZCBvbiB0aGUgcmVjb3JkZWQgc291cmNlIGZpbGUgY2hhbmdlcy5cbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRHRzRmlsZU5hbWUgPVxuICAgICAgICAgIHJlc29sdmUodGFyZ2V0Tm9kZU1vZHVsZXMsIHJlbGF0aXZlKHNvdXJjZU5vZGVNb2R1bGVzLCBvcmlnaW5hbER0c0ZpbGVOYW1lKSk7XG4gICAgICBjb25zdCB0cmFuc2Zvcm1lZER0c0NvbnRlbnRzID0gZHRzVHJhbnNmb3JtZXIudHJhbnNmb3JtKG9yaWdpbmFsRHRzQ29udGVudHMsIHNvdXJjZUZpbGVOYW1lKTtcblxuICAgICAgLy8gQWRkIHRoZSB0cmFuc2Zvcm1lZCBgLmQudHNgIGZpbGUgdG8gdGhlIGxpc3Qgb2Ygb3V0cHV0IGZpbGVzLlxuICAgICAgb3V0cHV0RmlsZXMucHVzaCh7cGF0aDogdHJhbnNmb3JtZWREdHNGaWxlTmFtZSwgY29udGVudHM6IHRyYW5zZm9ybWVkRHRzQ29udGVudHN9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBvdXRwdXRGaWxlcztcbiAgfVxuXG4gIHRyYW5zZm9ybVNvdXJjZUZpbGVzKFxuICAgICAgYW5hbHl6ZWRGaWxlczogQW5hbHl6ZWRGaWxlW10sIHNvdXJjZU5vZGVNb2R1bGVzOiBzdHJpbmcsIHRhcmdldE5vZGVNb2R1bGVzOiBzdHJpbmcsXG4gICAgICByZW5kZXJlcjogUmVuZGVyZXIpOiBGaWxlSW5mb1tdIHtcbiAgICBjb25zdCBvdXRwdXRGaWxlczogRmlsZUluZm9bXSA9IFtdO1xuXG4gICAgYW5hbHl6ZWRGaWxlcy5mb3JFYWNoKGFuYWx5emVkRmlsZSA9PiB7XG4gICAgICAvLyBUcmFuc2Zvcm0gdGhlIHNvdXJjZSBmaWxlIGJhc2VkIG9uIHRoZSByZWNvcmRlZCBjaGFuZ2VzLlxuICAgICAgY29uc3QgdGFyZ2V0UGF0aCA9XG4gICAgICAgICAgcmVzb2x2ZSh0YXJnZXROb2RlTW9kdWxlcywgcmVsYXRpdmUoc291cmNlTm9kZU1vZHVsZXMsIGFuYWx5emVkRmlsZS5zb3VyY2VGaWxlLmZpbGVOYW1lKSk7XG4gICAgICBjb25zdCB7c291cmNlLCBtYXB9ID0gcmVuZGVyZXIucmVuZGVyRmlsZShhbmFseXplZEZpbGUsIHRhcmdldFBhdGgpO1xuXG4gICAgICAvLyBBZGQgdGhlIHRyYW5zZm9ybWVkIGZpbGUgKGFuZCBzb3VyY2UgbWFwLCBpZiBhdmFpbGFibGUpIHRvIHRoZSBsaXN0IG9mIG91dHB1dCBmaWxlcy5cbiAgICAgIG91dHB1dEZpbGVzLnB1c2goc291cmNlKTtcbiAgICAgIGlmIChtYXApIHtcbiAgICAgICAgb3V0cHV0RmlsZXMucHVzaChtYXApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG91dHB1dEZpbGVzO1xuICB9XG5cbiAgd3JpdGVGaWxlKGZpbGU6IEZpbGVJbmZvKTogdm9pZCB7XG4gICAgbWtkaXIoJy1wJywgZGlybmFtZShmaWxlLnBhdGgpKTtcbiAgICBjb25zdCBiYWNrUGF0aCA9IGZpbGUucGF0aCArICcuYmFrJztcbiAgICBpZiAoZXhpc3RzU3luYyhmaWxlLnBhdGgpICYmICFleGlzdHNTeW5jKGJhY2tQYXRoKSkge1xuICAgICAgbXYoZmlsZS5wYXRoLCBiYWNrUGF0aCk7XG4gICAgfVxuICAgIHdyaXRlRmlsZVN5bmMoZmlsZS5wYXRoLCBmaWxlLmNvbnRlbnRzLCAndXRmOCcpO1xuICB9XG5cbiAgZmluZFIzU3ltYm9sc1BhdGgoZGlyZWN0b3J5OiBzdHJpbmcpOiBzdHJpbmd8bnVsbCB7XG4gICAgY29uc3QgcjNTeW1ib2xzRmlsZVBhdGggPSByZXNvbHZlKGRpcmVjdG9yeSwgJ3IzX3N5bWJvbHMuanMnKTtcbiAgICBpZiAoZXhpc3RzU3luYyhyM1N5bWJvbHNGaWxlUGF0aCkpIHtcbiAgICAgIHJldHVybiByM1N5bWJvbHNGaWxlUGF0aDtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJEaXJlY3RvcmllcyA9XG4gICAgICAgIHJlYWRkaXJTeW5jKGRpcmVjdG9yeSlcbiAgICAgICAgICAgIC8vIE5vdCBpbnRlcmVzdGVkIGluIGhpZGRlbiBmaWxlc1xuICAgICAgICAgICAgLmZpbHRlcihwID0+ICFwLnN0YXJ0c1dpdGgoJy4nKSlcbiAgICAgICAgICAgIC8vIElnbm9yZSBub2RlX21vZHVsZXNcbiAgICAgICAgICAgIC5maWx0ZXIocCA9PiBwICE9PSAnbm9kZV9tb2R1bGVzJylcbiAgICAgICAgICAgIC8vIE9ubHkgaW50ZXJlc3RlZCBpbiBkaXJlY3RvcmllcyAoYW5kIG9ubHkgdGhvc2UgdGhhdCBhcmUgbm90IHN5bWxpbmtzKVxuICAgICAgICAgICAgLmZpbHRlcihwID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhdCA9IGxzdGF0U3luYyhyZXNvbHZlKGRpcmVjdG9yeSwgcCkpO1xuICAgICAgICAgICAgICByZXR1cm4gc3RhdC5pc0RpcmVjdG9yeSgpICYmICFzdGF0LmlzU3ltYm9saWNMaW5rKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgIGZvciAoY29uc3Qgc3ViRGlyZWN0b3J5IG9mIHN1YkRpcmVjdG9yaWVzKSB7XG4gICAgICBjb25zdCByM1N5bWJvbHNGaWxlUGF0aCA9IHRoaXMuZmluZFIzU3ltYm9sc1BhdGgocmVzb2x2ZShkaXJlY3RvcnksIHN1YkRpcmVjdG9yeSkpO1xuICAgICAgaWYgKHIzU3ltYm9sc0ZpbGVQYXRoKSB7XG4gICAgICAgIHJldHVybiByM1N5bWJvbHNGaWxlUGF0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvc3JjL25nY2Mvc3JjL3BhY2thZ2VzL3RyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILGlEQUFnRDtJQUNoRCx5QkFBcUU7SUFDckUsbUNBQWtDO0lBQ2xDLCtCQUFpQztJQUVqQyx1R0FBbUU7SUFDbkUsNkdBQXdFO0lBQ3hFLGlGQUE2QztJQUM3QyxxRkFBMkQ7SUFDM0QsK0VBQXFEO0lBQ3JELHVGQUE2RDtJQUU3RCxrR0FBOEQ7SUFDOUQsNEZBQXdEO0lBQ3hELG9HQUFnRTtJQUdoRSx5RkFBZ0U7SUFHaEU7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCRztJQUNIO1FBQ0UscUJBQW9CLFVBQWtCLEVBQVUsVUFBa0I7WUFBOUMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtZQUFVLGVBQVUsR0FBVixVQUFVLENBQVE7UUFBRyxDQUFDO1FBRXRFLCtCQUFTLEdBQVQsVUFBVSxVQUFzQixFQUFFLE1BQXdCO1lBQTFELGlCQTJDQztZQTFDQyxJQUFJLDhCQUFlLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUN2QyxPQUFPO2FBQ1I7WUFFRCxJQUFNLE9BQU8sR0FBdUI7Z0JBQ2xDLE9BQU8sRUFBRSxJQUFJO2dCQUNiLG9CQUFvQixFQUFFLFFBQVE7Z0JBQzlCLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSTthQUN6QixDQUFDO1lBRUYsK0NBQStDO1lBQy9DLGdGQUFnRjtZQUNoRixJQUFNLElBQUksR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDakQsSUFBTSxrQkFBa0Is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Q3ZFLE1BQU0sQ0FBQyxVQUFBLENBQUM7Z0JBQ1AsSUFBTSxJQUFJLEdBQUcsY0FBUyxDQUFDLHdCQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RELENBQUMsQ0FBQyxDQUFDOztnQkFFWCxLQUEyQixJQUFBLG1CQUFBLGlCQUFBLGNBQWMsQ0FBQSw4Q0FBQSwwRUFBRTtvQkFBdEMsSUFBTSxZQUFZLDJCQUFBO29CQUNyQixJQUFNLG1CQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNuRixJQUFJLG1CQUFpQixFQUFFO3dCQUNyQixPQUFPLG1CQUFpQixDQUFDO3FCQUMxQjtpQkFDRjs7Ozs7Ozs7O1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0gsa0JBQUM7SUFBRCxDQUFDLEFBNUlELElBNElDO0lBNUlZLGtDQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtkaXJuYW1lLCByZXNvbHZlfSBmcm9tICdjYW5vbmljYWwtcGF0aCc7XG5pbXBvcnQge2V4aXN0c1N5bmMsIGxzdGF0U3luYywgcmVhZGRpclN5bmMsIHdyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7bWtkaXIsIG12fSBmcm9tICdzaGVsbGpzJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0RlY29yYXRpb25BbmFseXplcn0gZnJvbSAnLi4vYW5hbHlzaXMvZGVjb3JhdGlvbl9hbmFseXplcic7XG5pbXBvcnQge1N3aXRjaE1hcmtlckFuYWx5emVyfSBmcm9tICcuLi9hbmFseXNpcy9zd2l0Y2hfbWFya2VyX2FuYWx5emVyJztcbmltcG9ydCB7RHRzTWFwcGVyfSBmcm9tICcuLi9ob3N0L2R0c19tYXBwZXInO1xuaW1wb3J0IHtFc20yMDE1UmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uL2hvc3QvZXNtMjAxNV9ob3N0JztcbmltcG9ydCB7RXNtNVJlZmxlY3Rpb25Ib3N0fSBmcm9tICcuLi9ob3N0L2VzbTVfaG9zdCc7XG5pbXBvcnQge0Zlc20yMDE1UmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uL2hvc3QvZmVzbTIwMTVfaG9zdCc7XG5pbXBvcnQge05nY2NSZWZsZWN0aW9uSG9zdH0gZnJvbSAnLi4vaG9zdC9uZ2NjX2hvc3QnO1xuaW1wb3J0IHtFc20yMDE1UmVuZGVyZXJ9IGZyb20gJy4uL3JlbmRlcmluZy9lc20yMDE1X3JlbmRlcmVyJztcbmltcG9ydCB7RXNtNVJlbmRlcmVyfSBmcm9tICcuLi9yZW5kZXJpbmcvZXNtNV9yZW5kZXJlcic7XG5pbXBvcnQge0Zlc20yMDE1UmVuZGVyZXJ9IGZyb20gJy4uL3JlbmRlcmluZy9mZXNtMjAxNV9yZW5kZXJlcic7XG5pbXBvcnQge0ZpbGVJbmZvLCBSZW5kZXJlcn0gZnJvbSAnLi4vcmVuZGVyaW5nL3JlbmRlcmVyJztcblxuaW1wb3J0IHtjaGVja01hcmtlckZpbGUsIHdyaXRlTWFya2VyRmlsZX0gZnJvbSAnLi9idWlsZF9tYXJrZXInO1xuaW1wb3J0IHtFbnRyeVBvaW50LCBFbnRyeVBvaW50Rm9ybWF0fSBmcm9tICcuL2VudHJ5X3BvaW50JztcblxuLyoqXG4gKiBBIFBhY2thZ2UgaXMgc3RvcmVkIGluIGEgZGlyZWN0b3J5IG9uIGRpc2sgYW5kIHRoYXQgZGlyZWN0b3J5IGNhbiBjb250YWluIG9uZSBvciBtb3JlIHBhY2thZ2VcbiAqIGZvcm1hdHMgLSBlLmcuIGZlc20yMDE1LCBVTUQsIGV0Yy4gQWRkaXRpb25hbGx5LCBlYWNoIHBhY2thZ2UgcHJvdmlkZXMgdHlwaW5ncyAoYC5kLnRzYCBmaWxlcykuXG4gKlxuICogRWFjaCBvZiB0aGVzZSBmb3JtYXRzIGV4cG9zZXMgb25lIG9yIG1vcmUgZW50cnkgcG9pbnRzLCB3aGljaCBhcmUgc291cmNlIGZpbGVzIHRoYXQgbmVlZCB0byBiZVxuICogcGFyc2VkIHRvIGlkZW50aWZ5IHRoZSBkZWNvcmF0ZWQgZXhwb3J0ZWQgY2xhc3NlcyB0aGF0IG5lZWQgdG8gYmUgYW5hbHl6ZWQgYW5kIGNvbXBpbGVkIGJ5IG9uZSBvclxuICogbW9yZSBgRGVjb3JhdG9ySGFuZGxlcmAgb2JqZWN0cy5cbiAqXG4gKiBFYWNoIGVudHJ5IHBvaW50IHRvIGEgcGFja2FnZSBpcyBpZGVudGlmaWVkIGJ5IGEgYFNvdXJjZUZpbGVgIHRoYXQgY2FuIGJlIHBhcnNlZCBhbmQgYW5hbHl6ZWQgdG9cbiAqIGlkZW50aWZ5IGNsYXNzZXMgdGhhdCBuZWVkIHRvIGJlIHRyYW5zZm9ybWVkOyBhbmQgdGhlbiBmaW5hbGx5IHJlbmRlcmVkIGFuZCB3cml0dGVuIHRvIGRpc2suXG4gKiBUaGUgYWN0dWFsIGZpbGUgd2hpY2ggbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWQgZGVwZW5kcyB1cG9uIHRoZSBwYWNrYWdlIGZvcm1hdC5cbiAqXG4gKiBBbG9uZyB3aXRoIHRoZSBzb3VyY2UgZmlsZXMsIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBtYXBzIChlaXRoZXIgaW5saW5lIG9yIGV4dGVybmFsKSBhbmRcbiAqIGAuZC50c2AgZmlsZXMgYXJlIHRyYW5zZm9ybWVkIGFjY29yZGluZ2x5LlxuICpcbiAqIC0gRmxhdCBmaWxlIHBhY2thZ2VzIGhhdmUgYWxsIHRoZSBjbGFzc2VzIGluIGEgc2luZ2xlIGZpbGUuXG4gKiAtIE90aGVyIHBhY2thZ2VzIG1heSByZS1leHBvcnQgY2xhc3NlcyBmcm9tIG90aGVyIG5vbi1lbnRyeSBwb2ludCBmaWxlcy5cbiAqIC0gU29tZSBmb3JtYXRzIG1heSBjb250YWluIG11bHRpcGxlIFwibW9kdWxlc1wiIGluIGEgc2luZ2xlIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1lciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc291cmNlUGF0aDogc3RyaW5nLCBwcml2YXRlIHRhcmdldFBhdGg6IHN0cmluZykge31cblxuICB0cmFuc2Zvcm0oZW50cnlQb2ludDogRW50cnlQb2ludCwgZm9ybWF0OiBFbnRyeVBvaW50Rm9ybWF0KTogdm9pZCB7XG4gICAgaWYgKGNoZWNrTWFya2VyRmlsZShlbnRyeVBvaW50LCBmb3JtYXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zID0ge1xuICAgICAgYWxsb3dKczogdHJ1ZSxcbiAgICAgIG1heE5vZGVNb2R1bGVKc0RlcHRoOiBJbmZpbml0eSxcbiAgICAgIHJvb3REaXI6IGVudHJ5UG9pbnQucGF0aCxcbiAgICB9O1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBUUyBwcm9ncmFtIGFuZCBuZWNlc3NhcnkgaGVscGVycy5cbiAgICAvLyBUT0RPIDogY3JlYXRlIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZWFkcyBmcm9tIC5iYWsgZmlsZXMgaWYgYXZhaWxhYmxlLlxuICAgIGNvbnN0IGhvc3QgPSB0cy5jcmVhdGVDb21waWxlckhvc3Qob3B0aW9ucyk7XG4gICAgY29uc3Qgcm9vdERpcnMgPSB0aGlzLmdldFJvb3REaXJzKGhvc3QsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGVudHJ5UG9pbnRGaWxlUGF0aCA9IGVudHJ5UG9pbnRbZm9ybWF0XTtcbiAgICBpZiAoIWVudHJ5UG9pbnRGaWxlUGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBNaXNzaW5nIGVudHJ5IHBvaW50IGZpbGUgZm9yIGZvcm1hdCwgJHtmb3JtYXR9LCBpbiBwYWNrYWdlLCAke2VudHJ5UG9pbnQucGF0aH0uYCk7XG4gICAgfVxuICAgIGNvbnN0IGlzQ29yZSA9IGVudHJ5UG9pbnQubmFtZSA9PT0gJ0Bhbmd1bGFyL2NvcmUnO1xuICAgIGNvbnN0IHIzU3ltYm9sc1BhdGggPSBpc0NvcmUgPyB0aGlzLmZpbmRSM1N5bWJvbHNQYXRoKGRpcm5hbWUoZW50cnlQb2ludEZpbGVQYXRoKSkgOiBudWxsO1xuICAgIGNvbnN0IHJvb3RQYXRocyA9IHIzU3ltYm9sc1BhdGggPyBbZW50cnlQb2ludEZpbGVQYXRoLCByM1N5bWJvbHNQYXRoXSA6IFtlbnRyeVBvaW50RmlsZVBhdGhdO1xuICAgIGNvbnN0IHBhY2thZ2VQcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShyb290UGF0aHMsIG9wdGlvbnMsIGhvc3QpO1xuICAgIGNvbnN0IGR0c01hcHBlciA9IG5ldyBEdHNNYXBwZXIoZGlybmFtZShlbnRyeVBvaW50RmlsZVBhdGgpLCBkaXJuYW1lKGVudHJ5UG9pbnQudHlwaW5ncykpO1xuICAgIGNvbnN0IHJlZmxlY3Rpb25Ib3N0ID0gdGhpcy5nZXRIb3N0KGlzQ29yZSwgZm9ybWF0LCBwYWNrYWdlUHJvZ3JhbSwgZHRzTWFwcGVyKTtcbiAgICBjb25zdCByM1N5bWJvbHNGaWxlID0gcjNTeW1ib2xzUGF0aCAmJiBwYWNrYWdlUHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHIzU3ltYm9sc1BhdGgpIHx8IG51bGw7XG5cbiAgICAvLyBQYXJzZSBhbmQgYW5hbHl6ZSB0aGUgZmlsZXMuXG4gICAgY29uc3Qge2RlY29yYXRpb25BbmFseXNlcywgc3dpdGNoTWFya2VyQW5hbHlzZXN9ID1cbiAgICAgICAgdGhpcy5hbmFseXplUHJvZ3JhbShwYWNrYWdlUHJvZ3JhbSwgcmVmbGVjdGlvbkhvc3QsIHJvb3REaXJzLCBpc0NvcmUpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBzb3VyY2UgZmlsZXMgYW5kIHNvdXJjZSBtYXBzLlxuICAgIGNvbnN0IHJlbmRlcmVyID1cbiAgICAgICAgdGhpcy5nZXRSZW5kZXJlcihmb3JtYXQsIHBhY2thZ2VQcm9ncmFtLCByZWZsZWN0aW9uSG9zdCwgaXNDb3JlLCByM1N5bWJvbHNGaWxlLCBkdHNNYXBwZXIpO1xuICAgIGNvbnN0IHJlbmRlcmVkRmlsZXMgPVxuICAgICAgICByZW5kZXJlci5yZW5kZXJQcm9ncmFtKHBhY2thZ2VQcm9ncmFtLCBkZWNvcmF0aW9uQW5hbHlzZXMsIHN3aXRjaE1hcmtlckFuYWx5c2VzKTtcblxuICAgIC8vIFdyaXRlIG91dCBhbGwgdGhlIHRyYW5zZm9ybWVkIGZpbGVzLlxuICAgIHJlbmRlcmVkRmlsZXMuZm9yRWFjaChmaWxlID0+IHRoaXMud3JpdGVGaWxlKGZpbGUpKTtcblxuICAgIC8vIFdyaXRlIHRoZSBidWlsdC13aXRoLW5nY2MgbWFya2VyXG4gICAgd3JpdGVNYXJrZXJGaWxlKGVudHJ5UG9pbnQsIGZvcm1hdCk7XG4gIH1cblxuICBnZXRSb290RGlycyhob3N0OiB0cy5Db21waWxlckhvc3QsIG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLnJvb3REaXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnJvb3REaXJzO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5yb290RGlyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBbb3B0aW9ucy5yb290RGlyXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtob3N0LmdldEN1cnJlbnREaXJlY3RvcnkoKV07XG4gICAgfVxuICB9XG5cbiAgZ2V0SG9zdChpc0NvcmU6IGJvb2xlYW4sIGZvcm1hdDogc3RyaW5nLCBwcm9ncmFtOiB0cy5Qcm9ncmFtLCBkdHNNYXBwZXI6IER0c01hcHBlcik6XG4gICAgICBOZ2NjUmVmbGVjdGlvbkhvc3Qge1xuICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICBjYXNlICdlc20yMDE1JzpcbiAgICAgICAgcmV0dXJuIG5ldyBFc20yMDE1UmVmbGVjdGlvbkhvc3QoaXNDb3JlLCBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCksIGR0c01hcHBlcik7XG4gICAgICBjYXNlICdmZXNtMjAxNSc6XG4gICAgICAgIHJldHVybiBuZXcgRmVzbTIwMTVSZWZsZWN0aW9uSG9zdChpc0NvcmUsIHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSk7XG4gICAgICBjYXNlICdlc201JzpcbiAgICAgIGNhc2UgJ2Zlc201JzpcbiAgICAgICAgcmV0dXJuIG5ldyBFc201UmVmbGVjdGlvbkhvc3QoaXNDb3JlLCBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCkpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWxlY3Rpb24gaG9zdCBmb3IgXCIke2Zvcm1hdH1cIiBub3QgeWV0IGltcGxlbWVudGVkLmApO1xuICAgIH1cbiAgfVxuXG4gIGdldFJlbmRlcmVyKFxuICAgICAgZm9ybWF0OiBzdHJpbmcsIHByb2dyYW06IHRzLlByb2dyYW0sIGhvc3Q6IE5nY2NSZWZsZWN0aW9uSG9zdCwgaXNDb3JlOiBib29sZWFuLFxuICAgICAgcmV3cml0ZUNvcmVJbXBvcnRzVG86IHRzLlNvdXJjZUZpbGV8bnVsbCwgZHRzTWFwcGVyOiBEdHNNYXBwZXIpOiBSZW5kZXJlciB7XG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgJ2VzbTIwMTUnOlxuICAgICAgICByZXR1cm4gbmV3IEVzbTIwMTVSZW5kZXJlcihcbiAgICAgICAgICAgIGhvc3QsIGlzQ29yZSwgcmV3cml0ZUNvcmVJbXBvcnRzVG8sIHRoaXMuc291cmNlUGF0aCwgdGhpcy50YXJnZXRQYXRoLCBkdHNNYXBwZXIpO1xuICAgICAgY2FzZSAnZmVzbTIwMTUnOlxuICAgICAgICByZXR1cm4gbmV3IEZlc20yMDE1UmVuZGVyZXIoXG4gICAgICAgICAgICBob3N0LCBpc0NvcmUsIHJld3JpdGVDb3JlSW1wb3J0c1RvLCB0aGlzLnNvdXJjZVBhdGgsIHRoaXMudGFyZ2V0UGF0aCk7XG4gICAgICBjYXNlICdlc201JzpcbiAgICAgIGNhc2UgJ2Zlc201JzpcbiAgICAgICAgcmV0dXJuIG5ldyBFc201UmVuZGVyZXIoXG4gICAgICAgICAgICBob3N0LCBpc0NvcmUsIHJld3JpdGVDb3JlSW1wb3J0c1RvLCB0aGlzLnNvdXJjZVBhdGgsIHRoaXMudGFyZ2V0UGF0aCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlbmRlcmVyIGZvciBcIiR7Zm9ybWF0fVwiIG5vdCB5ZXQgaW1wbGVtZW50ZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgYW5hbHl6ZVByb2dyYW0oXG4gICAgICBwcm9ncmFtOiB0cy5Qcm9ncmFtLCByZWZsZWN0aW9uSG9zdDogTmdjY1JlZmxlY3Rpb25Ib3N0LCByb290RGlyczogc3RyaW5nW10sXG4gICAgICBpc0NvcmU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBkZWNvcmF0aW9uQW5hbHl6ZXIgPVxuICAgICAgICBuZXcgRGVjb3JhdGlvbkFuYWx5emVyKHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKSwgcmVmbGVjdGlvbkhvc3QsIHJvb3REaXJzLCBpc0NvcmUpO1xuICAgIGNvbnN0IHN3aXRjaE1hcmtlckFuYWx5emVyID0gbmV3IFN3aXRjaE1hcmtlckFuYWx5emVyKHJlZmxlY3Rpb25Ib3N0KTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVjb3JhdGlvbkFuYWx5c2VzOiBkZWNvcmF0aW9uQW5hbHl6ZXIuYW5hbHl6ZVByb2dyYW0ocHJvZ3JhbSksXG4gICAgICBzd2l0Y2hNYXJrZXJBbmFseXNlczogc3dpdGNoTWFya2VyQW5hbHl6ZXIuYW5hbHl6ZVByb2dyYW0ocHJvZ3JhbSksXG4gICAgfTtcbiAgfVxuXG4gIHdyaXRlRmlsZShmaWxlOiBGaWxlSW5mbyk6IHZvaWQge1xuICAgIG1rZGlyKCctcCcsIGRpcm5hbWUoZmlsZS5wYXRoKSk7XG4gICAgY29uc3QgYmFja1BhdGggPSBmaWxlLnBhdGggKyAnLmJhayc7XG4gICAgaWYgKGV4aXN0c1N5bmMoZmlsZS5wYXRoKSAmJiAhZXhpc3RzU3luYyhiYWNrUGF0aCkpIHtcbiAgICAgIG12KGZpbGUucGF0aCwgYmFja1BhdGgpO1xuICAgIH1cbiAgICB3cml0ZUZpbGVTeW5jKGZpbGUucGF0aCwgZmlsZS5jb250ZW50cywgJ3V0ZjgnKTtcbiAgfVxuXG4gIGZpbmRSM1N5bWJvbHNQYXRoKGRpcmVjdG9yeTogc3RyaW5nKTogc3RyaW5nfG51bGwge1xuICAgIGNvbnN0IHIzU3ltYm9sc0ZpbGVQYXRoID0gcmVzb2x2ZShkaXJlY3RvcnksICdyM19zeW1ib2xzLmpzJyk7XG4gICAgaWYgKGV4aXN0c1N5bmMocjNTeW1ib2xzRmlsZVBhdGgpKSB7XG4gICAgICByZXR1cm4gcjNTeW1ib2xzRmlsZVBhdGg7XG4gICAgfVxuXG4gICAgY29uc3Qgc3ViRGlyZWN0b3JpZXMgPVxuICAgICAgICByZWFkZGlyU3luYyhkaXJlY3RvcnkpXG4gICAgICAgICAgICAvLyBOb3QgaW50ZXJlc3RlZCBpbiBoaWRkZW4gZmlsZXNcbiAgICAgICAgICAgIC5maWx0ZXIocCA9PiAhcC5zdGFydHNXaXRoKCcuJykpXG4gICAgICAgICAgICAvLyBJZ25vcmUgbm9kZV9tb2R1bGVzXG4gICAgICAgICAgICAuZmlsdGVyKHAgPT4gcCAhPT0gJ25vZGVfbW9kdWxlcycpXG4gICAgICAgICAgICAvLyBPbmx5IGludGVyZXN0ZWQgaW4gZGlyZWN0b3JpZXMgKGFuZCBvbmx5IHRob3NlIHRoYXQgYXJlIG5vdCBzeW1saW5rcylcbiAgICAgICAgICAgIC5maWx0ZXIocCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0YXQgPSBsc3RhdFN5bmMocmVzb2x2ZShkaXJlY3RvcnksIHApKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHN0YXQuaXNEaXJlY3RvcnkoKSAmJiAhc3RhdC5pc1N5bWJvbGljTGluaygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IHN1YkRpcmVjdG9yeSBvZiBzdWJEaXJlY3Rvcmllcykge1xuICAgICAgY29uc3QgcjNTeW1ib2xzRmlsZVBhdGggPSB0aGlzLmZpbmRSM1N5bWJvbHNQYXRoKHJlc29sdmUoZGlyZWN0b3J5LCBzdWJEaXJlY3RvcnkpKTtcbiAgICAgIGlmIChyM1N5bWJvbHNGaWxlUGF0aCkge1xuICAgICAgICByZXR1cm4gcjNTeW1ib2xzRmlsZVBhdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,31 +1,18 @@
|
|
|
1
1
|
/// <amd-module name="@angular/compiler-cli/src/ngcc/src/rendering/esm2015_renderer" />
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
5
|
-
*
|
|
6
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
-
* found in the LICENSE file at https://angular.io/license
|
|
8
|
-
*/
|
|
9
2
|
import * as ts from 'typescript';
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
addDefinitions(output: MagicString, analyzedClass: AnalyzedClass, definitions: string): void;
|
|
26
|
-
/**
|
|
27
|
-
* Remove static decorator properties from classes
|
|
28
|
-
*/
|
|
29
|
-
removeDecorators(output: MagicString, decoratorsToRemove: Map<ts.Node, ts.Node[]>): void;
|
|
30
|
-
rewriteSwitchableDeclarations(outputText: MagicString, sourceFile: ts.SourceFile): void;
|
|
3
|
+
import { DecorationAnalysis } from '../analysis/decoration_analyzer';
|
|
4
|
+
import { SwitchMarkerAnalysis } from '../analysis/switch_marker_analyzer';
|
|
5
|
+
import { DtsMapper } from '../host/dts_mapper';
|
|
6
|
+
import { NgccReflectionHost } from '../host/ngcc_host';
|
|
7
|
+
import { Fesm2015Renderer } from './fesm2015_renderer';
|
|
8
|
+
import { FileInfo } from './renderer';
|
|
9
|
+
export declare class Esm2015Renderer extends Fesm2015Renderer {
|
|
10
|
+
protected host: NgccReflectionHost;
|
|
11
|
+
protected isCore: boolean;
|
|
12
|
+
protected rewriteCoreImportsTo: ts.SourceFile | null;
|
|
13
|
+
protected sourcePath: string;
|
|
14
|
+
protected targetPath: string;
|
|
15
|
+
protected dtsMapper: DtsMapper;
|
|
16
|
+
constructor(host: NgccReflectionHost, isCore: boolean, rewriteCoreImportsTo: ts.SourceFile | null, sourcePath: string, targetPath: string, dtsMapper: DtsMapper);
|
|
17
|
+
renderFile(sourceFile: ts.SourceFile, decorationAnalysis: DecorationAnalysis | undefined, switchMarkerAnalysis: SwitchMarkerAnalysis | undefined, targetPath: string): FileInfo[];
|
|
31
18
|
}
|
|
@@ -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/ngcc/src/rendering/esm2015_renderer", ["require", "exports", "tslib", "
|
|
7
|
+
define("@angular/compiler-cli/src/ngcc/src/rendering/esm2015_renderer", ["require", "exports", "tslib", "canonical-path", "fs", "@angular/compiler-cli/src/ngtsc/transform", "@angular/compiler-cli/src/ngcc/src/constants", "@angular/compiler-cli/src/ngcc/src/rendering/fesm2015_renderer"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -17,91 +17,49 @@
|
|
|
17
17
|
* Use of this source code is governed by an MIT-style license that can be
|
|
18
18
|
* found in the LICENSE file at https://angular.io/license
|
|
19
19
|
*/
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
var
|
|
20
|
+
var canonical_path_1 = require("canonical-path");
|
|
21
|
+
var fs_1 = require("fs");
|
|
22
|
+
var transform_1 = require("@angular/compiler-cli/src/ngtsc/transform");
|
|
23
|
+
var constants_1 = require("@angular/compiler-cli/src/ngcc/src/constants");
|
|
24
|
+
var fesm2015_renderer_1 = require("@angular/compiler-cli/src/ngcc/src/rendering/fesm2015_renderer");
|
|
23
25
|
var Esm2015Renderer = /** @class */ (function (_super) {
|
|
24
26
|
tslib_1.__extends(Esm2015Renderer, _super);
|
|
25
|
-
function Esm2015Renderer() {
|
|
26
|
-
|
|
27
|
+
function Esm2015Renderer(host, isCore, rewriteCoreImportsTo, sourcePath, targetPath, dtsMapper) {
|
|
28
|
+
var _this = _super.call(this, host, isCore, rewriteCoreImportsTo, sourcePath, targetPath) || this;
|
|
29
|
+
_this.host = host;
|
|
30
|
+
_this.isCore = isCore;
|
|
31
|
+
_this.rewriteCoreImportsTo = rewriteCoreImportsTo;
|
|
32
|
+
_this.sourcePath = sourcePath;
|
|
33
|
+
_this.targetPath = targetPath;
|
|
34
|
+
_this.dtsMapper = dtsMapper;
|
|
35
|
+
return _this;
|
|
27
36
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
//
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
* Add the definitions to each decorated class
|
|
50
|
-
*/
|
|
51
|
-
Esm2015Renderer.prototype.addDefinitions = function (output, analyzedClass, definitions) {
|
|
52
|
-
var classSymbol = this.host.getClassSymbol(analyzedClass.declaration);
|
|
53
|
-
if (!classSymbol) {
|
|
54
|
-
throw new Error("Analyzed class does not have a valid symbol: " + analyzedClass.name);
|
|
37
|
+
Esm2015Renderer.prototype.renderFile = function (sourceFile, decorationAnalysis, switchMarkerAnalysis, targetPath) {
|
|
38
|
+
var renderedFiles = _super.prototype.renderFile.call(this, sourceFile, decorationAnalysis, switchMarkerAnalysis, targetPath);
|
|
39
|
+
// Transform the `.d.ts` files.
|
|
40
|
+
// TODO(gkalpak): What about `.d.ts` source maps? (See
|
|
41
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-9.html#new---declarationmap.)
|
|
42
|
+
if (decorationAnalysis) {
|
|
43
|
+
// Create a `DtsFileTransformer` for the source file and record the generated fields, which
|
|
44
|
+
// will allow the corresponding `.d.ts` file to be transformed later.
|
|
45
|
+
var dtsTransformer_1 = new transform_1.DtsFileTransformer(this.rewriteCoreImportsTo, constants_1.IMPORT_PREFIX);
|
|
46
|
+
decorationAnalysis.analyzedClasses.forEach(function (analyzedClass) {
|
|
47
|
+
return dtsTransformer_1.recordStaticField(analyzedClass.name, analyzedClass.compilation);
|
|
48
|
+
});
|
|
49
|
+
// Find the corresponding `.d.ts` file.
|
|
50
|
+
var sourceFileName = sourceFile.fileName;
|
|
51
|
+
var originalDtsFileName = this.dtsMapper.getDtsFileNameFor(sourceFileName);
|
|
52
|
+
var originalDtsContents = fs_1.readFileSync(originalDtsFileName, 'utf8');
|
|
53
|
+
// Transform the `.d.ts` file based on the recorded source file changes.
|
|
54
|
+
var transformedDtsFileName = canonical_path_1.resolve(this.targetPath, canonical_path_1.relative(this.sourcePath, originalDtsFileName));
|
|
55
|
+
var transformedDtsContents = dtsTransformer_1.transform(originalDtsContents, sourceFileName);
|
|
56
|
+
// Add the transformed `.d.ts` file to the list of output files.
|
|
57
|
+
renderedFiles.push({ path: transformedDtsFileName, contents: transformedDtsContents });
|
|
55
58
|
}
|
|
56
|
-
|
|
57
|
-
output.appendLeft(insertionPoint, '\n' + definitions);
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Remove static decorator properties from classes
|
|
61
|
-
*/
|
|
62
|
-
Esm2015Renderer.prototype.removeDecorators = function (output, decoratorsToRemove) {
|
|
63
|
-
decoratorsToRemove.forEach(function (nodesToRemove, containerNode) {
|
|
64
|
-
if (ts.isArrayLiteralExpression(containerNode)) {
|
|
65
|
-
var items = containerNode.elements;
|
|
66
|
-
if (items.length === nodesToRemove.length) {
|
|
67
|
-
// Remove the entire statement
|
|
68
|
-
var statement = findStatement(containerNode);
|
|
69
|
-
if (statement) {
|
|
70
|
-
output.remove(statement.getFullStart(), statement.getEnd());
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
nodesToRemove.forEach(function (node) {
|
|
75
|
-
// remove any trailing comma
|
|
76
|
-
var end = (output.slice(node.getEnd(), node.getEnd() + 1) === ',') ?
|
|
77
|
-
node.getEnd() + 1 :
|
|
78
|
-
node.getEnd();
|
|
79
|
-
output.remove(node.getFullStart(), end);
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
};
|
|
85
|
-
Esm2015Renderer.prototype.rewriteSwitchableDeclarations = function (outputText, sourceFile) {
|
|
86
|
-
var declarations = this.host.getSwitchableDeclarations(sourceFile);
|
|
87
|
-
declarations.forEach(function (declaration) {
|
|
88
|
-
var start = declaration.initializer.getStart();
|
|
89
|
-
var end = declaration.initializer.getEnd();
|
|
90
|
-
var replacement = declaration.initializer.text.replace(ngcc_host_1.PRE_NGCC_MARKER, ngcc_host_1.POST_NGCC_MARKER);
|
|
91
|
-
outputText.overwrite(start, end, replacement);
|
|
92
|
-
});
|
|
59
|
+
return renderedFiles;
|
|
93
60
|
};
|
|
94
61
|
return Esm2015Renderer;
|
|
95
|
-
}(
|
|
62
|
+
}(fesm2015_renderer_1.Fesm2015Renderer));
|
|
96
63
|
exports.Esm2015Renderer = Esm2015Renderer;
|
|
97
|
-
function findStatement(node) {
|
|
98
|
-
while (node) {
|
|
99
|
-
if (ts.isExpressionStatement(node)) {
|
|
100
|
-
return node;
|
|
101
|
-
}
|
|
102
|
-
node = node.parent;
|
|
103
|
-
}
|
|
104
|
-
return undefined;
|
|
105
|
-
}
|
|
106
64
|
});
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNtMjAxNV9yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmdjYy9zcmMvcmVuZGVyaW5nL2VzbTIwMTVfcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsaURBQWlEO0lBQ2pELHlCQUFnQztJQUdoQyx1RUFBNEQ7SUFHNUQsMEVBQTJDO0lBSTNDLG9HQUFxRDtJQUdyRDtRQUFxQywyQ0FBZ0I7UUFDbkQseUJBQ2MsSUFBd0IsRUFBWSxNQUFlLEVBQ25ELG9CQUF3QyxFQUFZLFVBQWtCLEVBQ3RFLFVBQWtCLEVBQVksU0FBb0I7WUFIaEUsWUFJRSxrQkFBTSxJQUFJLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsU0FDbEU7WUFKYSxVQUFJLEdBQUosSUFBSSxDQUFvQjtZQUFZLFlBQU0sR0FBTixNQUFNLENBQVM7WUFDbkQsMEJBQW9CLEdBQXBCLG9CQUFvQixDQUFvQjtZQUFZLGdCQUFVLEdBQVYsVUFBVSxDQUFRO1lBQ3RFLGdCQUFVLEdBQVYsVUFBVSxDQUFRO1lBQVksZUFBUyxHQUFULFNBQVMsQ0FBVzs7UUFFaEUsQ0FBQztRQUVELG9DQUFVLEdBQVYsVUFDSSxVQUF5QixFQUFFLGtCQUFnRCxFQUMzRSxvQkFBb0QsRUFBRSxVQUFrQjtZQUMxRSxJQUFNLGFBQWEsR0FDZixpQkFBTSxVQUFVLFlBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXZGLCtCQUErQjtZQUMvQixzREFBc0Q7WUFDdEQsd0dBQXdHO1lBQ3hHLElBQUksa0JBQWtCLEVBQUU7Z0JBQ3RCLDJGQUEyRjtnQkFDM0YscUVBQXFFO2dCQUNyRSxJQUFNLGdCQUFjLEdBQUcsSUFBSSw4QkFBa0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUseUJBQWEsQ0FBQyxDQUFDO2dCQUN4RixrQkFBa0IsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUN0QyxVQUFBLGFBQWE7b0JBQ1QsT0FBQSxnQkFBYyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQztnQkFBL0UsQ0FBK0UsQ0FBQyxDQUFDO2dCQUV6Rix1Q0FBdUM7Z0JBQ3ZDLElBQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzNDLElBQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDN0UsSUFBTSxtQkFBbUIsR0FBRyxpQkFBWSxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV0RSx3RUFBd0U7Z0JBQ3hFLElBQU0sc0JBQXNCLEdBQ3hCLHdCQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSx5QkFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2dCQUM3RSxJQUFNLHNCQUFzQixHQUFHLGdCQUFjLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUU3RixnRUFBZ0U7Z0JBQ2hFLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFDLENBQUMsQ0FBQzthQUN0RjtZQUVELE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFDSCxzQkFBQztJQUFELENBQUMsQUF6Q0QsQ0FBcUMsb0NBQWdCLEdBeUNwRDtJQXpDWSwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7cmVsYXRpdmUsIHJlc29sdmV9IGZyb20gJ2Nhbm9uaWNhbC1wYXRoJztcbmltcG9ydCB7cmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtEdHNGaWxlVHJhbnNmb3JtZXJ9IGZyb20gJy4uLy4uLy4uL25ndHNjL3RyYW5zZm9ybSc7XG5pbXBvcnQge0RlY29yYXRpb25BbmFseXNpc30gZnJvbSAnLi4vYW5hbHlzaXMvZGVjb3JhdGlvbl9hbmFseXplcic7XG5pbXBvcnQge1N3aXRjaE1hcmtlckFuYWx5c2lzfSBmcm9tICcuLi9hbmFseXNpcy9zd2l0Y2hfbWFya2VyX2FuYWx5emVyJztcbmltcG9ydCB7SU1QT1JUX1BSRUZJWH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7RHRzTWFwcGVyfSBmcm9tICcuLi9ob3N0L2R0c19tYXBwZXInO1xuaW1wb3J0IHtOZ2NjUmVmbGVjdGlvbkhvc3R9IGZyb20gJy4uL2hvc3QvbmdjY19ob3N0JztcblxuaW1wb3J0IHtGZXNtMjAxNVJlbmRlcmVyfSBmcm9tICcuL2Zlc20yMDE1X3JlbmRlcmVyJztcbmltcG9ydCB7RmlsZUluZm99IGZyb20gJy4vcmVuZGVyZXInO1xuXG5leHBvcnQgY2xhc3MgRXNtMjAxNVJlbmRlcmVyIGV4dGVuZHMgRmVzbTIwMTVSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJvdGVjdGVkIGhvc3Q6IE5nY2NSZWZsZWN0aW9uSG9zdCwgcHJvdGVjdGVkIGlzQ29yZTogYm9vbGVhbixcbiAgICAgIHByb3RlY3RlZCByZXdyaXRlQ29yZUltcG9ydHNUbzogdHMuU291cmNlRmlsZXxudWxsLCBwcm90ZWN0ZWQgc291cmNlUGF0aDogc3RyaW5nLFxuICAgICAgcHJvdGVjdGVkIHRhcmdldFBhdGg6IHN0cmluZywgcHJvdGVjdGVkIGR0c01hcHBlcjogRHRzTWFwcGVyKSB7XG4gICAgc3VwZXIoaG9zdCwgaXNDb3JlLCByZXdyaXRlQ29yZUltcG9ydHNUbywgc291cmNlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gIH1cblxuICByZW5kZXJGaWxlKFxuICAgICAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgZGVjb3JhdGlvbkFuYWx5c2lzOiBEZWNvcmF0aW9uQW5hbHlzaXN8dW5kZWZpbmVkLFxuICAgICAgc3dpdGNoTWFya2VyQW5hbHlzaXM6IFN3aXRjaE1hcmtlckFuYWx5c2lzfHVuZGVmaW5lZCwgdGFyZ2V0UGF0aDogc3RyaW5nKTogRmlsZUluZm9bXSB7XG4gICAgY29uc3QgcmVuZGVyZWRGaWxlcyA9XG4gICAgICAgIHN1cGVyLnJlbmRlckZpbGUoc291cmNlRmlsZSwgZGVjb3JhdGlvbkFuYWx5c2lzLCBzd2l0Y2hNYXJrZXJBbmFseXNpcywgdGFyZ2V0UGF0aCk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gdGhlIGAuZC50c2AgZmlsZXMuXG4gICAgLy8gVE9ETyhna2FscGFrKTogV2hhdCBhYm91dCBgLmQudHNgIHNvdXJjZSBtYXBzPyAoU2VlXG4gICAgLy8gaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svcmVsZWFzZS1ub3Rlcy90eXBlc2NyaXB0LTItOS5odG1sI25ldy0tLWRlY2xhcmF0aW9ubWFwLilcbiAgICBpZiAoZGVjb3JhdGlvbkFuYWx5c2lzKSB7XG4gICAgICAvLyBDcmVhdGUgYSBgRHRzRmlsZVRyYW5zZm9ybWVyYCBmb3IgdGhlIHNvdXJjZSBmaWxlIGFuZCByZWNvcmQgdGhlIGdlbmVyYXRlZCBmaWVsZHMsIHdoaWNoXG4gICAgICAvLyB3aWxsIGFsbG93IHRoZSBjb3JyZXNwb25kaW5nIGAuZC50c2AgZmlsZSB0byBiZSB0cmFuc2Zvcm1lZCBsYXRlci5cbiAgICAgIGNvbnN0IGR0c1RyYW5zZm9ybWVyID0gbmV3IER0c0ZpbGVUcmFuc2Zvcm1lcih0aGlzLnJld3JpdGVDb3JlSW1wb3J0c1RvLCBJTVBPUlRfUFJFRklYKTtcbiAgICAgIGRlY29yYXRpb25BbmFseXNpcy5hbmFseXplZENsYXNzZXMuZm9yRWFjaChcbiAgICAgICAgICBhbmFseXplZENsYXNzID0+XG4gICAgICAgICAgICAgIGR0c1RyYW5zZm9ybWVyLnJlY29yZFN0YXRpY0ZpZWxkKGFuYWx5emVkQ2xhc3MubmFtZSwgYW5hbHl6ZWRDbGFzcy5jb21waWxhdGlvbikpO1xuXG4gICAgICAvLyBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIGAuZC50c2AgZmlsZS5cbiAgICAgIGNvbnN0IHNvdXJjZUZpbGVOYW1lID0gc291cmNlRmlsZS5maWxlTmFtZTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsRHRzRmlsZU5hbWUgPSB0aGlzLmR0c01hcHBlci5nZXREdHNGaWxlTmFtZUZvcihzb3VyY2VGaWxlTmFtZSk7XG4gICAgICBjb25zdCBvcmlnaW5hbER0c0NvbnRlbnRzID0gcmVhZEZpbGVTeW5jKG9yaWdpbmFsRHRzRmlsZU5hbWUsICd1dGY4Jyk7XG5cbiAgICAgIC8vIFRyYW5zZm9ybSB0aGUgYC5kLnRzYCBmaWxlIGJhc2VkIG9uIHRoZSByZWNvcmRlZCBzb3VyY2UgZmlsZSBjaGFuZ2VzLlxuICAgICAgY29uc3QgdHJhbnNmb3JtZWREdHNGaWxlTmFtZSA9XG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLnRhcmdldFBhdGgsIHJlbGF0aXZlKHRoaXMuc291cmNlUGF0aCwgb3JpZ2luYWxEdHNGaWxlTmFtZSkpO1xuICAgICAgY29uc3QgdHJhbnNmb3JtZWREdHNDb250ZW50cyA9IGR0c1RyYW5zZm9ybWVyLnRyYW5zZm9ybShvcmlnaW5hbER0c0NvbnRlbnRzLCBzb3VyY2VGaWxlTmFtZSk7XG5cbiAgICAgIC8vIEFkZCB0aGUgdHJhbnNmb3JtZWQgYC5kLnRzYCBmaWxlIHRvIHRoZSBsaXN0IG9mIG91dHB1dCBmaWxlcy5cbiAgICAgIHJlbmRlcmVkRmlsZXMucHVzaCh7cGF0aDogdHJhbnNmb3JtZWREdHNGaWxlTmFtZSwgY29udGVudHM6IHRyYW5zZm9ybWVkRHRzQ29udGVudHN9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRGaWxlcztcbiAgfVxufVxuIl19
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
* Use of this source code is governed by an MIT-style license that can be
|
|
7
7
|
* found in the LICENSE file at https://angular.io/license
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
10
|
-
export declare class Esm5Renderer extends
|
|
9
|
+
import { Fesm2015Renderer } from './fesm2015_renderer';
|
|
10
|
+
export declare class Esm5Renderer extends Fesm2015Renderer {
|
|
11
11
|
}
|
|
@@ -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/ngcc/src/rendering/esm5_renderer", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngcc/src/rendering/
|
|
7
|
+
define("@angular/compiler-cli/src/ngcc/src/rendering/esm5_renderer", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngcc/src/rendering/fesm2015_renderer"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
* Use of this source code is governed by an MIT-style license that can be
|
|
18
18
|
* found in the LICENSE file at https://angular.io/license
|
|
19
19
|
*/
|
|
20
|
-
var
|
|
20
|
+
var fesm2015_renderer_1 = require("@angular/compiler-cli/src/ngcc/src/rendering/fesm2015_renderer");
|
|
21
21
|
var Esm5Renderer = /** @class */ (function (_super) {
|
|
22
22
|
tslib_1.__extends(Esm5Renderer, _super);
|
|
23
23
|
function Esm5Renderer() {
|
|
24
24
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
25
25
|
}
|
|
26
26
|
return Esm5Renderer;
|
|
27
|
-
}(
|
|
27
|
+
}(fesm2015_renderer_1.Fesm2015Renderer));
|
|
28
28
|
exports.Esm5Renderer = Esm5Renderer;
|
|
29
29
|
});
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNtNV9yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvbmdjYy9zcmMvcmVuZGVyaW5nL2VzbTVfcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsb0dBQXFEO0lBRXJEO1FBQWtDLHdDQUFnQjtRQUFsRDs7UUFBb0QsQ0FBQztRQUFELG1CQUFDO0lBQUQsQ0FBQyxBQUFyRCxDQUFrQyxvQ0FBZ0IsR0FBRztJQUF4QyxvQ0FBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7RmVzbTIwMTVSZW5kZXJlcn0gZnJvbSAnLi9mZXNtMjAxNV9yZW5kZXJlcic7XG5cbmV4cG9ydCBjbGFzcyBFc201UmVuZGVyZXIgZXh0ZW5kcyBGZXNtMjAxNVJlbmRlcmVyIHt9XG4iXX0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/// <amd-module name="@angular/compiler-cli/src/ngcc/src/rendering/fesm2015_renderer" />
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.io/license
|
|
8
|
+
*/
|
|
9
|
+
import * as ts from 'typescript';
|
|
10
|
+
import MagicString from 'magic-string';
|
|
11
|
+
import { NgccReflectionHost, SwitchableVariableDeclaration } from '../host/ngcc_host';
|
|
12
|
+
import { AnalyzedClass } from '../analysis/decoration_analyzer';
|
|
13
|
+
import { Renderer } from './renderer';
|
|
14
|
+
export declare class Fesm2015Renderer extends Renderer {
|
|
15
|
+
protected host: NgccReflectionHost;
|
|
16
|
+
protected isCore: boolean;
|
|
17
|
+
protected rewriteCoreImportsTo: ts.SourceFile | null;
|
|
18
|
+
protected sourcePath: string;
|
|
19
|
+
protected targetPath: string;
|
|
20
|
+
constructor(host: NgccReflectionHost, isCore: boolean, rewriteCoreImportsTo: ts.SourceFile | null, sourcePath: string, targetPath: string);
|
|
21
|
+
/**
|
|
22
|
+
* Add the imports at the top of the file
|
|
23
|
+
*/
|
|
24
|
+
addImports(output: MagicString, imports: {
|
|
25
|
+
name: string;
|
|
26
|
+
as: string;
|
|
27
|
+
}[]): void;
|
|
28
|
+
addConstants(output: MagicString, constants: string, file: ts.SourceFile): void;
|
|
29
|
+
/**
|
|
30
|
+
* Add the definitions to each decorated class
|
|
31
|
+
*/
|
|
32
|
+
addDefinitions(output: MagicString, analyzedClass: AnalyzedClass, definitions: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Remove static decorator properties from classes
|
|
35
|
+
*/
|
|
36
|
+
removeDecorators(output: MagicString, decoratorsToRemove: Map<ts.Node, ts.Node[]>): void;
|
|
37
|
+
rewriteSwitchableDeclarations(outputText: MagicString, sourceFile: ts.SourceFile, declarations: SwitchableVariableDeclaration[]): void;
|
|
38
|
+
}
|