occam-languages 0.0.136 → 0.0.138
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.
|
@@ -23,12 +23,12 @@ _export(exports, {
|
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
25
|
const _necessary = require("necessary");
|
|
26
|
+
const _asynchronous = require("../utilities/asynchronous");
|
|
26
27
|
const _constants = require("../constants");
|
|
27
|
-
const _dependency = require("../utilities/dependency");
|
|
28
28
|
const { last } = _necessary.arrayUtilities;
|
|
29
29
|
async function createReleaseContexts(dependency, context) {
|
|
30
30
|
let releaseContextsCreated = false;
|
|
31
|
-
const dependentNames = [], releaseContextCreated = await createReleaseContext(dependency, dependentNames, context);
|
|
31
|
+
const dependentNames = [], dependentReleased = false, releaseContextCreated = await createReleaseContext(dependency, dependentNames, dependentReleased, context);
|
|
32
32
|
if (releaseContextCreated) {
|
|
33
33
|
releaseContextsCreated = true;
|
|
34
34
|
}
|
|
@@ -40,12 +40,15 @@ function initialiseReleaseContexts(context) {
|
|
|
40
40
|
initialiseReleaseContext(releaseContext, context);
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
async function verifyReleaseContexts(
|
|
44
|
-
let releaseContextsVerify
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
async function verifyReleaseContexts(context) {
|
|
44
|
+
let releaseContextsVerify;
|
|
45
|
+
const { releaseContexts } = context;
|
|
46
|
+
releaseContextsVerify = await (0, _asynchronous.asyncEvery)(releaseContexts, async (releaseContext)=>{
|
|
47
|
+
const releaseContextVerifies = await verifyReleaseContext(releaseContext, context);
|
|
48
|
+
if (releaseContextVerifies) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
49
52
|
return releaseContextsVerify;
|
|
50
53
|
}
|
|
51
54
|
const _default = {
|
|
@@ -53,71 +56,75 @@ const _default = {
|
|
|
53
56
|
initialiseReleaseContexts,
|
|
54
57
|
verifyReleaseContexts
|
|
55
58
|
};
|
|
56
|
-
async function
|
|
57
|
-
let
|
|
58
|
-
const
|
|
59
|
-
if (
|
|
60
|
-
|
|
59
|
+
async function verifyReleaseContext(releaseContext, context) {
|
|
60
|
+
let releaseContextVerifies = false;
|
|
61
|
+
const released = releaseContext.isReleased(), verified = releaseContext.hasVerified();
|
|
62
|
+
if (released || verified) {
|
|
63
|
+
releaseContextVerifies = true;
|
|
61
64
|
} else {
|
|
62
|
-
const
|
|
65
|
+
const { log } = context, name = releaseContext.getName(), releaseName = name; ///
|
|
66
|
+
log.info(`Verifying the '${releaseName}' project...`);
|
|
67
|
+
const verifies = await releaseContext.verify();
|
|
68
|
+
if (verifies) {
|
|
69
|
+
log.info(`...verified the '${releaseName}' project.`);
|
|
70
|
+
releaseContextVerifies = true;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return releaseContextVerifies;
|
|
74
|
+
}
|
|
75
|
+
async function createReleaseContext(dependency, dependentNames, dependentReleased, context) {
|
|
76
|
+
let releaseContextCreated = false;
|
|
77
|
+
const { log, releaseContextFromDependency } = context, dependencyName = dependency.getName();
|
|
78
|
+
let releaseContext;
|
|
79
|
+
releaseContext = findReleaseContext(dependency, context);
|
|
80
|
+
const releaseContextFound = releaseContext !== null;
|
|
81
|
+
if (!releaseContextFound) {
|
|
82
|
+
const dependentNamesLength = dependentNames.length, dependencyString = dependency.asString();
|
|
63
83
|
if (dependentNamesLength === 0) {
|
|
64
|
-
log.info(`Creating the '${
|
|
84
|
+
log.info(`Creating the '${dependencyName}' package context...`);
|
|
65
85
|
} else {
|
|
66
86
|
const lastDependentName = last(dependentNames), dependentName = lastDependentName; ///
|
|
67
|
-
log.info(`Creating the '${
|
|
87
|
+
log.info(`Creating the '${dependencyName}' package context given the '${dependentName}' dependant's '${dependencyString}' dependency...`);
|
|
68
88
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
89
|
+
releaseContext = await releaseContextFromDependency(dependency, context);
|
|
90
|
+
}
|
|
91
|
+
if (releaseContext === null) {
|
|
92
|
+
log.warning(`The '${dependencyName}' package context could not be created. Perhaps the 'meta.json' file is missing or invalid.`);
|
|
93
|
+
} else {
|
|
94
|
+
const projectDependencyOfPackage = checkProjectDependencyOfPackage(releaseContext, dependentReleased, dependentNames, context);
|
|
95
|
+
if (!projectDependencyOfPackage) {
|
|
73
96
|
const releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
|
|
74
97
|
if (releaseMatchesDependency) {
|
|
75
|
-
|
|
76
|
-
if (dependencyReleaseContextsCreated) {
|
|
77
|
-
const { releaseContexts } = context;
|
|
78
|
-
releaseContexts.push(releaseContext);
|
|
98
|
+
if (releaseContextFound) {
|
|
79
99
|
releaseContextCreated = true;
|
|
100
|
+
} else {
|
|
101
|
+
const dependencyReleaseContextsCreated = await createDependencyReleaseContexts(releaseContext, dependency, dependentNames, context);
|
|
102
|
+
if (dependencyReleaseContextsCreated) {
|
|
103
|
+
const { releaseContexts } = context;
|
|
104
|
+
releaseContexts.push(releaseContext);
|
|
105
|
+
releaseContextCreated = true;
|
|
106
|
+
}
|
|
80
107
|
}
|
|
81
108
|
}
|
|
82
109
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return releaseContextCreated;
|
|
86
|
-
}
|
|
87
|
-
async function verifyReleaseContext(dependency, dependentName, dependentReleased, context) {
|
|
88
|
-
let releaseContextVerifies = false;
|
|
89
|
-
const { log } = context, releaseContext = findReleaseContext(dependency, context), name = releaseContext.getName(), released = releaseContext.isReleased(), releaseName = name; ///
|
|
90
|
-
if (dependentReleased && !released) {
|
|
91
|
-
log.warning(`The '${releaseName}' project cannot be verified because its '${dependentName}' dependent is a package.`);
|
|
92
|
-
} else {
|
|
93
|
-
const dependencies = releaseContext.getDependencies(), dependentName = releaseName, dependentReleased = released, dependencyReleaseContextsVerify = await verifyDependencyReleaseContexts(dependencies, dependentName, dependentReleased, context);
|
|
94
|
-
if (dependencyReleaseContextsVerify) {
|
|
95
|
-
const verified = releaseContext.hasVerified();
|
|
96
|
-
if (verified || released) {
|
|
97
|
-
releaseContextVerifies = true;
|
|
98
|
-
} else {
|
|
99
|
-
log.info(`Verifying the '${releaseName}' project...`);
|
|
100
|
-
const verifies = await releaseContext.verify();
|
|
101
|
-
if (verifies) {
|
|
102
|
-
log.info(`...verified the '${releaseName}' project.`);
|
|
103
|
-
releaseContextVerifies = true;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
110
|
+
if (!releaseContextFound) {
|
|
111
|
+
releaseContextCreated ? log.debug(`...created the '${dependencyName}' package context.`) : log.warning(`...unable to create the '${dependencyName}' package context.`);
|
|
106
112
|
}
|
|
107
113
|
}
|
|
108
|
-
return
|
|
114
|
+
return releaseContextCreated;
|
|
109
115
|
}
|
|
110
116
|
async function createDependencyReleaseContexts(releaseContext, dependency, dependentNames, context) {
|
|
111
117
|
let dependencyReleaseContextsCreated;
|
|
112
|
-
const name = releaseContext.getName(), dependencies = releaseContext.getDependencies(),
|
|
118
|
+
const name = releaseContext.getName(), released = releaseContext.isReleased(), dependencies = releaseContext.getDependencies(), dependentName = name, dependentReleased = released; ///
|
|
113
119
|
dependentNames = [
|
|
114
120
|
...dependentNames,
|
|
115
|
-
|
|
121
|
+
dependentName
|
|
116
122
|
]; ///
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
123
|
+
const array = dependencies.getArray();
|
|
124
|
+
dependencyReleaseContextsCreated = await (0, _asynchronous.asyncEvery)(array, async (dependency)=>{
|
|
125
|
+
const cyclicDependencyPresent = checkCyclicDependencyPresent(dependency, dependentNames, context);
|
|
126
|
+
if (!cyclicDependencyPresent) {
|
|
127
|
+
const releaseContextCreated = await createReleaseContext(dependency, dependentNames, dependentReleased, context);
|
|
121
128
|
if (releaseContextCreated) {
|
|
122
129
|
return true;
|
|
123
130
|
}
|
|
@@ -125,15 +132,6 @@ async function createDependencyReleaseContexts(releaseContext, dependency, depen
|
|
|
125
132
|
});
|
|
126
133
|
return dependencyReleaseContextsCreated;
|
|
127
134
|
}
|
|
128
|
-
async function verifyDependencyReleaseContexts(dependencies, dependentName, dependentReleased, context) {
|
|
129
|
-
const dependencyReleaseContextsVerify = await (0, _dependency.asyncEveryDependency)(dependencies, async (dependency)=>{
|
|
130
|
-
const releaseContextVerifies = await verifyReleaseContext(dependency, dependentName, dependentReleased, context);
|
|
131
|
-
if (releaseContextVerifies) {
|
|
132
|
-
return true;
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
return dependencyReleaseContextsVerify;
|
|
136
|
-
}
|
|
137
135
|
function findReleaseContext(dependency, context) {
|
|
138
136
|
const { releaseContexts } = context, dependencyName = dependency.getName(), releaseContext = releaseContexts.find((releaseContext)=>{
|
|
139
137
|
const dependencyNameMatches = releaseContext.matchDependencyName(dependencyName);
|
|
@@ -162,7 +160,7 @@ function initialiseReleaseContext(releaseContext, context) {
|
|
|
162
160
|
log.debug(`...initialised the '${releaseName}' package context.`);
|
|
163
161
|
}
|
|
164
162
|
function checkCyclicDependencyPresent(dependency, dependentNames, context) {
|
|
165
|
-
let
|
|
163
|
+
let cyclicDependencyPresent = false;
|
|
166
164
|
const dependencyName = dependency.getName(), index = dependentNames.indexOf(dependencyName);
|
|
167
165
|
if (index > -1) {
|
|
168
166
|
const { log } = context, circularDependentNames = dependentNames.slice(index), circularDependencyNames = [
|
|
@@ -170,9 +168,9 @@ function checkCyclicDependencyPresent(dependency, dependentNames, context) {
|
|
|
170
168
|
dependencyName
|
|
171
169
|
], circularDependencyNamesString = circularDependencyNames.join(_constants.SINGLE_SPACE);
|
|
172
170
|
log.warning(`There is a cyclic dependency, '${circularDependencyNamesString}'.`);
|
|
173
|
-
|
|
171
|
+
cyclicDependencyPresent = true;
|
|
174
172
|
}
|
|
175
|
-
return
|
|
173
|
+
return cyclicDependencyPresent;
|
|
176
174
|
}
|
|
177
175
|
function checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context) {
|
|
178
176
|
let releaseMatchesDependency = true;
|
|
@@ -187,5 +185,17 @@ function checkReleaseMatchesDependency(releaseContext, dependency, dependentName
|
|
|
187
185
|
}
|
|
188
186
|
return releaseMatchesDependency;
|
|
189
187
|
}
|
|
188
|
+
function checkProjectDependencyOfPackage(releaseContext, dependentReleased, dependentNames, context) {
|
|
189
|
+
let projectDependencyOfPackage = false;
|
|
190
|
+
if (dependentReleased) {
|
|
191
|
+
const released = releaseContext.isReleased();
|
|
192
|
+
if (!released) {
|
|
193
|
+
const { log } = context, name = releaseContext.getName(), lastDependentName = last(dependentNames), dependencyName = name, dependentName = lastDependentName; ///
|
|
194
|
+
log.warning(`The '${dependencyName}' dependency is a project whilst its '${dependentName}' dependent is a package.`);
|
|
195
|
+
projectDependencyOfPackage = true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return projectDependencyOfPackage;
|
|
199
|
+
}
|
|
190
200
|
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgU0lOR0xFX1NQQUNFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgYXN5bmNFdmVyeURlcGVuZGVuY3kgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2RlcGVuZGVuY3lcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gZmFsc2U7XG5cbiAgY29uc3QgZGVwZW5kZW50TmFtZXMgPSBbXSxcbiAgICAgICAgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gYXdhaXQgY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyhjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c1ZlcmlmeSA9IGZhbHNlO1xuXG4gIGNvbnN0IGRlcGVuZGVudE5hbWUgPSBudWxsLFxuICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IGZhbHNlLFxuICAgICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gYXdhaXQgdmVyaWZ5UmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZSwgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dFZlcmlmaWVzKSB7XG4gICAgcmVsZWFzZUNvbnRleHRzVmVyaWZ5ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNWZXJpZnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHRzLFxuICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzLFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dHNcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCB7IGxvZywgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSB9ID0gY29udGV4dCxcbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkZXBlbmRlbnROYW1lc0xlbmd0aCA9IGRlcGVuZGVudE5hbWVzLmxlbmd0aCxcbiAgICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpLFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZTsgLy8vXG5cbiAgICBpZiAoZGVwZW5kZW50TmFtZXNMZW5ndGggPT09IDApIHtcbiAgICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuLi5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZTsgIC8vL1xuXG4gICAgICBsb2cuaW5mbyhgQ3JlYXRpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0IGdpdmVuIHRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kYW50J3MgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kuLi5gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGF3YWl0IHJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3koZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgICBpZiAocmVsZWFzZUNvbnRleHQgPT09IG51bGwpIHtcbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLi5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSkge1xuICAgICAgICBjb25zdCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCA9IGF3YWl0IGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQpIHtcbiAgICAgICAgICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0cy5wdXNoKHJlbGVhc2VDb250ZXh0KTtcblxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgP1xuICAgICAgbG9nLmRlYnVnKGAuLi5jcmVhdGVkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKSA6XG4gICAgICAgIGxvZy53YXJuaW5nKGAuLi51bmFibGUgdG8gY3JlYXRlIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dENyZWF0ZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpLFxuICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzUmVsZWFzZWQoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lOyAvLy9cblxuICBpZiAoZGVwZW5kZW50UmVsZWFzZWQgJiYgIXJlbGVhc2VkKSB7XG4gICAgbG9nLndhcm5pbmcoYFRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QgY2Fubm90IGJlIHZlcmlmaWVkIGJlY2F1c2UgaXRzICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgaXMgYSBwYWNrYWdlLmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpLFxuICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSByZWxlYXNlTmFtZSwgIC8vL1xuICAgICAgICAgIGRlcGVuZGVudFJlbGVhc2VkID0gcmVsZWFzZWQsIC8vL1xuICAgICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkgPSBhd2FpdCB2ZXJpZnlEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY2llcywgZGVwZW5kZW50TmFtZSwgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpO1xuXG4gICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkpIHtcbiAgICAgIGNvbnN0IHZlcmlmaWVkID0gcmVsZWFzZUNvbnRleHQuaGFzVmVyaWZpZWQoKTtcblxuICAgICAgaWYgKHZlcmlmaWVkIHx8IHJlbGVhc2VkKSB7XG4gICAgICAgIHJlbGVhc2VDb250ZXh0VmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmluZm8oYFZlcmlmeWluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0Li4uYCk7XG5cbiAgICAgICAgY29uc3QgdmVyaWZpZXMgPSBhd2FpdCByZWxlYXNlQ29udGV4dC52ZXJpZnkoKTtcblxuICAgICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgICBsb2cuaW5mbyhgLi4udmVyaWZpZWQgdGhlICcke3JlbGVhc2VOYW1lfScgcHJvamVjdC5gKTtcblxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0VmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0VmVyaWZpZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZDtcblxuICBjb25zdCBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBuYW1lOyAgLy8vXG5cbiAgZGVwZW5kZW50TmFtZXMgPSBbIC4uLmRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbmN5TmFtZSBdOyAgLy8vXG5cbiAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBhd2FpdCBhc3luY0V2ZXJ5RGVwZW5kZW5jeShkZXBlbmRlbmNpZXMsIGFzeW5jIChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jUHJlc2VudCA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jeVByZXNlbnQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFjeWNsaWNEZXBlbmRlbmNQcmVzZW50KSB7XG4gICAgICBjb25zdCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jaWVzLCBkZXBlbmRlbnROYW1lLCBkZXBlbmRlbnRSZWxlYXNlZCwgY29udGV4dCkge1xuICBjb25zdCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzVmVyaWZ5ID0gYXdhaXQgYXN5bmNFdmVyeURlcGVuZGVuY3koZGVwZW5kZW5jaWVzLCBhc3luYyAoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0VmVyaWZpZXMgPSBhd2FpdCB2ZXJpZnlSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lLCBkZXBlbmRlbnRSZWxlYXNlZCwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAocmVsZWFzZUNvbnRleHRWZXJpZmllcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeTtcbn1cblxuZnVuY3Rpb24gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dHMgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmZpbmQoKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWVNYXRjaGVzID0gcmVsZWFzZUNvbnRleHQubWF0Y2hEZXBlbmRlbmN5TmFtZShkZXBlbmRlbmN5TmFtZSk7XG5cbiAgICAgICAgICBpZiAoZGVwZW5kZW5jeU5hbWVNYXRjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5mdW5jdGlvbiByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCwgcmVsZWFzZUNvbnRleHRzID0gW10pIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0KSB7XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gICAgICByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCwgcmVsZWFzZUNvbnRleHRzKTtcbiAgICB9KTtcblxuICAgIHJlbGVhc2VDb250ZXh0cy51bnNoaWZ0KHJlbGVhc2VDb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCkge1xuICBjb25zdCB7IGxvZywgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGggfSA9IGNvbnRleHQsXG4gICAgICAgIG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgLy8vXG4gICAgICAgIHJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcblxuICBsb2cuaW5mbyhgSW5pdGlhbGlzaW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuXG4gIHJlbGVhc2VDb250ZXh0LmluaXRpYWxpc2UocmVsZWFzZUNvbnRleHRzLCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCk7XG5cbiAgbG9nLmRlYnVnKGAuLi5pbml0aWFsaXNlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ3ljbGljRGVwZW5kZW5jeVByZXNlbnQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IGN5Y2xpY0RlcGVuZGVuY1ByZXNlbnQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBpbmRleCA9IGRlcGVuZGVudE5hbWVzLmluZGV4T2YoZGVwZW5kZW5jeU5hbWUpO1xuXG4gIGlmIChpbmRleCA+IC0xKSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbnROYW1lcyA9IGRlcGVuZGVudE5hbWVzLnNsaWNlKGluZGV4KSxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVuY3lOYW1lcyA9IFtcbiAgICAgICAgICAgIC4uLmNpcmN1bGFyRGVwZW5kZW50TmFtZXMsXG4gICAgICAgICAgICBkZXBlbmRlbmN5TmFtZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmcgPSBjaXJjdWxhckRlcGVuZGVuY3lOYW1lcy5qb2luKFNJTkdMRV9TUEFDRSk7XG5cbiAgICBsb2cud2FybmluZyhgVGhlcmUgaXMgYSBjeWNsaWMgZGVwZW5kZW5jeSwgJyR7Y2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmd9Jy5gKTtcblxuICAgIGN5Y2xpY0RlcGVuZGVuY1ByZXNlbnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY1ByZXNlbnQ7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gdHJ1ZTtcblxuICBjb25zdCBzaG9ydGVuZWRWZXJzaW9uID0gZGVwZW5kZW5jeS5nZXRTaG9ydGVuZWRWZXJzaW9uKCk7XG5cbiAgaWYgKHNob3J0ZW5lZFZlcnNpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uID0gcmVsZWFzZUNvbnRleHQubWF0Y2hTaG9ydGVuZWRWZXJzaW9uKHNob3J0ZW5lZFZlcnNpb24pO1xuXG4gICAgaWYgKCFlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIHZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5nZXRWZXJzaW9uKCksXG4gICAgICAgICAgICBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lLCAgLy8vXG4gICAgICAgICAgICB2ZXJzaW9uU3RyaW5nID0gdmVyc2lvbi50b1N0cmluZygpLFxuICAgICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgICAgbG9nLndhcm5pbmcoYFRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IHJlcXVpcmVzIHRoZSAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeSBidXQgYSBjb250ZXh0IHdpdGggdmVyc2lvbiAnJHt2ZXJzaW9uU3RyaW5nfScgd2FzIHByb3ZpZGVkLmApO1xuXG4gICAgICByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5O1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHMiLCJ2ZXJpZnlSZWxlYXNlQ29udGV4dHMiLCJsYXN0IiwiYXJyYXlVdGlsaXRpZXMiLCJkZXBlbmRlbmN5IiwiY29udGV4dCIsInJlbGVhc2VDb250ZXh0c0NyZWF0ZWQiLCJkZXBlbmRlbnROYW1lcyIsInJlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImNyZWF0ZVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZUNvbnRleHRzIiwiZm9yRWFjaCIsInJlbGVhc2VDb250ZXh0IiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZUNvbnRleHRzVmVyaWZ5IiwiZGVwZW5kZW50TmFtZSIsImRlcGVuZGVudFJlbGVhc2VkIiwicmVsZWFzZUNvbnRleHRWZXJpZmllcyIsInZlcmlmeVJlbGVhc2VDb250ZXh0IiwibG9nIiwicmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSIsImZpbmRSZWxlYXNlQ29udGV4dCIsImRlcGVuZGVudE5hbWVzTGVuZ3RoIiwibGVuZ3RoIiwiZGVwZW5kZW5jeVN0cmluZyIsImFzU3RyaW5nIiwiZGVwZW5kZW5jeU5hbWUiLCJnZXROYW1lIiwicmVsZWFzZU5hbWUiLCJpbmZvIiwibGFzdERlcGVuZGVudE5hbWUiLCJ3YXJuaW5nIiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJwdXNoIiwiZGVidWciLCJuYW1lIiwicmVsZWFzZWQiLCJpc1JlbGVhc2VkIiwiZGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeSIsInZlcmlmeURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJ2ZXJpZmllZCIsImhhc1ZlcmlmaWVkIiwidmVyaWZpZXMiLCJ2ZXJpZnkiLCJhc3luY0V2ZXJ5RGVwZW5kZW5jeSIsImN5Y2xpY0RlcGVuZGVuY1ByZXNlbnQiLCJjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50IiwiZmluZCIsImRlcGVuZGVuY3lOYW1lTWF0Y2hlcyIsIm1hdGNoRGVwZW5kZW5jeU5hbWUiLCJyZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJpbmNsdWRlcyIsImZvckVhY2hEZXBlbmRlbmN5IiwidW5zaGlmdCIsIkZpbGVDb250ZXh0RnJvbUZpbGVQYXRoIiwiaW5pdGlhbGlzZSIsImluZGV4IiwiaW5kZXhPZiIsImNpcmN1bGFyRGVwZW5kZW50TmFtZXMiLCJzbGljZSIsImNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzIiwiY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmciLCJqb2luIiwiU0lOR0xFX1NQQUNFIiwic2hvcnRlbmVkVmVyc2lvbiIsImdldFNob3J0ZW5lZFZlcnNpb24iLCJlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwibWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uU3RyaW5nIiwidG9TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVNzQkE7ZUFBQUE7O1FBbUN0QjtlQUFBOztRQXRCZ0JDO2VBQUFBOztRQVFNQztlQUFBQTs7OzJCQTVCUzsyQkFFRjs0QkFDUTtBQUVyQyxNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyx5QkFBYztBQUV4QixlQUFlSixzQkFBc0JLLFVB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
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgYXN5bmNFdmVyeSAgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuaW1wb3J0IHsgU0lOR0xFX1NQQUNFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbnROYW1lcyA9IFtdLFxuICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IGZhbHNlLFxuICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyhjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHRzKGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c1ZlcmlmeTtcblxuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dHNWZXJpZnkgPSBhd2FpdCBhc3luY0V2ZXJ5KHJlbGVhc2VDb250ZXh0cywgYXN5bmMgKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IGF3YWl0IHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcblxuICAgIGlmIChyZWxlYXNlQ29udGV4dFZlcmlmaWVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNWZXJpZnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHRzLFxuICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzLFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dHNcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgcmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VkKCksXG4gICAgICAgIHZlcmlmaWVkID0gcmVsZWFzZUNvbnRleHQuaGFzVmVyaWZpZWQoKTtcblxuICBpZiAocmVsZWFzZWQgfHwgdmVyaWZpZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZTsgLy8vXG5cbiAgICBsb2cuaW5mbyhgVmVyaWZ5aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmaWVzID0gYXdhaXQgcmVsZWFzZUNvbnRleHQudmVyaWZ5KCk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGxvZy5pbmZvKGAuLi52ZXJpZmllZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0LmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRWZXJpZmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCB7IGxvZywgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKTtcblxuICBsZXQgcmVsZWFzZUNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHQgPSBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHRGb3VuZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dEZvdW5kKSB7XG4gICAgY29uc3QgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGgsXG4gICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgIGlmIChkZXBlbmRlbnROYW1lc0xlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgZ2l2ZW4gdGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRhbnQncyAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4uLmApO1xuICAgIH1cblxuICAgIHJlbGVhc2VDb250ZXh0ID0gYXdhaXQgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeShkZXBlbmRlbmN5LCBjb250ZXh0KTtcbiAgfVxuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlID0gY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50UmVsZWFzZWQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0Rm91bmQpIHtcbiAgICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gYXdhaXQgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkKSB7XG4gICAgICAgICAgICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRzLnB1c2gocmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVsZWFzZUNvbnRleHRGb3VuZCkge1xuICAgICAgcmVsZWFzZUNvbnRleHRDcmVhdGVkID9cbiAgICAgICAgbG9nLmRlYnVnKGAuLi5jcmVhdGVkIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKSA6XG4gICAgICAgICAgbG9nLndhcm5pbmcoYC4uLnVuYWJsZSB0byBjcmVhdGUgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgcGFja2FnZSBjb250ZXh0LmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dENyZWF0ZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZDtcblxuICBjb25zdCBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzUmVsZWFzZWQoKSxcbiAgICAgICAgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCksXG4gICAgICAgIGRlcGVuZGVudE5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIGRlcGVuZGVudFJlbGVhc2VkID0gcmVsZWFzZWQ7ICAvLy9cblxuICBkZXBlbmRlbnROYW1lcyA9IFsgLi4uZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudE5hbWUgXTsgIC8vL1xuXG4gIGNvbnN0IGFycmF5ID0gZGVwZW5kZW5jaWVzLmdldEFycmF5KCk7XG5cbiAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBhd2FpdCBhc3luY0V2ZXJ5KGFycmF5LCBhc3luYyAoZGVwZW5kZW5jeSkgPT4ge1xuICAgIGNvbnN0IGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50ID0gY2hlY2tDeWNsaWNEZXBlbmRlbmN5UHJlc2VudChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICBpZiAoIWN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KSB7XG4gICAgICBjb25zdCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpO1xuXG4gICAgICBpZiAocmVsZWFzZUNvbnRleHRDcmVhdGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xufVxuXG5mdW5jdGlvbiBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dHMuZmluZCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5TmFtZU1hdGNoZXMgPSByZWxlYXNlQ29udGV4dC5tYXRjaERlcGVuZGVuY3lOYW1lKGRlcGVuZGVuY3lOYW1lKTtcblxuICAgICAgICAgIGlmIChkZXBlbmRlbmN5TmFtZU1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBjb250ZXh0LCByZWxlYXNlQ29udGV4dHMgPSBbXSkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KTtcblxuICBpZiAoIXJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICAgIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgICAgIHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBjb250ZXh0LCByZWxlYXNlQ29udGV4dHMpO1xuICAgIH0pO1xuXG4gICAgcmVsZWFzZUNvbnRleHRzLnVuc2hpZnQocmVsZWFzZUNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0cztcbn1cblxuZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgbG9nLCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCB9ID0gY29udGV4dCxcbiAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0Li4uYCk7XG5cbiAgcmVsZWFzZUNvbnRleHQuaW5pdGlhbGlzZShyZWxlYXNlQ29udGV4dHMsIEZpbGVDb250ZXh0RnJvbUZpbGVQYXRoKTtcblxuICBsb2cuZGVidWcoYC4uLmluaXRpYWxpc2VkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tDeWNsaWNEZXBlbmRlbmN5UHJlc2VudChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBpbmRleCA9IGRlcGVuZGVudE5hbWVzLmluZGV4T2YoZGVwZW5kZW5jeU5hbWUpO1xuXG4gIGlmIChpbmRleCA+IC0xKSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbnROYW1lcyA9IGRlcGVuZGVudE5hbWVzLnNsaWNlKGluZGV4KSxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVuY3lOYW1lcyA9IFtcbiAgICAgICAgICAgIC4uLmNpcmN1bGFyRGVwZW5kZW50TmFtZXMsXG4gICAgICAgICAgICBkZXBlbmRlbmN5TmFtZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmcgPSBjaXJjdWxhckRlcGVuZGVuY3lOYW1lcy5qb2luKFNJTkdMRV9TUEFDRSk7XG5cbiAgICBsb2cud2FybmluZyhgVGhlcmUgaXMgYSBjeWNsaWMgZGVwZW5kZW5jeSwgJyR7Y2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmd9Jy5gKTtcblxuICAgIGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBjeWNsaWNEZXBlbmRlbmN5UHJlc2VudDtcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSB0cnVlO1xuXG4gIGNvbnN0IHNob3J0ZW5lZFZlcnNpb24gPSBkZXBlbmRlbmN5LmdldFNob3J0ZW5lZFZlcnNpb24oKTtcblxuICBpZiAoc2hvcnRlbmVkVmVyc2lvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5tYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbik7XG5cbiAgICBpZiAoIWVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24pIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgdmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWUsICAvLy9cbiAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgPSB2ZXJzaW9uLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpO1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgcmVxdWlyZXMgdGhlICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5IGJ1dCBhIGNvbnRleHQgd2l0aCB2ZXJzaW9uICcke3ZlcnNpb25TdHJpbmd9JyB3YXMgcHJvdmlkZWQuYCk7XG5cbiAgICAgIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3k7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudFJlbGVhc2VkLCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UgPSBmYWxzZTtcblxuICBpZiAoZGVwZW5kZW50UmVsZWFzZWQpIHtcbiAgICBjb25zdCByZWxlYXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzUmVsZWFzZWQoKTtcblxuICAgIGlmICghcmVsZWFzZWQpIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IG5hbWUsLy8vXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWU7ICAvLy9cblxuICAgICAgbG9nLndhcm5pbmcoYFRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIGRlcGVuZGVuY3kgaXMgYSBwcm9qZWN0IHdoaWxzdCBpdHMgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCBpcyBhIHBhY2thZ2UuYCk7XG5cbiAgICAgIHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2U7XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUmVsZWFzZUNvbnRleHRzIiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyIsInZlcmlmeVJlbGVhc2VDb250ZXh0cyIsImxhc3QiLCJhcnJheVV0aWxpdGllcyIsImRlcGVuZGVuY3kiLCJjb250ZXh0IiwicmVsZWFzZUNvbnRleHRzQ3JlYXRlZCIsImRlcGVuZGVudE5hbWVzIiwiZGVwZW5kZW50UmVsZWFzZWQiLCJyZWxlYXNlQ29udGV4dENyZWF0ZWQiLCJjcmVhdGVSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0cyIsImZvckVhY2giLCJyZWxlYXNlQ29udGV4dCIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0c1ZlcmlmeSIsImFzeW5jRXZlcnkiLCJyZWxlYXNlQ29udGV4dFZlcmlmaWVzIiwidmVyaWZ5UmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlZCIsImlzUmVsZWFzZWQiLCJ2ZXJpZmllZCIsImhhc1ZlcmlmaWVkIiwibG9nIiwibmFtZSIsImdldE5hbWUiLCJyZWxlYXNlTmFtZSIsImluZm8iLCJ2ZXJpZmllcyIsInZlcmlmeSIsInJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kiLCJkZXBlbmRlbmN5TmFtZSIsImZpbmRSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0Rm91bmQiLCJkZXBlbmRlbnROYW1lc0xlbmd0aCIsImxlbmd0aCIsImRlcGVuZGVuY3lTdHJpbmciLCJhc1N0cmluZyIsImxhc3REZXBlbmRlbnROYW1lIiwiZGVwZW5kZW50TmFtZSIsIndhcm5pbmciLCJwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSIsImNoZWNrUHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UiLCJyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkIiwiY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInB1c2giLCJkZWJ1ZyIsImRlcGVuZGVuY2llcyIsImdldERlcGVuZGVuY2llcyIsImFycmF5IiwiZ2V0QXJyYXkiLCJjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCIsImNoZWNrQ3ljbGljRGVwZW5kZW5jeVByZXNlbnQiLCJmaW5kIiwiZGVwZW5kZW5jeU5hbWVNYXRjaGVzIiwibWF0Y2hEZXBlbmRlbmN5TmFtZSIsInJldHJpZXZlUmVsZWFzZUNvbnRleHRzIiwicmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCIsImluY2x1ZGVzIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJ1bnNoaWZ0IiwiRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgiLCJpbml0aWFsaXNlIiwiaW5kZXgiLCJpbmRleE9mIiwiY2lyY3VsYXJEZXBlbmRlbnROYW1lcyIsInNsaWNlIiwiY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXMiLCJjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZyIsImpvaW4iLCJTSU5HTEVfU1BBQ0UiLCJzaG9ydGVuZWRWZXJzaW9uIiwiZ2V0U2hvcnRlbmVkVmVyc2lvbiIsImVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJ2ZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInZlcnNpb25TdHJpbmciLCJ0b1N0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7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
|
package/package.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
+
import { asyncEvery } from "../utilities/asynchronous";
|
|
5
6
|
import { SINGLE_SPACE } from "../constants";
|
|
6
|
-
import { asyncEveryDependency } from "../utilities/dependency";
|
|
7
7
|
|
|
8
8
|
const { last } = arrayUtilities;
|
|
9
9
|
|
|
@@ -11,7 +11,8 @@ export async function createReleaseContexts(dependency, context) {
|
|
|
11
11
|
let releaseContextsCreated = false;
|
|
12
12
|
|
|
13
13
|
const dependentNames = [],
|
|
14
|
-
|
|
14
|
+
dependentReleased = false,
|
|
15
|
+
releaseContextCreated = await createReleaseContext(dependency, dependentNames, dependentReleased, context);
|
|
15
16
|
|
|
16
17
|
if (releaseContextCreated) {
|
|
17
18
|
releaseContextsCreated = true;
|
|
@@ -28,16 +29,18 @@ export function initialiseReleaseContexts(context) {
|
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
export async function verifyReleaseContexts(
|
|
32
|
-
let releaseContextsVerify
|
|
32
|
+
export async function verifyReleaseContexts(context) {
|
|
33
|
+
let releaseContextsVerify;
|
|
33
34
|
|
|
34
|
-
const
|
|
35
|
-
dependentReleased = false,
|
|
36
|
-
releaseContextVerifies = await verifyReleaseContext(dependency, dependentName, dependentReleased, context);
|
|
35
|
+
const { releaseContexts } = context;
|
|
37
36
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
releaseContextsVerify = await asyncEvery(releaseContexts, async (releaseContext) => {
|
|
38
|
+
const releaseContextVerifies = await verifyReleaseContext(releaseContext, context);
|
|
39
|
+
|
|
40
|
+
if (releaseContextVerifies) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
41
44
|
|
|
42
45
|
return releaseContextsVerify;
|
|
43
46
|
}
|
|
@@ -48,110 +51,114 @@ export default {
|
|
|
48
51
|
verifyReleaseContexts
|
|
49
52
|
};
|
|
50
53
|
|
|
51
|
-
async function
|
|
52
|
-
let
|
|
54
|
+
async function verifyReleaseContext(releaseContext, context) {
|
|
55
|
+
let releaseContextVerifies = false;
|
|
53
56
|
|
|
54
|
-
const
|
|
55
|
-
|
|
57
|
+
const released = releaseContext.isReleased(),
|
|
58
|
+
verified = releaseContext.hasVerified();
|
|
56
59
|
|
|
57
|
-
if (
|
|
58
|
-
|
|
60
|
+
if (released || verified) {
|
|
61
|
+
releaseContextVerifies = true;
|
|
59
62
|
} else {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
releaseName = dependencyName; ///
|
|
63
|
+
const { log } = context,
|
|
64
|
+
name = releaseContext.getName(),
|
|
65
|
+
releaseName = name; ///
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
log.info(`Verifying the '${releaseName}' project...`);
|
|
68
|
+
|
|
69
|
+
const verifies = await releaseContext.verify();
|
|
70
|
+
|
|
71
|
+
if (verifies) {
|
|
72
|
+
log.info(`...verified the '${releaseName}' project.`);
|
|
70
73
|
|
|
71
|
-
|
|
74
|
+
releaseContextVerifies = true;
|
|
72
75
|
}
|
|
76
|
+
}
|
|
73
77
|
|
|
74
|
-
|
|
78
|
+
return releaseContextVerifies;
|
|
79
|
+
}
|
|
75
80
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
} else {
|
|
79
|
-
const releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
|
|
81
|
+
async function createReleaseContext(dependency, dependentNames, dependentReleased, context) {
|
|
82
|
+
let releaseContextCreated = false;
|
|
80
83
|
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
const { log, releaseContextFromDependency } = context,
|
|
85
|
+
dependencyName = dependency.getName();
|
|
83
86
|
|
|
84
|
-
|
|
85
|
-
const { releaseContexts } = context;
|
|
87
|
+
let releaseContext;
|
|
86
88
|
|
|
87
|
-
|
|
89
|
+
releaseContext = findReleaseContext(dependency, context);
|
|
88
90
|
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
91
|
+
const releaseContextFound = (releaseContext !== null);
|
|
93
92
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
93
|
+
if (!releaseContextFound) {
|
|
94
|
+
const dependentNamesLength = dependentNames.length,
|
|
95
|
+
dependencyString = dependency.asString();
|
|
98
96
|
|
|
99
|
-
|
|
100
|
-
}
|
|
97
|
+
if (dependentNamesLength === 0) {
|
|
98
|
+
log.info(`Creating the '${dependencyName}' package context...`);
|
|
99
|
+
} else {
|
|
100
|
+
const lastDependentName = last(dependentNames),
|
|
101
|
+
dependentName = lastDependentName; ///
|
|
101
102
|
|
|
102
|
-
|
|
103
|
-
|
|
103
|
+
log.info(`Creating the '${dependencyName}' package context given the '${dependentName}' dependant's '${dependencyString}' dependency...`);
|
|
104
|
+
}
|
|
104
105
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
name = releaseContext.getName(),
|
|
108
|
-
released = releaseContext.isReleased(),
|
|
109
|
-
releaseName = name; ///
|
|
106
|
+
releaseContext = await releaseContextFromDependency(dependency, context);
|
|
107
|
+
}
|
|
110
108
|
|
|
111
|
-
if (
|
|
112
|
-
log.warning(`The '${
|
|
109
|
+
if (releaseContext === null) {
|
|
110
|
+
log.warning(`The '${dependencyName}' package context could not be created. Perhaps the 'meta.json' file is missing or invalid.`);
|
|
113
111
|
} else {
|
|
114
|
-
const
|
|
115
|
-
dependentName = releaseName, ///
|
|
116
|
-
dependentReleased = released, ///
|
|
117
|
-
dependencyReleaseContextsVerify = await verifyDependencyReleaseContexts(dependencies, dependentName, dependentReleased, context);
|
|
112
|
+
const projectDependencyOfPackage = checkProjectDependencyOfPackage(releaseContext, dependentReleased, dependentNames, context);
|
|
118
113
|
|
|
119
|
-
if (
|
|
120
|
-
const
|
|
114
|
+
if (!projectDependencyOfPackage) {
|
|
115
|
+
const releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
|
|
121
116
|
|
|
122
|
-
if (
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
117
|
+
if (releaseMatchesDependency) {
|
|
118
|
+
if (releaseContextFound) {
|
|
119
|
+
releaseContextCreated = true;
|
|
120
|
+
} else {
|
|
121
|
+
const dependencyReleaseContextsCreated = await createDependencyReleaseContexts(releaseContext, dependency, dependentNames, context);
|
|
126
122
|
|
|
127
|
-
|
|
123
|
+
if (dependencyReleaseContextsCreated) {
|
|
124
|
+
const { releaseContexts } = context;
|
|
128
125
|
|
|
129
|
-
|
|
130
|
-
log.info(`...verified the '${releaseName}' project.`);
|
|
126
|
+
releaseContexts.push(releaseContext);
|
|
131
127
|
|
|
132
|
-
|
|
128
|
+
releaseContextCreated = true;
|
|
129
|
+
}
|
|
133
130
|
}
|
|
134
131
|
}
|
|
135
132
|
}
|
|
133
|
+
|
|
134
|
+
if (!releaseContextFound) {
|
|
135
|
+
releaseContextCreated ?
|
|
136
|
+
log.debug(`...created the '${dependencyName}' package context.`) :
|
|
137
|
+
log.warning(`...unable to create the '${dependencyName}' package context.`);
|
|
138
|
+
}
|
|
136
139
|
}
|
|
137
140
|
|
|
138
|
-
return
|
|
141
|
+
return releaseContextCreated;
|
|
139
142
|
}
|
|
140
143
|
|
|
141
144
|
async function createDependencyReleaseContexts(releaseContext, dependency, dependentNames, context) {
|
|
142
145
|
let dependencyReleaseContextsCreated;
|
|
143
146
|
|
|
144
147
|
const name = releaseContext.getName(),
|
|
148
|
+
released = releaseContext.isReleased(),
|
|
145
149
|
dependencies = releaseContext.getDependencies(),
|
|
146
|
-
|
|
150
|
+
dependentName = name, ///
|
|
151
|
+
dependentReleased = released; ///
|
|
147
152
|
|
|
148
|
-
dependentNames = [ ...dependentNames,
|
|
153
|
+
dependentNames = [ ...dependentNames, dependentName ]; ///
|
|
149
154
|
|
|
150
|
-
|
|
151
|
-
const cyclicDependencPresent = checkCyclicDependencyPresent(dependency, dependentNames, context);
|
|
155
|
+
const array = dependencies.getArray();
|
|
152
156
|
|
|
153
|
-
|
|
154
|
-
|
|
157
|
+
dependencyReleaseContextsCreated = await asyncEvery(array, async (dependency) => {
|
|
158
|
+
const cyclicDependencyPresent = checkCyclicDependencyPresent(dependency, dependentNames, context);
|
|
159
|
+
|
|
160
|
+
if (!cyclicDependencyPresent) {
|
|
161
|
+
const releaseContextCreated = await createReleaseContext(dependency, dependentNames, dependentReleased, context);
|
|
155
162
|
|
|
156
163
|
if (releaseContextCreated) {
|
|
157
164
|
return true;
|
|
@@ -162,18 +169,6 @@ async function createDependencyReleaseContexts(releaseContext, dependency, depen
|
|
|
162
169
|
return dependencyReleaseContextsCreated;
|
|
163
170
|
}
|
|
164
171
|
|
|
165
|
-
async function verifyDependencyReleaseContexts(dependencies, dependentName, dependentReleased, context) {
|
|
166
|
-
const dependencyReleaseContextsVerify = await asyncEveryDependency(dependencies, async (dependency) => {
|
|
167
|
-
const releaseContextVerifies = await verifyReleaseContext(dependency, dependentName, dependentReleased, context);
|
|
168
|
-
|
|
169
|
-
if (releaseContextVerifies) {
|
|
170
|
-
return true;
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
return dependencyReleaseContextsVerify;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
172
|
function findReleaseContext(dependency, context) {
|
|
178
173
|
const { releaseContexts } = context,
|
|
179
174
|
dependencyName = dependency.getName(),
|
|
@@ -220,7 +215,7 @@ function initialiseReleaseContext(releaseContext, context) {
|
|
|
220
215
|
}
|
|
221
216
|
|
|
222
217
|
function checkCyclicDependencyPresent(dependency, dependentNames, context) {
|
|
223
|
-
let
|
|
218
|
+
let cyclicDependencyPresent = false;
|
|
224
219
|
|
|
225
220
|
const dependencyName = dependency.getName(),
|
|
226
221
|
index = dependentNames.indexOf(dependencyName);
|
|
@@ -236,10 +231,10 @@ function checkCyclicDependencyPresent(dependency, dependentNames, context) {
|
|
|
236
231
|
|
|
237
232
|
log.warning(`There is a cyclic dependency, '${circularDependencyNamesString}'.`);
|
|
238
233
|
|
|
239
|
-
|
|
234
|
+
cyclicDependencyPresent = true;
|
|
240
235
|
}
|
|
241
236
|
|
|
242
|
-
return
|
|
237
|
+
return cyclicDependencyPresent;
|
|
243
238
|
}
|
|
244
239
|
|
|
245
240
|
function checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context) {
|
|
@@ -266,3 +261,25 @@ function checkReleaseMatchesDependency(releaseContext, dependency, dependentName
|
|
|
266
261
|
|
|
267
262
|
return releaseMatchesDependency;
|
|
268
263
|
}
|
|
264
|
+
|
|
265
|
+
function checkProjectDependencyOfPackage(releaseContext, dependentReleased, dependentNames, context) {
|
|
266
|
+
let projectDependencyOfPackage = false;
|
|
267
|
+
|
|
268
|
+
if (dependentReleased) {
|
|
269
|
+
const released = releaseContext.isReleased();
|
|
270
|
+
|
|
271
|
+
if (!released) {
|
|
272
|
+
const { log } = context,
|
|
273
|
+
name = releaseContext.getName(),
|
|
274
|
+
lastDependentName = last(dependentNames),
|
|
275
|
+
dependencyName = name,///
|
|
276
|
+
dependentName = lastDependentName; ///
|
|
277
|
+
|
|
278
|
+
log.warning(`The '${dependencyName}' dependency is a project whilst its '${dependentName}' dependent is a package.`);
|
|
279
|
+
|
|
280
|
+
projectDependencyOfPackage = true;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
return projectDependencyOfPackage;
|
|
285
|
+
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "asyncEveryDependency", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return asyncEveryDependency;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _asynchronous = require("../utilities/asynchronous");
|
|
12
|
-
async function asyncEveryDependency(dependencies, callback) {
|
|
13
|
-
const array = dependencies.getArray();
|
|
14
|
-
return await (0, _asynchronous.asyncEvery)(array, callback);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZGVwZW5kZW5jeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXN5bmNFdmVyeSAgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNFdmVyeURlcGVuZGVuY3koZGVwZW5kZW5jaWVzLCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheSA9IGRlcGVuZGVuY2llcy5nZXRBcnJheSgpO1xuXG4gIHJldHVybiBhd2FpdCBhc3luY0V2ZXJ5KGFycmF5LCBjYWxsYmFjayk7XG59XG4iXSwibmFtZXMiOlsiYXN5bmNFdmVyeURlcGVuZGVuY3kiLCJkZXBlbmRlbmNpZXMiLCJjYWxsYmFjayIsImFycmF5IiwiZ2V0QXJyYXkiLCJhc3luY0V2ZXJ5Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJc0JBOzs7ZUFBQUE7Ozs4QkFGTTtBQUVyQixlQUFlQSxxQkFBcUJDLFlBQVksRUFBRUMsUUFBUTtJQUMvRCxNQUFNQyxRQUFRRixhQUFhRyxRQUFRO0lBRW5DLE9BQU8sTUFBTUMsSUFBQUEsd0JBQVUsRUFBQ0YsT0FBT0Q7QUFDakMifQ==
|