1 | ;
|
2 | // tslint:disable:no-unsafe-any
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 | const fs_1 = require("fs");
|
5 | const path = require("path");
|
6 | const typescript_1 = require("typescript");
|
7 | const error_models_1 = require("../error-models");
|
8 | const utils_1 = require("../utils");
|
9 | const load_ts_config_1 = require("./load-ts-config");
|
10 | const to_ts_script_target_1 = require("./to-ts-script-target");
|
11 | // tslint:disable-next-line:max-func-body-length
|
12 | function initTsTranspilationOptions(tsConfigPath, tsTranspilation, i, libConfig) {
|
13 | load_ts_config_1.loadTsConfig(tsConfigPath, tsTranspilation, libConfig);
|
14 | if (!tsTranspilation._tsCompilerConfig) {
|
15 | throw new error_models_1.InternalError("The 'tsTranspilation._tsCompilerConfig' is not set.");
|
16 | }
|
17 | const compilerOptions = tsTranspilation._tsCompilerConfig.options;
|
18 | // scriptTarget
|
19 | let scriptTarget = typescript_1.ScriptTarget.ES2015;
|
20 | if (tsTranspilation.target) {
|
21 | const tsScriptTarget = to_ts_script_target_1.toTsScriptTarget(tsTranspilation.target);
|
22 | if (tsScriptTarget) {
|
23 | scriptTarget = tsScriptTarget;
|
24 | }
|
25 | }
|
26 | else if (compilerOptions.target) {
|
27 | scriptTarget = compilerOptions.target;
|
28 | }
|
29 | // declaration
|
30 | let declaration = true;
|
31 | if (tsTranspilation.declaration === false) {
|
32 | declaration = false;
|
33 | }
|
34 | else if (!tsTranspilation.declaration && !compilerOptions.declaration) {
|
35 | declaration = false;
|
36 | }
|
37 | // tsOutDir
|
38 | const outputRootDir = libConfig._outputPath;
|
39 | let tsOutDir;
|
40 | if (tsTranspilation.outDir) {
|
41 | if (!outputRootDir) {
|
42 | throw new error_models_1.InvalidConfigError(`The 'projects[${libConfig.name || libConfig._index}].outputPath' value is required.`);
|
43 | }
|
44 | tsOutDir =
|
45 | path.resolve(outputRootDir, tsTranspilation.outDir);
|
46 | tsTranspilation._customTsOutDir = tsOutDir;
|
47 | }
|
48 | else {
|
49 | if (compilerOptions.outDir) {
|
50 | tsOutDir = path.isAbsolute(compilerOptions.outDir)
|
51 | ? path.resolve(compilerOptions.outDir)
|
52 | : path.resolve(path.dirname(tsConfigPath), compilerOptions.outDir);
|
53 | }
|
54 | else {
|
55 | if (!outputRootDir) {
|
56 | throw new error_models_1.InvalidConfigError(`The 'projects[${libConfig.name || libConfig._index}].outputPath' value is required.`);
|
57 | }
|
58 | tsOutDir = outputRootDir;
|
59 | tsTranspilation._customTsOutDir = tsOutDir;
|
60 | }
|
61 | }
|
62 | if (compilerOptions.rootDir &&
|
63 | !utils_1.isSamePaths(compilerOptions.rootDir, path.dirname(tsConfigPath))) {
|
64 | const relSubDir = utils_1.isInFolder(compilerOptions.rootDir, path.dirname(tsConfigPath))
|
65 | ? utils_1.normalizeRelativePath(path.relative(compilerOptions.rootDir, path.dirname(tsConfigPath)))
|
66 | : utils_1.normalizeRelativePath(path.relative(path.dirname(tsConfigPath), compilerOptions.rootDir));
|
67 | tsOutDir = path.resolve(tsOutDir, relSubDir);
|
68 | }
|
69 | // typingsOutDir
|
70 | if (tsTranspilation.moveTypingFilesToPackageRoot) {
|
71 | tsTranspilation._typingsOutDir = libConfig._packageJsonOutDir;
|
72 | }
|
73 | else {
|
74 | tsTranspilation._typingsOutDir = tsOutDir;
|
75 | }
|
76 | // detect entry
|
77 | if (libConfig.packageEntryFileForTsTranspilation) {
|
78 | tsTranspilation._detectedEntryName =
|
79 | libConfig.packageEntryFileForTsTranspilation.replace(/\.(js|ts)$/i, '');
|
80 | }
|
81 | else {
|
82 | const flatModuleOutFile = !tsTranspilation.useTsc &&
|
83 | tsTranspilation._angularCompilerOptions &&
|
84 | tsTranspilation._angularCompilerOptions.flatModuleOutFile
|
85 | ? tsTranspilation._angularCompilerOptions.flatModuleOutFile
|
86 | : null;
|
87 | if (flatModuleOutFile) {
|
88 | tsTranspilation._detectedEntryName = flatModuleOutFile.replace(/\.js$/i, '');
|
89 | }
|
90 | else {
|
91 | const tsSrcDir = path.dirname(tsConfigPath);
|
92 | if (fs_1.existsSync(path.resolve(tsSrcDir, 'index.ts'))) {
|
93 | tsTranspilation._detectedEntryName = 'index';
|
94 | }
|
95 | else if (fs_1.existsSync(path.resolve(tsSrcDir, 'main.ts'))) {
|
96 | tsTranspilation._detectedEntryName = 'main';
|
97 | }
|
98 | }
|
99 | }
|
100 | // package entry points
|
101 | if (libConfig._packageJsonOutDir && tsTranspilation._detectedEntryName) {
|
102 | libConfig._packageEntryPoints = libConfig._packageEntryPoints || {};
|
103 | const packageEntryPoints = libConfig._packageEntryPoints;
|
104 | const packageJsonOutDir = libConfig._packageJsonOutDir;
|
105 | const entryFileAbs = path.resolve(tsOutDir, `${tsTranspilation._detectedEntryName}.js`);
|
106 | if ((compilerOptions.module === typescript_1.ModuleKind.ES2015 ||
|
107 | compilerOptions.module === typescript_1.ModuleKind.ESNext) &&
|
108 | (tsTranspilation.target === 'es2015' ||
|
109 | (!tsTranspilation.target && compilerOptions.target === typescript_1.ScriptTarget.ES2015))) {
|
110 | packageEntryPoints.es2015 = utils_1.normalizeRelativePath(path.relative(packageJsonOutDir, entryFileAbs));
|
111 | packageEntryPoints.esm2015 = utils_1.normalizeRelativePath(path.relative(packageJsonOutDir, entryFileAbs));
|
112 | }
|
113 | else if ((compilerOptions.module === typescript_1.ModuleKind.ES2015 ||
|
114 | compilerOptions.module === typescript_1.ModuleKind.ESNext) &&
|
115 | (tsTranspilation.target === 'es5' ||
|
116 | (!tsTranspilation.target && compilerOptions.target === typescript_1.ScriptTarget.ES5))) {
|
117 | packageEntryPoints.esm5 = utils_1.normalizeRelativePath(path.relative(packageJsonOutDir, entryFileAbs));
|
118 | packageEntryPoints.module = utils_1.normalizeRelativePath(path.relative(packageJsonOutDir, entryFileAbs));
|
119 | }
|
120 | else if (compilerOptions.module === typescript_1.ModuleKind.UMD ||
|
121 | compilerOptions.module === typescript_1.ModuleKind.CommonJS) {
|
122 | packageEntryPoints.main = utils_1.normalizeRelativePath(path.relative(packageJsonOutDir, entryFileAbs));
|
123 | }
|
124 | if (compilerOptions._declaration && tsTranspilation._typingsOutDir) {
|
125 | packageEntryPoints.typings = utils_1.normalizeRelativePath(path.relative(packageJsonOutDir, path.join(tsTranspilation._typingsOutDir, `${tsTranspilation._detectedEntryName}.d.ts`)));
|
126 | }
|
127 | }
|
128 | return Object.assign({}, tsTranspilation, { _index: i, _scriptTarget: scriptTarget, _tsConfigPath: tsConfigPath,
|
129 | // tslint:disable-next-line:no-any
|
130 | _tsConfigJson: tsTranspilation._tsConfigJson, _tsCompilerConfig: tsTranspilation._tsCompilerConfig, _declaration: declaration, _tsOutDirRootResolved: tsOutDir });
|
131 | }
|
132 | exports.initTsTranspilationOptions = initTsTranspilationOptions;
|
133 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC10cy10cmFuc3BpbGF0aW9uLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiQzovcHJvamVjdHMvYW5ndWxhci1idWlsZC8iLCJzb3VyY2VzIjpbInNyYy9oZWxwZXJzL2luaXQtdHMtdHJhbnNwaWxhdGlvbi1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7O0FBRS9CLDJCQUFnQztBQUNoQyw2QkFBNkI7QUFFN0IsMkNBQXNEO0FBRXRELGtEQUFvRTtBQUVwRSxvQ0FBMEU7QUFFMUUscURBQWdEO0FBQ2hELCtEQUF5RDtBQUV6RCxnREFBZ0Q7QUFDaEQsb0NBQTJDLFlBQW9CLEVBQzNELGVBQXdELEVBQ3hELENBQVMsRUFDVCxTQUFtQztJQUVuQyw2QkFBWSxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRTtRQUNwQyxNQUFNLElBQUksNEJBQWEsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0tBQ2xGO0lBQ0QsTUFBTSxlQUFlLEdBQUcsZUFBZSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztJQUVsRSxlQUFlO0lBQ2YsSUFBSSxZQUFZLEdBQWlCLHlCQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JELElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRTtRQUN4QixNQUFNLGNBQWMsR0FBRyxzQ0FBZ0IsQ0FBQyxlQUFlLENBQUMsTUFBZ0IsQ0FBQyxDQUFDO1FBQzFFLElBQUksY0FBYyxFQUFFO1lBQ2hCLFlBQVksR0FBRyxjQUFjLENBQUM7U0FDakM7S0FDSjtTQUFNLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRTtRQUMvQixZQUFZLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztLQUN6QztJQUVELGNBQWM7SUFDZCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsSUFBSSxlQUFlLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRTtRQUN2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QUksZUFBZSxDQUFDLGNBQWMsRUFBRTtZQUNoRSxrQkFBa0IsQ0FBQyxPQUFPLEdBQUcsNkJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFDOUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakc7S0FDSjtJQUVELHlCQUNPLGVBQWUsSUFDbEIsTUFBTSxFQUFFLENBQUMsRUFDVCxhQUFhLEVBQUUsWUFBWSxFQUMzQixhQUFhLEVBQUUsWUFBWTtRQUMzQixrQ0FBa0M7UUFDbEMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxhQUF1QyxFQUN0RSxpQkFBaUIsRUFBRSxlQUFlLENBQUMsaUJBQWlCLEVBQ3BELFlBQVksRUFBRSxXQUFXLEVBQ3pCLHFCQUFxQixFQUFFLFFBQVEsSUFDakM7QUFDTixDQUFDO0FBakpELGdFQWlKQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOm5vLXVuc2FmZS1hbnlcblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IE1vZHVsZUtpbmQsIFNjcmlwdFRhcmdldCB9IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBJbnZhbGlkQ29uZmlnRXJyb3IgfSBmcm9tICcuLi9lcnJvci1tb2RlbHMnO1xuaW1wb3J0IHsgTGliUHJvamVjdENvbmZpZ0ludGVybmFsLCBUc1RyYW5zcGlsYXRpb25PcHRpb25zSW50ZXJuYWwgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVybmFscyc7XG5pbXBvcnQgeyBpc0luRm9sZGVyLCBpc1NhbWVQYXRocywgbm9ybWFsaXplUmVsYXRpdmVQYXRoIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQgeyBsb2FkVHNDb25maWcgfSBmcm9tICcuL2xvYWQtdHMtY29uZmlnJztcbmltcG9ydCB7IHRvVHNTY3JpcHRUYXJnZXQgfSBmcm9tICcuL3RvLXRzLXNjcmlwdC10YXJnZXQnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWZ1bmMtYm9keS1sZW5ndGhcbmV4cG9ydCBmdW5jdGlvbiBpbml0VHNUcmFuc3BpbGF0aW9uT3B0aW9ucyh0c0NvbmZpZ1BhdGg6IHN0cmluZyxcbiAgICB0c1RyYW5zcGlsYXRpb246IFBhcnRpYWw8VHNUcmFuc3BpbGF0aW9uT3B0aW9uc0ludGVybmFsPixcbiAgICBpOiBudW1iZXIsXG4gICAgbGliQ29uZmlnOiBMaWJQcm9qZWN0Q29uZmlnSW50ZXJuYWwpOlxuICAgIFRzVHJhbnNwaWxhdGlvbk9wdGlvbnNJbnRlcm5hbCB7XG4gICAgbG9hZFRzQ29uZmlnKHRzQ29uZmlnUGF0aCwgdHNUcmFuc3BpbGF0aW9uLCBsaWJDb25maWcpO1xuICAgIGlmICghdHNUcmFuc3BpbGF0aW9uLl90c0NvbXBpbGVyQ29uZmlnKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiVGhlICd0c1RyYW5zcGlsYXRpb24uX3RzQ29tcGlsZXJDb25maWcnIGlzIG5vdCBzZXQuXCIpO1xuICAgIH1cbiAgICBjb25zdCBjb21waWxlck9wdGlvbnMgPSB0c1RyYW5zcGlsYXRpb24uX3RzQ29tcGlsZXJDb25maWcub3B0aW9ucztcblxuICAgIC8vIHNjcmlwdFRhcmdldFxuICAgIGxldCBzY3JpcHRUYXJnZXQ6IFNjcmlwdFRhcmdldCA9IFNjcmlwdFRhcmdldC5FUzIwMTU7XG4gICAgaWYgKHRzVHJhbnNwaWxhdGlvbi50YXJnZXQpIHtcbiAgICAgICAgY29uc3QgdHNTY3JpcHRUYXJnZXQgPSB0b1RzU2NyaXB0VGFyZ2V0KHRzVHJhbnNwaWxhdGlvbi50YXJnZXQgYXMgc3RyaW5nKTtcbiAgICAgICAgaWYgKHRzU2NyaXB0VGFyZ2V0KSB7XG4gICAgICAgICAgICBzY3JpcHRUYXJnZXQgPSB0c1NjcmlwdFRhcmdldDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29tcGlsZXJPcHRpb25zLnRhcmdldCkge1xuICAgICAgICBzY3JpcHRUYXJnZXQgPSBjb21waWxlck9wdGlvbnMudGFyZ2V0O1xuICAgIH1cblxuICAgIC8vIGRlY2xhcmF0aW9uXG4gICAgbGV0IGRlY2xhcmF0aW9uID0gdHJ1ZTtcbiAgICBpZiAodHNUcmFuc3BpbGF0aW9uLmRlY2xhcmF0aW9uID09PSBmYWxzZSkge1xuICAgICAgICBkZWNsYXJhdGlvbiA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIXRzVHJhbnNwaWxhdGlvbi5kZWNsYXJhdGlvbiAmJiAhY29tcGlsZXJPcHRpb25zLmRlY2xhcmF0aW9uKSB7XG4gICAgICAgIGRlY2xhcmF0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gdHNPdXREaXJcbiAgICBjb25zdCBvdXRwdXRSb290RGlyID0gbGliQ29uZmlnLl9vdXRwdXRQYXRoO1xuICAgIGxldCB0c091dERpcjogc3RyaW5nO1xuICAgIGlmICh0c1RyYW5zcGlsYXRpb24ub3V0RGlyKSB7XG4gICAgICAgIGlmICghb3V0cHV0Um9vdERpcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWdFcnJvcihcbiAgICAgICAgICAgICAgICBgVGhlICdwcm9qZWN0c1ske2xpYkNvbmZpZy5uYW1lIHx8IGxpYkNvbmZpZy5faW5kZXh9XS5vdXRwdXRQYXRoJyB2YWx1ZSBpcyByZXF1aXJlZC5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRzT3V0RGlyID1cbiAgICAgICAgICAgIHBhdGgucmVzb2x2ZShvdXRwdXRSb290RGlyLCB0c1RyYW5zcGlsYXRpb24ub3V0RGlyKTtcbiAgICAgICAgdHNUcmFuc3BpbGF0aW9uLl9jdXN0b21Uc091dERpciA9IHRzT3V0RGlyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjb21waWxlck9wdGlvbnMub3V0RGlyKSB7XG4gICAgICAgICAgICB0c091dERpciA9IHBhdGguaXNBYnNvbHV0ZShjb21waWxlck9wdGlvbnMub3V0RGlyKVxuICAgICAgICAgICAgICAgID8gcGF0aC5yZXNvbHZlKGNvbXBpbGVyT3B0aW9ucy5vdXREaXIpXG4gICAgICAgICAgICAgICAgOiBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKHRzQ29uZmlnUGF0aCksIGNvbXBpbGVyT3B0aW9ucy5vdXREaXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFvdXRwdXRSb290RGlyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWdFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYFRoZSAncHJvamVjdHNbJHtsaWJDb25maWcubmFtZSB8fCBsaWJDb25maWcuX2luZGV4fV0ub3V0cHV0UGF0aCcgdmFsdWUgaXMgcmVxdWlyZWQuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRzT3V0RGlyID0gb3V0cHV0Um9vdERpcjtcbiAgICAgICAgICAgIHRzVHJhbnNwaWxhdGlvbi5fY3VzdG9tVHNPdXREaXIgPSB0c091dERpcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29tcGlsZXJPcHRpb25zLnJvb3REaXIgJiZcbiAgICAgICAgIWlzU2FtZVBhdGhzKGNvbXBpbGVyT3B0aW9ucy5yb290RGlyLCBwYXRoLmRpcm5hbWUodHNDb25maWdQYXRoKSkpIHtcbiAgICAgICAgY29uc3QgcmVsU3ViRGlyID0gaXNJbkZvbGRlcihjb21waWxlck9wdGlvbnMucm9vdERpciwgcGF0aC5kaXJuYW1lKHRzQ29uZmlnUGF0aCkpXG4gICAgICAgICAgICA/IG5vcm1hbGl6ZVJlbGF0aXZlUGF0aChcbiAgICAgICAgICAgICAgICBwYXRoLnJlbGF0aXZlKGNvbXBpbGVyT3B0aW9ucy5yb290RGlyLCBwYXRoLmRpcm5hbWUodHNDb25maWdQYXRoKSkpXG4gICAgICAgICAgICA6IG5vcm1hbGl6ZVJlbGF0aXZlUGF0aChwYXRoLnJlbGF0aXZlKHBhdGguZGlybmFtZSh0c0NvbmZpZ1BhdGgpLCBjb21waWxlck9wdGlvbnMucm9vdERpcikpO1xuICAgICAgICB0c091dERpciA9IHBhdGgucmVzb2x2ZSh0c091dERpciwgcmVsU3ViRGlyKTtcbiAgICB9XG5cbiAgICAvLyB0eXBpbmdzT3V0RGlyXG4gICAgaWYgKHRzVHJhbnNwaWxhdGlvbi5tb3ZlVHlwaW5nRmlsZXNUb1BhY2thZ2VSb290KSB7XG4gICAgICAgIHRzVHJhbnNwaWxhdGlvbi5fdHlwaW5nc091dERpciA9IGxpYkNvbmZpZy5fcGFja2FnZUpzb25PdXREaXI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdHNUcmFuc3BpbGF0aW9uLl90eXBpbmdzT3V0RGlyID0gdHNPdXREaXI7XG4gICAgfVxuXG4gICAgLy8gZGV0ZWN0IGVudHJ5XG4gICAgaWYgKGxpYkNvbmZpZy5wYWNrYWdlRW50cnlGaWxlRm9yVHNUcmFuc3BpbGF0aW9uKSB7XG4gICAgICAgIHRzVHJhbnNwaWxhdGlvbi5fZGV0ZWN0ZWRFbnRyeU5hbWUgPVxuICAgICAgICAgICAgbGliQ29uZmlnLnBhY2thZ2VFbnRyeUZpbGVGb3JUc1RyYW5zcGlsYXRpb24ucmVwbGFjZSgvXFwuKGpzfHRzKSQvaSwgJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZsYXRNb2R1bGVPdXRGaWxlID1cbiAgICAgICAgICAgICF0c1RyYW5zcGlsYXRpb24udXNlVHNjICYmXG4gICAgICAgICAgICAgICAgdHNUcmFuc3BpbGF0aW9uLl9hbmd1bGFyQ29tcGlsZXJPcHRpb25zICYmXG4gICAgICAgICAgICAgICAgdHNUcmFuc3BpbGF0aW9uLl9hbmd1bGFyQ29tcGlsZXJPcHRpb25zLmZsYXRNb2R1bGVPdXRGaWxlXG4gICAgICAgICAgICAgICAgPyB0c1RyYW5zcGlsYXRpb24uX2FuZ3VsYXJDb21waWxlck9wdGlvbnMuZmxhdE1vZHVsZU91dEZpbGUgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIGlmIChmbGF0TW9kdWxlT3V0RmlsZSkge1xuICAgICAgICAgICAgdHNUcmFuc3BpbGF0aW9uLl9kZXRlY3RlZEVudHJ5TmFtZSA9IGZsYXRNb2R1bGVPdXRGaWxlLnJlcGxhY2UoL1xcLmpzJC9pLCAnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0c1NyY0RpciA9IHBhdGguZGlybmFtZSh0c0NvbmZpZ1BhdGgpO1xuICAgICAgICAgICAgaWYgKGV4aXN0c1N5bmMocGF0aC5yZXNvbHZlKHRzU3JjRGlyLCAnaW5kZXgudHMnKSkpIHtcbiAgICAgICAgICAgICAgICB0c1RyYW5zcGlsYXRpb24uX2RldGVjdGVkRW50cnlOYW1lID0gJ2luZGV4JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXhpc3RzU3luYyhwYXRoLnJlc29sdmUodHNTcmNEaXIsICdtYWluLnRzJykpKSB7XG4gICAgICAgICAgICAgICAgdHNUcmFuc3BpbGF0aW9uLl9kZXRlY3RlZEVudHJ5TmFtZSA9ICdtYWluJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHBhY2thZ2UgZW50cnkgcG9pbnRzXG4gICAgaWYgKGxpYkNvbmZpZy5fcGFja2FnZUpzb25PdXREaXIgJiYgdHNUcmFuc3BpbGF0aW9uLl9kZXRlY3RlZEVudHJ5TmFtZSkge1xuICAgICAgICBsaWJDb25maWcuX3BhY2thZ2VFbnRyeVBvaW50cyA9IGxpYkNvbmZpZy5fcGFja2FnZUVudHJ5UG9pbnRzIHx8IHt9O1xuICAgICAgICBjb25zdCBwYWNrYWdlRW50cnlQb2ludHMgPSBsaWJDb25maWcuX3BhY2thZ2VFbnRyeVBvaW50cztcbiAgICAgICAgY29uc3QgcGFja2FnZUpzb25PdXREaXIgPSBsaWJDb25maWcuX3BhY2thZ2VKc29uT3V0RGlyO1xuXG4gICAgICAgIGNvbnN0IGVudHJ5RmlsZUFicyA9XG4gICAgICAgICAgICBwYXRoLnJlc29sdmUodHNPdXREaXIsIGAke3RzVHJhbnNwaWxhdGlvbi5fZGV0ZWN0ZWRFbnRyeU5hbWV9LmpzYCk7XG5cbiAgICAgICAgaWYgKChjb21waWxlck9wdGlvbnMubW9kdWxlID09PSBNb2R1bGVLaW5kLkVTMjAxNSB8fFxuICAgICAgICAgICAgY29tcGlsZXJPcHRpb25zLm1vZHVsZSA9PT0gTW9kdWxlS2luZC5FU05leHQpICYmXG4gICAgICAgICAgICAodHNUcmFuc3BpbGF0aW9uLnRhcmdldCA9PT0gJ2VzMjAxNScgfHxcbiAgICAgICAgICAgICAgICAoIXRzVHJhbnNwaWxhdGlvbi50YXJnZXQgJiYgY29tcGlsZXJPcHRpb25zLnRhcmdldCA9PT0gU2NyaXB0VGFyZ2V0LkVTMjAxNSkpKSB7XG4gICAgICAgICAgICBwYWNrYWdlRW50cnlQb2ludHMuZXMyMDE1ID0gbm9ybWFsaXplUmVsYXRpdmVQYXRoKHBhdGgucmVsYXRpdmUocGFja2FnZUpzb25PdXREaXIsXG4gICAgICAgICAgICAgICAgZW50cnlGaWxlQWJzKSk7XG4gICAgICAgICAgICBwYWNrYWdlRW50cnlQb2ludHMuZXNtMjAxNSA9IG5vcm1hbGl6ZVJlbGF0aXZlUGF0aChwYXRoLnJlbGF0aXZlKHBhY2thZ2VKc29uT3V0RGlyLFxuICAgICAgICAgICAgICAgIGVudHJ5RmlsZUFicykpO1xuICAgICAgICB9IGVsc2UgaWYgKChjb21waWxlck9wdGlvbnMubW9kdWxlID09PSBNb2R1bGVLaW5kLkVTMjAxNSB8fFxuICAgICAgICAgICAgY29tcGlsZXJPcHRpb25zLm1vZHVsZSA9PT0gTW9kdWxlS2luZC5FU05leHQpICYmXG4gICAgICAgICAgICAodHNUcmFuc3BpbGF0aW9uLnRhcmdldCA9PT0gJ2VzNScgfHxcbiAgICAgICAgICAgICAgICAoIXRzVHJhbnNwaWxhdGlvbi50YXJnZXQgJiYgY29tcGlsZXJPcHRpb25zLnRhcmdldCA9PT0gU2NyaXB0VGFyZ2V0LkVTNSkpKSB7XG4gICAgICAgICAgICBwYWNrYWdlRW50cnlQb2ludHMuZXNtNSA9IG5vcm1hbGl6ZVJlbGF0aXZlUGF0aChwYXRoLnJlbGF0aXZlKHBhY2thZ2VKc29uT3V0RGlyLFxuICAgICAgICAgICAgICAgIGVudHJ5RmlsZUFicykpO1xuICAgICAgICAgICAgcGFja2FnZUVudHJ5UG9pbnRzLm1vZHVsZSA9IG5vcm1hbGl6ZVJlbGF0aXZlUGF0aChwYXRoLnJlbGF0aXZlKHBhY2thZ2VKc29uT3V0RGlyLFxuICAgICAgICAgICAgICAgIGVudHJ5RmlsZUFicykpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbXBpbGVyT3B0aW9ucy5tb2R1bGUgPT09IE1vZHVsZUtpbmQuVU1EIHx8XG4gICAgICAgICAgICBjb21waWxlck9wdGlvbnMubW9kdWxlID09PSBNb2R1bGVLaW5kLkNvbW1vbkpTKSB7XG4gICAgICAgICAgICBwYWNrYWdlRW50cnlQb2ludHMubWFpbiA9IG5vcm1hbGl6ZVJlbGF0aXZlUGF0aChwYXRoLnJlbGF0aXZlKHBhY2thZ2VKc29uT3V0RGlyLFxuICAgICAgICAgICAgICAgIGVudHJ5RmlsZUFicykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbXBpbGVyT3B0aW9ucy5fZGVjbGFyYXRpb24gJiYgdHNUcmFuc3BpbGF0aW9uLl90eXBpbmdzT3V0RGlyKSB7XG4gICAgICAgICAgICBwYWNrYWdlRW50cnlQb2ludHMudHlwaW5ncyA9IG5vcm1hbGl6ZVJlbGF0aXZlUGF0aChwYXRoLnJlbGF0aXZlKHBhY2thZ2VKc29uT3V0RGlyLFxuICAgICAgICAgICAgICAgIHBhdGguam9pbih0c1RyYW5zcGlsYXRpb24uX3R5cGluZ3NPdXREaXIsIGAke3RzVHJhbnNwaWxhdGlvbi5fZGV0ZWN0ZWRFbnRyeU5hbWV9LmQudHNgKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4udHNUcmFuc3BpbGF0aW9uLFxuICAgICAgICBfaW5kZXg6IGksXG4gICAgICAgIF9zY3JpcHRUYXJnZXQ6IHNjcmlwdFRhcmdldCxcbiAgICAgICAgX3RzQ29uZmlnUGF0aDogdHNDb25maWdQYXRoLFxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgIF90c0NvbmZpZ0pzb246IHRzVHJhbnNwaWxhdGlvbi5fdHNDb25maWdKc29uIGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICAgICAgIF90c0NvbXBpbGVyQ29uZmlnOiB0c1RyYW5zcGlsYXRpb24uX3RzQ29tcGlsZXJDb25maWcsXG4gICAgICAgIF9kZWNsYXJhdGlvbjogZGVjbGFyYXRpb24sXG4gICAgICAgIF90c091dERpclJvb3RSZXNvbHZlZDogdHNPdXREaXJcbiAgICB9O1xufVxuIl19 |
\ | No newline at end of file |