occam-verify-cli 0.0.387 → 0.0.389

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.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
- const { loggingUtilities } = require("necessary"),
3
+ const { Dependency } = require("occam-file-system"),
4
+ { loggingUtilities } = require("necessary"),
4
5
  { verifyRelease, releaseContextUtilities } = require("../../lib/index");
5
6
 
6
7
  const { releaseContextFromReleaseNameAndShortenedVersion } = require("../utilities/fileSystem");
@@ -10,10 +11,11 @@ const { log } = loggingUtilities,
10
11
  { createReleaseContext, initialiseReleaseContexts } = releaseContextUtilities;
11
12
 
12
13
  function verifyAction(argument, logLevel) {
13
- const releaseName = argument, ///
14
+ const name = argument, ///
14
15
  releaseContextMap = {},
15
16
  shortenedVersion = null,
16
17
  dependentNames = [],
18
+ dependency = Dependency.fromNameAndShortenedVersion(name, shortenedVersion),
17
19
  context = {
18
20
  log,
19
21
  releaseContextMap,
@@ -22,13 +24,15 @@ function verifyAction(argument, logLevel) {
22
24
 
23
25
  setLogLevel(logLevel);
24
26
 
25
- createReleaseContext(releaseName, dependentNames, shortenedVersion, context, (error) => {
27
+ createReleaseContext(dependency, dependentNames, context, (error) => {
26
28
  if (error) {
27
29
  ///
28
30
 
29
31
  return;
30
32
  }
31
33
 
34
+ const releaseName = name; ///
35
+
32
36
  initialiseReleaseContexts(releaseName, releaseContextMap);
33
37
 
34
38
  const releaseVerified = verifyRelease(releaseName, releaseContextMap);
@@ -9,17 +9,18 @@ const callbacks = require("../callbacks");
9
9
  const { loadRelease } = occamFileSystemUtilities,
10
10
  { readFile, isEntryFile } = necessaryFileSystemUtilities;
11
11
 
12
- function releaseContextFromReleaseNameAndShortenedVersion(releaseName, shortenedVersion, context, callback) {
12
+ function releaseContextFromReleaseNameAndShortenedVersion(dependency, context, callback) {
13
13
  const projectsDirectoryPath = process.cwd(), ///
14
- entryPath = `${projectsDirectoryPath}/${releaseName}`,
14
+ dependencyName = dependency.getName(),
15
+ entryPath = `${projectsDirectoryPath}/${dependencyName}`,
15
16
  entryFile = isEntryFile(entryPath);
16
17
 
17
18
  let releaseContext;
18
19
 
19
20
  try {
20
21
  releaseContext = entryFile ?
21
- fileReleaseContextFromReleaseNameAndProjectsDirectoryPath(releaseName, projectsDirectoryPath, context) :
22
- directoryReleaseContextFromReleaseNameAndProjectsDirectoryPath(releaseName, projectsDirectoryPath, context);
22
+ fileReleaseContextFromDependencyAndProjectsDirectoryPath(dependency, projectsDirectoryPath, context) :
23
+ directoryReleaseContextFromDependencyAndProjectsDirectoryPath(dependency, projectsDirectoryPath, context);
23
24
  } catch (error) {
24
25
  const releaseContext = null;
25
26
 
@@ -27,7 +28,7 @@ function releaseContextFromReleaseNameAndShortenedVersion(releaseName, shortened
27
28
  }
28
29
 
29
30
  if (releaseContext !== null) {
30
- const releaseMatchesShortedVersion = checkReleaseMatchesShortenedVersion(releaseContext, shortenedVersion, context);
31
+ const releaseMatchesShortedVersion = checkReleaseMatchesDependency(dependency, releaseContext, context);
31
32
 
32
33
  if (!releaseMatchesShortedVersion) {
33
34
  releaseContext = null;
@@ -43,11 +44,30 @@ module.exports = {
43
44
  releaseContextFromReleaseNameAndShortenedVersion
44
45
  };
45
46
 
46
- function fileReleaseContextFromReleaseNameAndProjectsDirectoryPath(releaseName, projectsDirectoryPath, context) {
47
+ function checkReleaseMatchesDependency(dependency, releaseContext, context) {
48
+ const entries = releaseContext.getEntries(),
49
+ shortenedVersion = dependency.getShortedVersion(),
50
+ releaseMatchesShortedVersion = entries.matchShortenedVersion(shortenedVersion);
51
+
52
+ if (!releaseMatchesShortedVersion) {
53
+ const { log } = context,
54
+ version = releaseContext.getVersion(),
55
+ versionString = version.toString(),
56
+ dependencyName = dependency.getName(),
57
+ shortenedVersionString = shortenedVersion.toString();
58
+
59
+ log.error(`The '${dependencyName}' dependency's version of ${versionString} does not match the required shortened version of ${shortenedVersionString}.`);
60
+ }
61
+
62
+ return releaseMatchesShortedVersion;
63
+ }
64
+
65
+ function fileReleaseContextFromDependencyAndProjectsDirectoryPath(dependency, projectsDirectoryPath, context) {
47
66
  let releaseContext;
48
67
 
49
68
  const { log } = context,
50
- filePath = `${projectsDirectoryPath}/${releaseName}`,
69
+ dependencyName = dependency.getName(),
70
+ filePath = `${projectsDirectoryPath}/${dependencyName}`,
51
71
  content = readFile(filePath),
52
72
  releaseJSONString = content, ///
53
73
  releaseJSON = JSON.parse(releaseJSONString);
@@ -62,7 +82,7 @@ function fileReleaseContextFromReleaseNameAndProjectsDirectoryPath(releaseName,
62
82
 
63
83
  entries = Entries.fromJSON(json);
64
84
 
65
- const name = releaseName, ///
85
+ const name = dependencyName, ///
66
86
  fileReleaseContext = FileReleaseContext.fromLogNameEntriesCallbacksAndContextJSON(log, name, entries, callbacks, contextJSON);
67
87
 
68
88
  releaseContext = fileReleaseContext; ///
@@ -70,32 +90,16 @@ function fileReleaseContextFromReleaseNameAndProjectsDirectoryPath(releaseName,
70
90
  return releaseContext;
71
91
  }
72
92
 
73
- function checkReleaseMatchesShortenedVersion(releaseContext, shortenedVersion, context) {
74
- const entries = releaseContext.getEntries(),
75
- releaseMatchesShortedVersion = entries.matchShortenedVersion(shortenedVersion);
76
-
77
- if (!releaseMatchesShortedVersion) {
78
- const { log } = context,
79
- version = releaseContext.getVersion(),
80
- releaseName = releaseContext.getReleaseName(),
81
- versionString = version.toString(),
82
- shortenedVersionString = shortenedVersion.toString();
83
-
84
- log.error(`The '${releaseName}' package's version of ${versionString} does not match the dependency's shortened version of ${shortenedVersionString}.`);
85
- }
86
-
87
- return releaseMatchesShortedVersion;
88
- }
89
-
90
- function directoryReleaseContextFromReleaseNameAndProjectsDirectoryPath(releaseName, projectsDirectoryPath, context) {
93
+ function directoryReleaseContextFromDependencyAndProjectsDirectoryPath(dependency, projectsDirectoryPath, context) {
91
94
  let releaseContext = null;
92
95
 
93
- const topmostDirectoryName = releaseName, ///
96
+ const dependencyName = dependency.getName(),
97
+ topmostDirectoryName = dependencyName, ///
94
98
  release = loadRelease(topmostDirectoryName, projectsDirectoryPath);
95
99
 
96
100
  if (release !== null) {
97
101
  const { log } = context,
98
- name = releaseName, ///
102
+ name = dependencyName, ///
99
103
  entries = release.getEntries(),
100
104
  directoryReleaseContext = DirectoryReleaseContext.fromLogNameEntriesAndCallbacks(log, name, entries, callbacks);
101
105
 
@@ -44,15 +44,15 @@ function _unsupportedIterableToArray(o, minLen) {
44
44
  if (n === "Map" || n === "Set") return Array.from(n);
45
45
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
46
46
  }
47
- function createReleaseContext(releaseName, dependentNames, shortenedVersion, context, callback) {
48
- var releaseContextMap = context.releaseContextMap, releaseContext = releaseContextMap[releaseName] || null;
47
+ function createReleaseContext(dependency, dependentNames, context, callback) {
48
+ var releaseContextMap = context.releaseContextMap, name = dependency.getName(), releaseName = name, releaseContext = releaseContextMap[releaseName] || null;
49
49
  if (releaseContext !== null) {
50
50
  var error = false;
51
51
  callback(error);
52
52
  return;
53
53
  }
54
54
  var releaseContextFromReleaseNameAndShortenedVersion = context.releaseContextFromReleaseNameAndShortenedVersion;
55
- releaseContextFromReleaseNameAndShortenedVersion(releaseName, shortenedVersion, context, function(error, releaseContext) {
55
+ releaseContextFromReleaseNameAndShortenedVersion(dependency, context, function(error, releaseContext) {
56
56
  if (error) {
57
57
  callback(error);
58
58
  return;
@@ -98,10 +98,12 @@ function initialiseReleaseContext(releaseContext, releaseContextMap) {
98
98
  var dependencyReleaseContexts = retrieveDependencyReleaseContexts(releaseContext, releaseContextMap);
99
99
  releaseContext.initialise(dependencyReleaseContexts);
100
100
  }
101
- function checkCyclicDependencyExists(releaseName, dependentNames, releaseContext) {
102
- var dependentNamesIncludesReleaseName = dependentNames.includes(releaseName), cyclicDependencyExists = dependentNamesIncludesReleaseName; ///
101
+ function checkCyclicDependencyExists(dependency, dependentNames, releaseContext) {
102
+ var dependencyName = dependency.getName(), dependentNamesIncludesDependencyName = dependentNames.includes(dependencyName), cyclicDependencyExists = dependentNamesIncludesDependencyName; ///
103
103
  if (cyclicDependencyExists) {
104
- var firstDependentName = first(dependentNames), dependencyNames = dependentNames.concat(firstDependentName), dependencyNamesString = dependencyNames.join("' -> '");
104
+ var firstDependentName = first(dependentNames), dependencyNames = _toConsumableArray(dependentNames).concat([
105
+ firstDependentName
106
+ ]), dependencyNamesString = dependencyNames.join("' -> '");
105
107
  releaseContext.error("There is a cyclic dependency: '".concat(dependencyNamesString, "'."));
106
108
  }
107
109
  return cyclicDependencyExists;
@@ -115,13 +117,13 @@ function createDependencyReleaseContexts(releaseContext, dependentNames, context
115
117
  releaseName
116
118
  ]); ///
117
119
  dependencies.asynchronousForEachDependency(function(dependency, next, done) {
118
- var name = dependency.getName(), releaseName = name, shortenedVersion = dependency.getShortedVersion(), cyclicDependencyExists = checkCyclicDependencyExists(releaseName, dependentNames, releaseContext);
120
+ var cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames, releaseContext);
119
121
  if (cyclicDependencyExists) {
120
122
  var error = null;
121
123
  callback(error);
122
124
  return;
123
125
  }
124
- createReleaseContext(releaseName, dependentNames, shortenedVersion, context, function(error) {
126
+ createReleaseContext(dependency, dependentNames, context, function(error) {
125
127
  if (error) {
126
128
  callback(error);
127
129
  return;
@@ -148,4 +150,4 @@ function retrieveDependencyReleaseContexts(releaseContext, releaseContextMap) {
148
150
  return dependencyReleaseContexts;
149
151
  }
150
152
 
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChyZWxlYXNlTmFtZSwgZGVwZW5kZW50TmFtZXMsIHNob3J0ZW5lZFZlcnNpb24sIGNvbnRleHQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdIHx8IG51bGw7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgY29uc3QgZXJyb3IgPSBmYWxzZTtcblxuICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRGcm9tUmVsZWFzZU5hbWVBbmRTaG9ydGVuZWRWZXJzaW9uIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0RnJvbVJlbGVhc2VOYW1lQW5kU2hvcnRlbmVkVmVyc2lvbihyZWxlYXNlTmFtZSwgc2hvcnRlbmVkVmVyc2lvbiwgY29udGV4dCwgKGVycm9yLCByZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHJlbGVhc2VDb250ZXh0ID09PSBudWxsKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgICAgbG9nLmVycm9yKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvdWxkIG5vdCBiZSBjcmVhdGVkLmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gPSByZWxlYXNlQ29udGV4dDtcblxuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSA9IHJlbGVhc2VDb250ZXh0O1xuXG4gICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfSk7XG4gIH0sIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlTmFtZSwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHQsXG4gIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHNcbn07XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgaWYgKHJlbGVhc2VDb250ZXh0ID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgaW5pdGlhbGlzZWQgPSByZWxlYXNlQ29udGV4dC5pc0luaXRpYWxpc2VkKCk7XG5cbiAgaWYgKGluaXRpYWxpc2VkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgLy8vXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKTtcbiAgfSk7XG5cbiAgY29uc3QgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXApO1xuXG4gIHJlbGVhc2VDb250ZXh0LmluaXRpYWxpc2UoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhyZWxlYXNlTmFtZSwgZGVwZW5kZW50TmFtZXMsIHJlbGVhc2VDb250ZXh0KSB7XG4gIGNvbnN0IGRlcGVuZGVudE5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSA9IGRlcGVuZGVudE5hbWVzLmluY2x1ZGVzKHJlbGVhc2VOYW1lKSxcbiAgICAgICAgY3ljbGljRGVwZW5kZW5jeUV4aXN0cyA9IGRlcGVuZGVudE5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZTsgIC8vL1xuXG4gIGlmIChjeWNsaWNEZXBlbmRlbmN5RXhpc3RzKSB7XG4gICAgY29uc3QgZmlyc3REZXBlbmRlbnROYW1lID0gZmlyc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lcyA9IGRlcGVuZGVudE5hbWVzLmNvbmNhdChmaXJzdERlcGVuZGVudE5hbWUpLFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lc1N0cmluZyA9IGRlcGVuZGVuY3lOYW1lcy5qb2luKGAnIC0+ICdgKTtcblxuICAgIHJlbGVhc2VDb250ZXh0LmVycm9yKGBUaGVyZSBpcyBhIGN5Y2xpYyBkZXBlbmRlbmN5OiAnJHtkZXBlbmRlbmN5TmFtZXNTdHJpbmd9Jy5gKTtcbiAgfVxuXG4gIHJldHVybiBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgcmVsZWFzZU5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXRSZWxlYXNlTmFtZSgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZG9uZSA9ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IG51bGw7XG5cbiAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIH1cblxuICBkZXBlbmRlbnROYW1lcyA9IFsgLi4uZGVwZW5kZW50TmFtZXMsIHJlbGVhc2VOYW1lIF07ICAvLy9cblxuICBkZXBlbmRlbmNpZXMuYXN5bmNocm9ub3VzRm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3ksIG5leHQsIGRvbmUpID0+IHtcbiAgICBjb25zdCBuYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvL1xuICAgICAgICAgIHNob3J0ZW5lZFZlcnNpb24gPSBkZXBlbmRlbmN5LmdldFNob3J0ZWRWZXJzaW9uKCksXG4gICAgICAgICAgY3ljbGljRGVwZW5kZW5jeUV4aXN0cyA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhyZWxlYXNlTmFtZSwgZGVwZW5kZW50TmFtZXMsIHJlbGVhc2VDb250ZXh0KTtcblxuICAgIGlmIChjeWNsaWNEZXBlbmRlbmN5RXhpc3RzKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGw7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNyZWF0ZVJlbGVhc2VDb250ZXh0KHJlbGVhc2VOYW1lLCBkZXBlbmRlbnROYW1lcywgc2hvcnRlbmVkVmVyc2lvbiwgY29udGV4dCwgKGVycm9yKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCBkb25lKTtcbn1cblxuZnVuY3Rpb24gcmV0cmlldmVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCwgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyA9IFtdKSB7XG4gIGNvbnN0IGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpO1xuXG4gIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgZGVwZW5kZW5jeVJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW2RlcGVuZGVuY3lSZWxlYXNlTmFtZV07XG5cbiAgICBpZiAoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0luY2x1ZGVzRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0ID0gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHQpO1xuXG4gICAgaWYgKCFkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzSW5jbHVkZXNEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHQpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0OyAgLy8vXG5cbiAgICAgIHJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXAsIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMpO1xuXG4gICAgICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLnB1c2goZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0IiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VOYW1lIiwiZGVwZW5kZW50TmFtZXMiLCJzaG9ydGVuZWRWZXJzaW9uIiwiY29udGV4dCIsImNhbGxiYWNrIiwicmVsZWFzZUNvbnRleHRNYXAiLCJyZWxlYXNlQ29udGV4dCIsImVycm9yIiwicmVsZWFzZUNvbnRleHRGcm9tUmVsZWFzZU5hbWVBbmRTaG9ydGVuZWRWZXJzaW9uIiwibG9nIiwiY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCIsImluaXRpYWxpc2VkIiwiaXNJbml0aWFsaXNlZCIsImRlcGVuZGVuY2llcyIsImdldERlcGVuZGVuY2llcyIsImZvckVhY2hEZXBlbmRlbmN5IiwiZGVwZW5kZW5jeSIsIm5hbWUiLCJnZXROYW1lIiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2UiLCJjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMiLCJkZXBlbmRlbnROYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUiLCJpbmNsdWRlcyIsImN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMiLCJmaXJzdERlcGVuZGVudE5hbWUiLCJmaXJzdCIsImRlcGVuZGVuY3lOYW1lcyIsImNvbmNhdCIsImRlcGVuZGVuY3lOYW1lc1N0cmluZyIsImpvaW4iLCJnZXRSZWxlYXNlTmFtZSIsImRvbmUiLCJhc3luY2hyb25vdXNGb3JFYWNoRGVwZW5kZW5jeSIsIm5leHQiLCJnZXRTaG9ydGVkVmVyc2lvbiIsImRlcGVuZGVuY3lOYW1lIiwiZGVwZW5kZW5jeVJlbGVhc2VOYW1lIiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0IiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0luY2x1ZGVzRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0IiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRWdCQSxvQkFBb0I7ZUFBcEJBOztJQStDQUMseUJBQXlCO2VBQXpCQTs7SUFNaEIsT0FHRTtlQUhGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBckRPLFNBQVNELHFCQUFxQkUsV0FBVyxFQUFFQyxjQUFjLEVBQUVDLGdCQUFnQixFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRTtJQUNyRyxJQUFNLEFBQUVDLG9CQUFzQkYsUUFBdEJFLG1CQUNGQyxpQkFBaUJELGlCQUFpQixDQUFDTCxZQUFZLElBQUksSUFBSTtJQUU3RCxJQUFJTSxtQkFBbUIsSUFBSSxFQUFFO1FBQzNCLElBQU1DLFFBQVEsS0FBSztRQUVuQkgsU0FBU0c7UUFFVDtJQUNGLENBQUM7SUFFRCxJQUFNLEFBQUVDLG1EQUFxREwsUUFBckRLO0lBRVJBLGlEQUFpRFIsYUFBYUUsa0JBQWtCQyxTQUFTLFNBQUNJLE9BQU9ELGdCQUFtQjtRQUNsSCxJQUFJQyxPQUFPO1lBQ1RILFNBQVNHO1lBRVQ7UUFDRixDQUFDO1FBRUQsSUFBSUQsbUJBQW1CLElBQUksRUFBRTtZQUMzQixJQUFNLEFBQUVHLE1BQVFOLFFBQVJNO1lBRVJBLElBQUlGLEtBQUssQ0FBQyxBQUFDLFFBQW1CLE9BQVpQLGFBQVk7WUFF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
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dE1hcCB9ID0gY29udGV4dCxcbiAgICAgICAgbmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IG5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVycm9yID0gZmFsc2U7XG5cbiAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0RnJvbVJlbGVhc2VOYW1lQW5kU2hvcnRlbmVkVmVyc2lvbiB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dEZyb21SZWxlYXNlTmFtZUFuZFNob3J0ZW5lZFZlcnNpb24oZGVwZW5kZW5jeSwgY29udGV4dCwgKGVycm9yLCByZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHJlbGVhc2VDb250ZXh0ID09PSBudWxsKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgICAgbG9nLmVycm9yKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvdWxkIG5vdCBiZSBjcmVhdGVkLmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gPSByZWxlYXNlQ29udGV4dDtcblxuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSA9IHJlbGVhc2VDb250ZXh0O1xuXG4gICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfSk7XG4gIH0sIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlTmFtZSwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHQsXG4gIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHNcbn07XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgaWYgKHJlbGVhc2VDb250ZXh0ID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgaW5pdGlhbGlzZWQgPSByZWxlYXNlQ29udGV4dC5pc0luaXRpYWxpc2VkKCk7XG5cbiAgaWYgKGluaXRpYWxpc2VkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgLy8vXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKTtcbiAgfSk7XG5cbiAgY29uc3QgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXApO1xuXG4gIHJlbGVhc2VDb250ZXh0LmluaXRpYWxpc2UoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgcmVsZWFzZUNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW50TmFtZXMuaW5jbHVkZXMoZGVwZW5kZW5jeU5hbWUpLFxuICAgICAgICBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lOyAgLy8vXG5cbiAgaWYgKGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICBjb25zdCBmaXJzdERlcGVuZGVudE5hbWUgPSBmaXJzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzID0gWyAgLy8vXG4gICAgICAgICAgICAgIC4uLmRlcGVuZGVudE5hbWVzLFxuICAgICAgICAgICAgZmlyc3REZXBlbmRlbnROYW1lXG4gICAgICAgICAgXSxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZXNTdHJpbmcgPSBkZXBlbmRlbmN5TmFtZXMuam9pbihgJyAtPiAnYCk7XG5cbiAgICByZWxlYXNlQ29udGV4dC5lcnJvcihgVGhlcmUgaXMgYSBjeWNsaWMgZGVwZW5kZW5jeTogJyR7ZGVwZW5kZW5jeU5hbWVzU3RyaW5nfScuYCk7XG4gIH1cblxuICByZXR1cm4gY3ljbGljRGVwZW5kZW5jeUV4aXN0cztcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHJlbGVhc2VOYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0UmVsZWFzZU5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCksXG4gICAgICAgIGRvbmUgPSAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBudWxsO1xuXG4gICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgICB9XG5cbiAgZGVwZW5kZW50TmFtZXMgPSBbIC4uLmRlcGVuZGVudE5hbWVzLCByZWxlYXNlTmFtZSBdOyAgLy8vXG5cbiAgZGVwZW5kZW5jaWVzLmFzeW5jaHJvbm91c0ZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeUV4aXN0cyA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgcmVsZWFzZUNvbnRleHQpO1xuXG4gICAgaWYgKGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbnVsbDtcblxuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgZG9uZSk7XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXAsIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMgPSBbXSkge1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHtcbiAgICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtkZXBlbmRlbmN5UmVsZWFzZU5hbWVdO1xuXG4gICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNJbmNsdWRlc0RlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCA9IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0KTtcblxuICAgIGlmICghZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0luY2x1ZGVzRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0KSB7XG4gICAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dDsgIC8vL1xuXG4gICAgICByZXRyaWV2ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwLCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKTtcblxuICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5wdXNoKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cztcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVSZWxlYXNlQ29udGV4dCIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHMiLCJkZXBlbmRlbmN5IiwiZGVwZW5kZW50TmFtZXMiLCJjb250ZXh0IiwiY2FsbGJhY2siLCJyZWxlYXNlQ29udGV4dE1hcCIsIm5hbWUiLCJnZXROYW1lIiwicmVsZWFzZU5hbWUiLCJyZWxlYXNlQ29udGV4dCIsImVycm9yIiwicmVsZWFzZUNvbnRleHRGcm9tUmVsZWFzZU5hbWVBbmRTaG9ydGVuZWRWZXJzaW9uIiwibG9nIiwiY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCIsImluaXRpYWxpc2VkIiwiaXNJbml0aWFsaXNlZCIsImRlcGVuZGVuY2llcyIsImdldERlcGVuZGVuY2llcyIsImZvckVhY2hEZXBlbmRlbmN5IiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2UiLCJjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMiLCJkZXBlbmRlbmN5TmFtZSIsImRlcGVuZGVudE5hbWVzSW5jbHVkZXNEZXBlbmRlbmN5TmFtZSIsImluY2x1ZGVzIiwiY3ljbGljRGVwZW5kZW5jeUV4aXN0cyIsImZpcnN0RGVwZW5kZW50TmFtZSIsImZpcnN0IiwiZGVwZW5kZW5jeU5hbWVzIiwiZGVwZW5kZW5jeU5hbWVzU3RyaW5nIiwiam9pbiIsImdldFJlbGVhc2VOYW1lIiwiZG9uZSIsImFzeW5jaHJvbm91c0ZvckVhY2hEZXBlbmRlbmN5IiwibmV4dCIsImRlcGVuZGVuY3lSZWxlYXNlTmFtZSIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNJbmNsdWRlc0RlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVnQkEsb0JBQW9CO2VBQXBCQTs7SUFpREFDLHlCQUF5QjtlQUF6QkE7O0lBTWhCLE9BR0U7ZUFIRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXZETyxTQUFTRCxxQkFBcUJFLFVBQVUsRUFBRUMsY0FBYyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRTtJQUNsRixJQUFNLEFBQUVDLG9CQUFzQkYsUUFBdEJFLG1CQUNGQyxPQUFPTCxXQUFXTSxPQUFPLElBQ3pCQyxjQUFjRixNQUNkRyxpQkFBaUJKLGlCQUFpQixDQUFDRyxZQUFZLElBQUksSUFBSTtJQUU3RCxJQUFJQyxtQkFBbUIsSUFBSSxFQUFFO1FBQzNCLElBQU1DLFFBQVEsS0FBSztRQUVuQk4sU0FBU007UUFFVDtJQUNGLENBQUM7SUFFRCxJQUFNLEFBQUVDLG1EQUFxRFIsUUFBckRRO0lBRVJBLGlEQUFpRFYsWUFBWUUsU0FBUyxTQUFDTyxPQUFPRCxnQkFBbUI7UUFDL0YsSUFBSUMsT0FBTztZQUNUTixTQUFTTTtZQUVUO1FBQ0YsQ0FBQztRQUVELElBQUlELG1CQUFtQixJQUFJLEVBQUU7WUFDM0IsSUFBTSxBQUFFRyxNQUFRVCxRQUFSUztZQUVSQSxJQUFJRixLQUFLLENBQUMsQUFBQyxRQUFtQixPQUFaRixhQUFZO1lBRTlCSCxpQkFBaUIsQ0FBQ0csWUFBWSxHQUFHQztZQUVqQ0wsU0FBU007WUFFVDtRQUNGLENBQUM7UUFFREcsZ0NBQWdDSixnQkFBZ0JQLGdCQUFnQkMsU0FBUyxTQUFDTyxPQUFVO1lBQ2xGLElBQUlBLE9BQU87Z0JBQ1ROLFNBQVNNO2dCQUVUO1lBQ0YsQ0FBQztZQUVETCxpQkFBaUIsQ0FBQ0csWUFBWSxHQUFHQztZQUVqQ0wsU0FBU007UUFDWDtJQUNGLEdBQUdQO0FBQ0w7QUFFTyxTQUFTSCwwQkFBMEJRLFdBQVcsRUFBRUgsaUJBQWlCLEVBQUU7SUFDeEUsSUFBTUksaUJBQWlCSixpQkFBaUIsQ0FBQ0csWUFBWTtJQUVyRE0seUJBQXlCTCxnQkFBZ0JKO0FBQzNDO0lBRUEsV0FBZTtJQUNiTixzQkFBQUE7SUFDQUMsMkJBQUFBO0FBQ0Y7QUFFQSxTQUFTYyx5QkFBeUJMLGNBQWMsRUFBRUosaUJBQWlCLEVBQUU7SUFDbkUsSUFBSUksbUJBQW1CLElBQUksRUFBRTtRQUMzQjtJQUNGLENBQUM7SUFFRCxJQUFNTSxjQUFjTixlQUFlTyxhQUFhO0lBRWhELElBQUlELGFBQWE7UUFDZjtJQUNGLENBQUM7SUFFRCxJQUFNRSxlQUFlUixlQUFlUyxlQUFlO0lBRW5ERCxhQUFhRSxpQkFBaUIsQ0FBQyxTQUFDbEIsWUFBZTtRQUM3QyxJQUFNSyxPQUFPTCxXQUFXTSxPQUFPLElBQ3pCQyxjQUFjRixNQUNkRyxtQkFBaUJKLGlCQUFpQixDQUFDRyxZQUFZO1FBRXJETSx5QkFBeUJMLGtCQUFnQko7SUFDM0M7SUFFQSxJQUFNZSw0QkFBNEJDLGtDQUFrQ1osZ0JBQWdCSjtJQUVwRkksZUFBZWEsVUFBVSxDQUFDRjtBQUM1QjtBQUVBLFNBQVNHLDRCQUE0QnRCLFVBQVUsRUFBRUMsY0FBYyxFQUFFTyxjQUFjLEVBQUU7SUFDL0UsSUFBTWUsaUJBQWlCdkIsV0FBV00sT0FBTyxJQUNuQ2tCLHVDQUF1Q3ZCLGVBQWV3QixRQUFRLENBQUNGLGlCQUMvREcseUJBQXlCRixzQ0FBdUMsR0FBRztJQUV6RSxJQUFJRSx3QkFBd0I7UUFDMUIsSUFBTUMscUJBQXFCQyxNQUFNM0IsaUJBQzNCNEIsa0JBQWtCLEFBQ2QsbUJBQUc1Qix1QkFEVztZQUVoQjBCO1NBQ0QsR0FDREcsd0JBQXdCRCxnQkFBZ0JFLElBQUksQ0FBRTtRQUVwRHZCLGVBQWVDLEtBQUssQ0FBQyxBQUFDLGtDQUF1RCxPQUF0QnFCLHVCQUFzQjtJQUMvRSxDQUFDO0lBRUQsT0FBT0o7QUFDVDtBQUVBLFNBQVNkLGdDQUFnQ0osY0FBYyxFQUFFUCxjQUFjLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFO0lBQzFGLElBQU1JLGNBQWNDLGVBQWV3QixjQUFjLElBQzNDaEIsZUFBZVIsZUFBZVMsZUFBZSxJQUM3Q2dCLE9BQU8sV0FBTTtRQUNYLElBQU14QixRQUFRLElBQUk7UUFFbEJOLFNBQVNNO0lBQ1g7SUFFTlIsaUJBQWlCLEFBQUUsbUJBQUdBLHVCQUFMO1FBQXFCTTtLQUFhLEdBQUcsR0FBRztJQUV6RFMsYUFBYWtCLDZCQUE2QixDQUFDLFNBQUNsQyxZQUFZbUMsTUFBTUYsTUFBUztRQUNyRSxJQUFNUCx5QkFBeUJKLDRCQUE0QnRCLFlBQVlDLGdCQUFnQk87UUFFdkYsSUFBSWtCLHdCQUF3QjtZQUMxQixJQUFNakIsUUFBUSxJQUFJO1lBRWxCTixTQUFTTTtZQUVUO1FBQ0YsQ0FBQztRQUVEWCxxQkFBcUJFLFlBQVlDLGdCQUFnQkMsU0FBUyxTQUFDTyxPQUFVO1lBQ25FLElBQUlBLE9BQU87Z0JBQ1ROLFNBQVNNO2dCQUVUO1lBQ0YsQ0FBQztZQUVEMEI7UUFDRjtJQUNGLEdBQUdGO0FBQ0w7QUFFQSxTQUFTYixrQ0FBa0NaLGNBQWMsRUFBRUosaUJBQWlCLEVBQWtDO1FBQWhDZSw0QkFBQUEsaUVBQTRCLEVBQUU7SUFDMUcsSUFBTUgsZUFBZVIsZUFBZVMsZUFBZTtJQUVuREQsYUFBYUUsaUJBQWlCLENBQUMsU0FBQ2xCLFlBQWU7UUFDN0MsSUFBTXVCLGlCQUFpQnZCLFdBQVdNLE9BQU8sSUFDbkM4Qix3QkFBd0JiLGdCQUN4QmMsMkJBQTJCakMsaUJBQWlCLENBQUNnQyxzQkFBc0I7UUFFekUsSUFBSUMsNkJBQTZCLElBQUksRUFBRTtZQUNyQztRQUNGLENBQUM7UUFFRCxJQUFNQyw0REFBNERuQiwwQkFBMEJNLFFBQVEsQ0FBQ1k7UUFFckcsSUFBSSxDQUFDQywyREFBMkQ7WUFDOUQsSUFBTTlCLG1CQUFpQjZCLDBCQUEyQixHQUFHO1lBRXJEakIsa0NBQWtDWixrQkFBZ0JKLG1CQUFtQmU7WUFFckVBLDBCQUEwQm9CLElBQUksQ0FBQ0Y7UUFDakMsQ0FBQztJQUNIO0lBRUEsT0FBT2xCO0FBQ1QifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "0.0.387",
4
+ "version": "0.0.389",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -14,7 +14,7 @@
14
14
  "necessary": "^11.1.11",
15
15
  "occam-custom-grammars": "^5.0.359",
16
16
  "occam-dom": "^3.0.171",
17
- "occam-file-system": "^5.0.79",
17
+ "occam-file-system": "^5.0.82",
18
18
  "occam-grammar-utilities": "^7.0.66"
19
19
  },
20
20
  "devDependencies": {
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
 
3
- export function createReleaseContext(releaseName, dependentNames, shortenedVersion, context, callback) {
3
+ export function createReleaseContext(dependency, dependentNames, context, callback) {
4
4
  const { releaseContextMap } = context,
5
+ name = dependency.getName(),
6
+ releaseName = name, ///
5
7
  releaseContext = releaseContextMap[releaseName] || null;
6
8
 
7
9
  if (releaseContext !== null) {
@@ -14,7 +16,7 @@ export function createReleaseContext(releaseName, dependentNames, shortenedVersi
14
16
 
15
17
  const { releaseContextFromReleaseNameAndShortenedVersion } = context;
16
18
 
17
- releaseContextFromReleaseNameAndShortenedVersion(releaseName, shortenedVersion, context, (error, releaseContext) => {
19
+ releaseContextFromReleaseNameAndShortenedVersion(dependency, context, (error, releaseContext) => {
18
20
  if (error) {
19
21
  callback(error);
20
22
 
@@ -84,13 +86,17 @@ function initialiseReleaseContext(releaseContext, releaseContextMap) {
84
86
  releaseContext.initialise(dependencyReleaseContexts);
85
87
  }
86
88
 
87
- function checkCyclicDependencyExists(releaseName, dependentNames, releaseContext) {
88
- const dependentNamesIncludesReleaseName = dependentNames.includes(releaseName),
89
- cyclicDependencyExists = dependentNamesIncludesReleaseName; ///
89
+ function checkCyclicDependencyExists(dependency, dependentNames, releaseContext) {
90
+ const dependencyName = dependency.getName(),
91
+ dependentNamesIncludesDependencyName = dependentNames.includes(dependencyName),
92
+ cyclicDependencyExists = dependentNamesIncludesDependencyName; ///
90
93
 
91
94
  if (cyclicDependencyExists) {
92
95
  const firstDependentName = first(dependentNames),
93
- dependencyNames = dependentNames.concat(firstDependentName),
96
+ dependencyNames = [ ///
97
+ ...dependentNames,
98
+ firstDependentName
99
+ ],
94
100
  dependencyNamesString = dependencyNames.join(`' -> '`);
95
101
 
96
102
  releaseContext.error(`There is a cyclic dependency: '${dependencyNamesString}'.`);
@@ -111,10 +117,7 @@ function createDependencyReleaseContexts(releaseContext, dependentNames, context
111
117
  dependentNames = [ ...dependentNames, releaseName ]; ///
112
118
 
113
119
  dependencies.asynchronousForEachDependency((dependency, next, done) => {
114
- const name = dependency.getName(),
115
- releaseName = name, //
116
- shortenedVersion = dependency.getShortedVersion(),
117
- cyclicDependencyExists = checkCyclicDependencyExists(releaseName, dependentNames, releaseContext);
120
+ const cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames, releaseContext);
118
121
 
119
122
  if (cyclicDependencyExists) {
120
123
  const error = null;
@@ -124,7 +127,7 @@ function createDependencyReleaseContexts(releaseContext, dependentNames, context
124
127
  return;
125
128
  }
126
129
 
127
- createReleaseContext(releaseName, dependentNames, shortenedVersion, context, (error) => {
130
+ createReleaseContext(dependency, dependentNames, context, (error) => {
128
131
  if (error) {
129
132
  callback(error);
130
133