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(dependency, context) {
44
- let releaseContextsVerify = false;
45
- const dependentName = null, dependentReleased = false, releaseContextVerifies = await verifyReleaseContext(dependency, dependentName, dependentReleased, context);
46
- if (releaseContextVerifies) {
47
- releaseContextsVerify = true;
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 createReleaseContext(dependency, dependentNames, context) {
57
- let releaseContextCreated = false;
58
- const { log, releaseContextFromDependency } = context, releaseContext = findReleaseContext(dependency, context);
59
- if (releaseContext !== null) {
60
- releaseContextCreated = true;
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 dependentNamesLength = dependentNames.length, dependencyString = dependency.asString(), dependencyName = dependency.getName(), releaseName = dependencyName; ///
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 '${releaseName}' package context...`);
84
+ log.info(`Creating the '${dependencyName}' package context...`);
65
85
  } else {
66
86
  const lastDependentName = last(dependentNames), dependentName = lastDependentName; ///
67
- log.info(`Creating the '${releaseName}' package context given the '${dependentName}' dependant's '${dependencyString}' dependency...`);
87
+ log.info(`Creating the '${dependencyName}' package context given the '${dependentName}' dependant's '${dependencyString}' dependency...`);
68
88
  }
69
- const releaseContext = await releaseContextFromDependency(dependency, context);
70
- if (releaseContext === null) {
71
- log.warning(`The '${releaseName}' package context could not be created. Perhaps the 'meta.json' file is missing or invalid..`);
72
- } else {
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
- const dependencyReleaseContextsCreated = await createDependencyReleaseContexts(releaseContext, dependency, dependentNames, context);
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
- releaseContextCreated ? log.debug(`...created the '${releaseName}' package context.`) : log.warning(`...unable to create the '${releaseName}' package context.`);
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 releaseContextVerifies;
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(), dependencyName = name; ///
118
+ const name = releaseContext.getName(), released = releaseContext.isReleased(), dependencies = releaseContext.getDependencies(), dependentName = name, dependentReleased = released; ///
113
119
  dependentNames = [
114
120
  ...dependentNames,
115
- dependencyName
121
+ dependentName
116
122
  ]; ///
117
- dependencyReleaseContextsCreated = await (0, _dependency.asyncEveryDependency)(dependencies, async (dependency)=>{
118
- const cyclicDependencPresent = checkCyclicDependencyPresent(dependency, dependentNames, context);
119
- if (!cyclicDependencPresent) {
120
- const releaseContextCreated = await createReleaseContext(dependency, dependentNames, context);
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 cyclicDependencPresent = false;
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
- cyclicDependencPresent = true;
171
+ cyclicDependencyPresent = true;
174
172
  }
175
- return cyclicDependencPresent;
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-languages",
3
3
  "author": "James Smith",
4
- "version": "0.0.136",
4
+ "version": "0.0.138",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-languages",
7
7
  "description": "Occam's common language functionality.",
@@ -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
- releaseContextCreated = await createReleaseContext(dependency, dependentNames, context);
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(dependency, context) {
32
- let releaseContextsVerify = false;
32
+ export async function verifyReleaseContexts(context) {
33
+ let releaseContextsVerify;
33
34
 
34
- const dependentName = null,
35
- dependentReleased = false,
36
- releaseContextVerifies = await verifyReleaseContext(dependency, dependentName, dependentReleased, context);
35
+ const { releaseContexts } = context;
37
36
 
38
- if (releaseContextVerifies) {
39
- releaseContextsVerify = true;
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 createReleaseContext(dependency, dependentNames, context) {
52
- let releaseContextCreated = false;
54
+ async function verifyReleaseContext(releaseContext, context) {
55
+ let releaseContextVerifies = false;
53
56
 
54
- const { log, releaseContextFromDependency } = context,
55
- releaseContext = findReleaseContext(dependency, context);
57
+ const released = releaseContext.isReleased(),
58
+ verified = releaseContext.hasVerified();
56
59
 
57
- if (releaseContext !== null) {
58
- releaseContextCreated = true;
60
+ if (released || verified) {
61
+ releaseContextVerifies = true;
59
62
  } else {
60
- const dependentNamesLength = dependentNames.length,
61
- dependencyString = dependency.asString(),
62
- dependencyName = dependency.getName(),
63
- releaseName = dependencyName; ///
63
+ const { log } = context,
64
+ name = releaseContext.getName(),
65
+ releaseName = name; ///
64
66
 
65
- if (dependentNamesLength === 0) {
66
- log.info(`Creating the '${releaseName}' package context...`);
67
- } else {
68
- const lastDependentName = last(dependentNames),
69
- dependentName = lastDependentName; ///
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
- log.info(`Creating the '${releaseName}' package context given the '${dependentName}' dependant's '${dependencyString}' dependency...`);
74
+ releaseContextVerifies = true;
72
75
  }
76
+ }
73
77
 
74
- const releaseContext = await releaseContextFromDependency(dependency, context);
78
+ return releaseContextVerifies;
79
+ }
75
80
 
76
- if (releaseContext === null) {
77
- log.warning(`The '${releaseName}' package context could not be created. Perhaps the 'meta.json' file is missing or invalid..`);
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
- if (releaseMatchesDependency) {
82
- const dependencyReleaseContextsCreated = await createDependencyReleaseContexts(releaseContext, dependency, dependentNames, context);
84
+ const { log, releaseContextFromDependency } = context,
85
+ dependencyName = dependency.getName();
83
86
 
84
- if (dependencyReleaseContextsCreated) {
85
- const { releaseContexts } = context;
87
+ let releaseContext;
86
88
 
87
- releaseContexts.push(releaseContext);
89
+ releaseContext = findReleaseContext(dependency, context);
88
90
 
89
- releaseContextCreated = true;
90
- }
91
- }
92
- }
91
+ const releaseContextFound = (releaseContext !== null);
93
92
 
94
- releaseContextCreated ?
95
- log.debug(`...created the '${releaseName}' package context.`) :
96
- log.warning(`...unable to create the '${releaseName}' package context.`);
97
- }
93
+ if (!releaseContextFound) {
94
+ const dependentNamesLength = dependentNames.length,
95
+ dependencyString = dependency.asString();
98
96
 
99
- return releaseContextCreated;
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
- async function verifyReleaseContext(dependency, dependentName, dependentReleased, context) {
103
- let releaseContextVerifies = false;
103
+ log.info(`Creating the '${dependencyName}' package context given the '${dependentName}' dependant's '${dependencyString}' dependency...`);
104
+ }
104
105
 
105
- const { log } = context,
106
- releaseContext = findReleaseContext(dependency, context),
107
- name = releaseContext.getName(),
108
- released = releaseContext.isReleased(),
109
- releaseName = name; ///
106
+ releaseContext = await releaseContextFromDependency(dependency, context);
107
+ }
110
108
 
111
- if (dependentReleased && !released) {
112
- log.warning(`The '${releaseName}' project cannot be verified because its '${dependentName}' dependent is a package.`);
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 dependencies = releaseContext.getDependencies(),
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 (dependencyReleaseContextsVerify) {
120
- const verified = releaseContext.hasVerified();
114
+ if (!projectDependencyOfPackage) {
115
+ const releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
121
116
 
122
- if (verified || released) {
123
- releaseContextVerifies = true;
124
- } else {
125
- log.info(`Verifying the '${releaseName}' project...`);
117
+ if (releaseMatchesDependency) {
118
+ if (releaseContextFound) {
119
+ releaseContextCreated = true;
120
+ } else {
121
+ const dependencyReleaseContextsCreated = await createDependencyReleaseContexts(releaseContext, dependency, dependentNames, context);
126
122
 
127
- const verifies = await releaseContext.verify();
123
+ if (dependencyReleaseContextsCreated) {
124
+ const { releaseContexts } = context;
128
125
 
129
- if (verifies) {
130
- log.info(`...verified the '${releaseName}' project.`);
126
+ releaseContexts.push(releaseContext);
131
127
 
132
- releaseContextVerifies = true;
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 releaseContextVerifies;
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
- dependencyName = name; ///
150
+ dependentName = name, ///
151
+ dependentReleased = released; ///
147
152
 
148
- dependentNames = [ ...dependentNames, dependencyName ]; ///
153
+ dependentNames = [ ...dependentNames, dependentName ]; ///
149
154
 
150
- dependencyReleaseContextsCreated = await asyncEveryDependency(dependencies, async (dependency) => {
151
- const cyclicDependencPresent = checkCyclicDependencyPresent(dependency, dependentNames, context);
155
+ const array = dependencies.getArray();
152
156
 
153
- if (!cyclicDependencPresent) {
154
- const releaseContextCreated = await createReleaseContext(dependency, dependentNames, context);
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 cyclicDependencPresent = false;
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
- cyclicDependencPresent = true;
234
+ cyclicDependencyPresent = true;
240
235
  }
241
236
 
242
- return cyclicDependencPresent;
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==
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- import { asyncEvery } from "../utilities/asynchronous";
4
-
5
- export async function asyncEveryDependency(dependencies, callback) {
6
- const array = dependencies.getArray();
7
-
8
- return await asyncEvery(array, callback);
9
- }