occam-verify-cli 0.0.389 → 0.0.390

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.
@@ -4,22 +4,21 @@ const { Dependency } = require("occam-file-system"),
4
4
  { loggingUtilities } = require("necessary"),
5
5
  { verifyRelease, releaseContextUtilities } = require("../../lib/index");
6
6
 
7
- const { releaseContextFromReleaseNameAndShortenedVersion } = require("../utilities/fileSystem");
7
+ const { releaseContextFromDependencyAndDependentNames } = require("../utilities/fileSystem");
8
8
 
9
9
  const { log } = loggingUtilities,
10
10
  { setLogLevel } = log,
11
- { createReleaseContext, initialiseReleaseContexts } = releaseContextUtilities;
11
+ { createReleaseContext, initialiseReleaseContext } = releaseContextUtilities;
12
12
 
13
13
  function verifyAction(argument, logLevel) {
14
14
  const name = argument, ///
15
- releaseContextMap = {},
16
- shortenedVersion = null,
15
+ dependency = Dependency.fromName(name),
17
16
  dependentNames = [],
18
- dependency = Dependency.fromNameAndShortenedVersion(name, shortenedVersion),
17
+ releaseContextMap = {},
19
18
  context = {
20
19
  log,
21
20
  releaseContextMap,
22
- releaseContextFromReleaseNameAndShortenedVersion
21
+ releaseContextFromDependencyAndDependentNames
23
22
  };
24
23
 
25
24
  setLogLevel(logLevel);
@@ -31,11 +30,10 @@ function verifyAction(argument, logLevel) {
31
30
  return;
32
31
  }
33
32
 
34
- const releaseName = name; ///
35
-
36
- initialiseReleaseContexts(releaseName, releaseContextMap);
33
+ initialiseReleaseContext(dependency, context);
37
34
 
38
- const releaseVerified = verifyRelease(releaseName, releaseContextMap);
35
+ const releaseName = name, ///
36
+ releaseVerified = verifyRelease(releaseName, releaseContextMap);
39
37
 
40
38
  if (releaseVerified) {
41
39
  const releaseContext = releaseContextMap[releaseName];
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
2
 
3
- const { FileReleaseContext, DirectoryReleaseContext } = require("../../lib/index"), ///
4
- { fileSystemUtilities : necessaryFileSystemUtilities } = require("necessary"),
5
- { Entries, fileSystemUtilities : occamFileSystemUtilities } = require("occam-file-system");
3
+ const { FileReleaseContext, DirectoryReleaseContext } = require("../../lib/index"), ///
4
+ { Entries, fileSystemUtilities : occamFileSystemUtilities } = require("occam-file-system"),
5
+ { arrayUtilities, fileSystemUtilities : necessaryFileSystemUtilities } = require("necessary");
6
6
 
7
7
  const callbacks = require("../callbacks");
8
8
 
9
- const { loadRelease } = occamFileSystemUtilities,
9
+ const { last } = arrayUtilities,
10
+ { loadRelease } = occamFileSystemUtilities,
10
11
  { readFile, isEntryFile } = necessaryFileSystemUtilities;
11
12
 
12
- function releaseContextFromReleaseNameAndShortenedVersion(dependency, context, callback) {
13
+ function releaseContextFromDependencyAndDependentNames(dependency, dependentNames, context, callback) {
13
14
  const projectsDirectoryPath = process.cwd(), ///
14
15
  dependencyName = dependency.getName(),
15
16
  entryPath = `${projectsDirectoryPath}/${dependencyName}`,
@@ -28,7 +29,7 @@ function releaseContextFromReleaseNameAndShortenedVersion(dependency, context, c
28
29
  }
29
30
 
30
31
  if (releaseContext !== null) {
31
- const releaseMatchesShortedVersion = checkReleaseMatchesDependency(dependency, releaseContext, context);
32
+ const releaseMatchesShortedVersion = checkReleaseMatchesDependency(dependency, dependentNames, releaseContext, context);
32
33
 
33
34
  if (!releaseMatchesShortedVersion) {
34
35
  releaseContext = null;
@@ -41,22 +42,28 @@ function releaseContextFromReleaseNameAndShortenedVersion(dependency, context, c
41
42
  }
42
43
 
43
44
  module.exports = {
44
- releaseContextFromReleaseNameAndShortenedVersion
45
+ releaseContextFromDependencyAndDependentNames
45
46
  };
46
47
 
47
- function checkReleaseMatchesDependency(dependency, releaseContext, context) {
48
+ function checkReleaseMatchesDependency(dependency, dependentNames, releaseContext, context) {
49
+ let releaseMatchesShortedVersion = true;
50
+
48
51
  const entries = releaseContext.getEntries(),
49
- shortenedVersion = dependency.getShortedVersion(),
50
- releaseMatchesShortedVersion = entries.matchShortenedVersion(shortenedVersion);
52
+ shortenedVersion = dependency.getShortedVersion();
51
53
 
52
- if (!releaseMatchesShortedVersion) {
53
- const { log } = context,
54
- version = releaseContext.getVersion(),
55
- versionString = version.toString(),
56
- dependencyName = dependency.getName(),
57
- shortenedVersionString = shortenedVersion.toString();
54
+ if (shortenedVersion !== null) {
55
+ releaseMatchesShortedVersion = entries.matchShortenedVersion(shortenedVersion);
58
56
 
59
- log.error(`The '${dependencyName}' dependency's version of ${versionString} does not match the required shortened version of ${shortenedVersionString}.`);
57
+ if (!releaseMatchesShortedVersion) {
58
+ const { log } = context,
59
+ version = releaseContext.getVersion(),
60
+ versionString = version.toString(),
61
+ dependencyName = dependency.getName(),
62
+ lastDependentName = last(dependentNames),
63
+ shortenedVersionString = shortenedVersion.toString();
64
+
65
+ log.error(`Version mismatch: '${lastDependentName}' requires '${dependencyName}' to be version ${shortenedVersionString}.0 or higher but version ${versionString} has been supplied.`);
66
+ }
60
67
  }
61
68
 
62
69
  return releaseMatchesShortedVersion;
@@ -12,8 +12,8 @@ _export(exports, {
12
12
  createReleaseContext: function() {
13
13
  return createReleaseContext;
14
14
  },
15
- initialiseReleaseContexts: function() {
16
- return initialiseReleaseContexts;
15
+ initialiseReleaseContext: function() {
16
+ return initialiseReleaseContext;
17
17
  },
18
18
  default: function() {
19
19
  return _default;
@@ -45,44 +45,30 @@ function _unsupportedIterableToArray(o, minLen) {
45
45
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
46
46
  }
47
47
  function createReleaseContext(dependency, dependentNames, context, callback) {
48
- var releaseContextMap = context.releaseContextMap, name = dependency.getName(), releaseName = name, releaseContext = releaseContextMap[releaseName] || null;
48
+ var releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
49
49
  if (releaseContext !== null) {
50
- var error = false;
50
+ var error = null;
51
51
  callback(error);
52
52
  return;
53
53
  }
54
- var releaseContextFromReleaseNameAndShortenedVersion = context.releaseContextFromReleaseNameAndShortenedVersion;
55
- releaseContextFromReleaseNameAndShortenedVersion(dependency, context, function(error, releaseContext) {
54
+ var releaseContextFromDependencyAndDependentNames = context.releaseContextFromDependencyAndDependentNames;
55
+ releaseContextFromDependencyAndDependentNames(dependency, dependentNames, context, function(error, releaseContext) {
56
56
  if (error) {
57
57
  callback(error);
58
58
  return;
59
59
  }
60
+ releaseContextMap[releaseName] = releaseContext;
60
61
  if (releaseContext === null) {
61
62
  var log = context.log;
62
63
  log.error("The '".concat(releaseName, "' package could not be created."));
63
- releaseContextMap[releaseName] = releaseContext;
64
64
  callback(error);
65
65
  return;
66
66
  }
67
- createDependencyReleaseContexts(releaseContext, dependentNames, context, function(error) {
68
- if (error) {
69
- callback(error);
70
- return;
71
- }
72
- releaseContextMap[releaseName] = releaseContext;
73
- callback(error);
74
- });
67
+ createDependencyReleaseContexts(dependency, dependentNames, context, callback);
75
68
  }, context);
76
69
  }
77
- function initialiseReleaseContexts(releaseName, releaseContextMap) {
78
- var releaseContext = releaseContextMap[releaseName];
79
- initialiseReleaseContext(releaseContext, releaseContextMap);
80
- }
81
- var _default = {
82
- createReleaseContext: createReleaseContext,
83
- initialiseReleaseContexts: initialiseReleaseContexts
84
- };
85
- function initialiseReleaseContext(releaseContext, releaseContextMap) {
70
+ function initialiseReleaseContext(dependency, context) {
71
+ var releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
86
72
  if (releaseContext === null) {
87
73
  return;
88
74
  }
@@ -92,32 +78,35 @@ function initialiseReleaseContext(releaseContext, releaseContextMap) {
92
78
  }
93
79
  var dependencies = releaseContext.getDependencies();
94
80
  dependencies.forEachDependency(function(dependency) {
95
- var name = dependency.getName(), releaseName = name, _$releaseContext = releaseContextMap[releaseName];
96
- initialiseReleaseContext(_$releaseContext, releaseContextMap);
81
+ initialiseReleaseContext(dependency, context);
97
82
  });
98
- var dependencyReleaseContexts = retrieveDependencyReleaseContexts(releaseContext, releaseContextMap);
83
+ var dependencyReleaseContexts = retrieveDependencyReleaseContexts(dependency, context);
99
84
  releaseContext.initialise(dependencyReleaseContexts);
100
85
  }
101
- function checkCyclicDependencyExists(dependency, dependentNames, releaseContext) {
86
+ var _default = {
87
+ createReleaseContext: createReleaseContext,
88
+ initialiseReleaseContext: initialiseReleaseContext
89
+ };
90
+ function checkCyclicDependencyExists(dependency, dependentNames, context) {
102
91
  var dependencyName = dependency.getName(), dependentNamesIncludesDependencyName = dependentNames.includes(dependencyName), cyclicDependencyExists = dependentNamesIncludesDependencyName; ///
103
92
  if (cyclicDependencyExists) {
104
- var firstDependentName = first(dependentNames), dependencyNames = _toConsumableArray(dependentNames).concat([
93
+ var log = context.log, firstDependentName = first(dependentNames), dependencyNames = _toConsumableArray(dependentNames).concat([
105
94
  firstDependentName
106
95
  ]), dependencyNamesString = dependencyNames.join("' -> '");
107
- releaseContext.error("There is a cyclic dependency: '".concat(dependencyNamesString, "'."));
96
+ log.error("There is a cyclic dependency: '".concat(dependencyNamesString, "'."));
108
97
  }
109
98
  return cyclicDependencyExists;
110
99
  }
111
- function createDependencyReleaseContexts(releaseContext, dependentNames, context, callback) {
112
- var releaseName = releaseContext.getReleaseName(), dependencies = releaseContext.getDependencies(), done = function() {
100
+ function createDependencyReleaseContexts(dependency, dependentNames, context, callback) {
101
+ var releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName], dependencies = releaseContext.getDependencies(), done = function() {
113
102
  var error = null;
114
103
  callback(error);
115
104
  };
116
105
  dependentNames = _toConsumableArray(dependentNames).concat([
117
- releaseName
106
+ dependencyName
118
107
  ]); ///
119
108
  dependencies.asynchronousForEachDependency(function(dependency, next, done) {
120
- var cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames, releaseContext);
109
+ var cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames, context);
121
110
  if (cyclicDependencyExists) {
122
111
  var error = null;
123
112
  callback(error);
@@ -132,22 +121,22 @@ function createDependencyReleaseContexts(releaseContext, dependentNames, context
132
121
  });
133
122
  }, done);
134
123
  }
135
- function retrieveDependencyReleaseContexts(releaseContext, releaseContextMap) {
124
+ function retrieveDependencyReleaseContexts(dependency, context) {
136
125
  var dependencyReleaseContexts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
126
+ var releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
127
+ if (releaseContext === null) {
128
+ return;
129
+ }
130
+ var dependencyReleaseContextsIncludesReleaseContext = dependencyReleaseContexts.includes(releaseContext);
131
+ if (dependencyReleaseContextsIncludesReleaseContext) {
132
+ return;
133
+ }
137
134
  var dependencies = releaseContext.getDependencies();
138
135
  dependencies.forEachDependency(function(dependency) {
139
- var dependencyName = dependency.getName(), dependencyReleaseName = dependencyName, dependencyReleaseContext = releaseContextMap[dependencyReleaseName];
140
- if (dependencyReleaseContext === null) {
141
- return;
142
- }
143
- var dependencyReleaseContextsIncludesDependencyReleaseContext = dependencyReleaseContexts.includes(dependencyReleaseContext);
144
- if (!dependencyReleaseContextsIncludesDependencyReleaseContext) {
145
- var _$releaseContext = dependencyReleaseContext; ///
146
- retrieveDependencyReleaseContexts(_$releaseContext, releaseContextMap, dependencyReleaseContexts);
147
- dependencyReleaseContexts.push(dependencyReleaseContext);
148
- }
136
+ retrieveDependencyReleaseContexts(dependency, context, dependencyReleaseContexts);
149
137
  });
138
+ dependencyReleaseContexts.push(releaseContext);
150
139
  return dependencyReleaseContexts;
151
140
  }
152
141
 
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dE1hcCB9ID0gY29udGV4dCxcbiAgICAgICAgbmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IG5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVycm9yID0gZmFsc2U7XG5cbiAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0RnJvbVJlbGVhc2VOYW1lQW5kU2hvcnRlbmVkVmVyc2lvbiB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dEZyb21SZWxlYXNlTmFtZUFuZFNob3J0ZW5lZFZlcnNpb24oZGVwZW5kZW5jeSwgY29udGV4dCwgKGVycm9yLCByZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHJlbGVhc2VDb250ZXh0ID09PSBudWxsKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgICAgbG9nLmVycm9yKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvdWxkIG5vdCBiZSBjcmVhdGVkLmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gPSByZWxlYXNlQ29udGV4dDtcblxuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSA9IHJlbGVhc2VDb250ZXh0O1xuXG4gICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfSk7XG4gIH0sIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlTmFtZSwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHQsXG4gIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHNcbn07XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgaWYgKHJlbGVhc2VDb250ZXh0ID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgaW5pdGlhbGlzZWQgPSByZWxlYXNlQ29udGV4dC5pc0luaXRpYWxpc2VkKCk7XG5cbiAgaWYgKGluaXRpYWxpc2VkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgLy8vXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKTtcbiAgfSk7XG5cbiAgY29uc3QgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXApO1xuXG4gIHJlbGVhc2VDb250ZXh0LmluaXRpYWxpc2UoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgcmVsZWFzZUNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW50TmFtZXMuaW5jbHVkZXMoZGVwZW5kZW5jeU5hbWUpLFxuICAgICAgICBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lOyAgLy8vXG5cbiAgaWYgKGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICBjb25zdCBmaXJzdERlcGVuZGVudE5hbWUgPSBmaXJzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzID0gWyAgLy8vXG4gICAgICAgICAgICAgIC4uLmRlcGVuZGVudE5hbWVzLFxuICAgICAgICAgICAgZmlyc3REZXBlbmRlbnROYW1lXG4gICAgICAgICAgXSxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZXNTdHJpbmcgPSBkZXBlbmRlbmN5TmFtZXMuam9pbihgJyAtPiAnYCk7XG5cbiAgICByZWxlYXNlQ29udGV4dC5lcnJvcihgVGhlcmUgaXMgYSBjeWNsaWMgZGVwZW5kZW5jeTogJyR7ZGVwZW5kZW5jeU5hbWVzU3RyaW5nfScuYCk7XG4gIH1cblxuICByZXR1cm4gY3ljbGljRGVwZW5kZW5jeUV4aXN0cztcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHJlbGVhc2VOYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0UmVsZWFzZU5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCksXG4gICAgICAgIGRvbmUgPSAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBudWxsO1xuXG4gICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgICB9XG5cbiAgZGVwZW5kZW50TmFtZXMgPSBbIC4uLmRlcGVuZGVudE5hbWVzLCByZWxlYXNlTmFtZSBdOyAgLy8vXG5cbiAgZGVwZW5kZW5jaWVzLmFzeW5jaHJvbm91c0ZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeUV4aXN0cyA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgcmVsZWFzZUNvbnRleHQpO1xuXG4gICAgaWYgKGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbnVsbDtcblxuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgZG9uZSk7XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXAsIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMgPSBbXSkge1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHtcbiAgICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtkZXBlbmRlbmN5UmVsZWFzZU5hbWVdO1xuXG4gICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNJbmNsdWRlc0RlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCA9IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0KTtcblxuICAgIGlmICghZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0luY2x1ZGVzRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0KSB7XG4gICAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dDsgIC8vL1xuXG4gICAgICByZXRyaWV2ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwLCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKTtcblxuICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5wdXNoKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cztcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVSZWxlYXNlQ29udGV4dCIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHMiLCJkZXBlbmRlbmN5IiwiZGVwZW5kZW50TmFtZXMiLCJjb250ZXh0IiwiY2FsbGJhY2siLCJyZWxlYXNlQ29udGV4dE1hcCIsIm5hbWUiLCJnZXROYW1lIiwicmVsZWFzZU5hbWUiLCJyZWxlYXNlQ29udGV4dCIsImVycm9yIiwicmVsZWFzZUNvbnRleHRGcm9tUmVsZWFzZU5hbWVBbmRTaG9ydGVuZWRWZXJzaW9uIiwibG9nIiwiY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCIsImluaXRpYWxpc2VkIiwiaXNJbml0aWFsaXNlZCIsImRlcGVuZGVuY2llcyIsImdldERlcGVuZGVuY2llcyIsImZvckVhY2hEZXBlbmRlbmN5IiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2UiLCJjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMiLCJkZXBlbmRlbmN5TmFtZSIsImRlcGVuZGVudE5hbWVzSW5jbHVkZXNEZXBlbmRlbmN5TmFtZSIsImluY2x1ZGVzIiwiY3ljbGljRGVwZW5kZW5jeUV4aXN0cyIsImZpcnN0RGVwZW5kZW50TmFtZSIsImZpcnN0IiwiZGVwZW5kZW5jeU5hbWVzIiwiZGVwZW5kZW5jeU5hbWVzU3RyaW5nIiwiam9pbiIsImdldFJlbGVhc2VOYW1lIiwiZG9uZSIsImFzeW5jaHJvbm91c0ZvckVhY2hEZXBlbmRlbmN5IiwibmV4dCIsImRlcGVuZGVuY3lSZWxlYXNlTmFtZSIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNJbmNsdWRlc0RlcGVuZGVuY3lSZWxlYXNlQ29udGV4dCIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVnQkEsb0JBQW9CO2VBQXBCQTs7SUFpREFDLHlCQUF5QjtlQUF6QkE7O0lBTWhCLE9BR0U7ZUFIRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXZETyxTQUFTRCxxQkFBcUJFLFVBQVUsRUFBRUMsY0FBYyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRTtJQUNsRixJQUFNLEFBQUVDLG9CQUFzQkYsUUFBdEJFLG1CQUNGQyxPQUFPTCxXQUFXTSxPQUFPLElBQ3pCQyxjQUFjRixNQUNkRyxpQkFBaUJKLGlCQUFpQixDQUFDRyxZQUFZLElBQUksSUFBSTtJQUU3RCxJQUFJQyxtQkFBbUIsSUFBSSxFQUFFO1FBQzNCLElBQU1DLFFBQVEsS0FBSztRQUVuQk4sU0FBU007UUFFVDtJQUNGLENBQUM7SUFFRCxJQUFNLEFBQUVDLG1EQUFxRFIsUUFBckRRO0lBRVJBLGlEQUFpRFYsWUFBWUUsU0FBUyxTQUFDTyxPQUFPRCxnQkFBbUI7UUFDL0YsSUFBSUMsT0FBTztZQUNUTixTQUFTTTtZQUVUO1FBQ0YsQ0FBQztRQUVELElBQUlELG1CQUFtQixJQUFJLEVBQUU7WUFDM0IsSUFBTSxBQUFFRyxNQUFRVCxRQUFSUztZQUVSQSxJQUFJRixLQUFLLENBQUMsQUFBQyxRQUFtQixPQUFaRixhQUFZO1lBRTlCSCxpQkFBaUIsQ0FBQ0csWUFBWSxHQUFHQztZQUVqQ0wsU0FBU007WUFFVDtRQUNGLENB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
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dE1hcCB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdIHx8IG51bGw7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgY29uc3QgZXJyb3IgPSBudWxsO1xuXG4gICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5QW5kRGVwZW5kZW50TmFtZXMgfSA9IGNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeUFuZERlcGVuZGVudE5hbWVzKGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0LCAoZXJyb3IsIHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gPSByZWxlYXNlQ29udGV4dDtcblxuICAgIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQ7XG5cbiAgICAgIGxvZy5lcnJvcihgVGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb3VsZCBub3QgYmUgY3JlYXRlZC5gKTtcblxuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spO1xuICB9LCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGluaXRpYWxpc2VkID0gcmVsZWFzZUNvbnRleHQuaXNJbml0aWFsaXNlZCgpO1xuXG4gIGlmIChpbml0aWFsaXNlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpO1xuXG4gIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KTtcbiAgfSk7XG5cbiAgY29uc3QgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCBjb250ZXh0KTtcblxuICByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNyZWF0ZVJlbGVhc2VDb250ZXh0LFxuICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRcbn07XG5cbmZ1bmN0aW9uIGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBkZXBlbmRlbnROYW1lc0luY2x1ZGVzRGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbnROYW1lcy5pbmNsdWRlcyhkZXBlbmRlbmN5TmFtZSksXG4gICAgICAgIGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMgPSBkZXBlbmRlbnROYW1lc0luY2x1ZGVzRGVwZW5kZW5jeU5hbWU7ICAvLy9cblxuICBpZiAoY3ljbGljRGVwZW5kZW5jeUV4aXN0cykge1xuICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgIGZpcnN0RGVwZW5kZW50TmFtZSA9IGZpcnN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZXMgPSBbICAvLy9cbiAgICAgICAgICAgICAgLi4uZGVwZW5kZW50TmFtZXMsXG4gICAgICAgICAgICBmaXJzdERlcGVuZGVudE5hbWVcbiAgICAgICAgICBdLFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lc1N0cmluZyA9IGRlcGVuZGVuY3lOYW1lcy5qb2luKGAnIC0+ICdgKTtcblxuICAgIGxvZy5lcnJvcihgVGhlcmUgaXMgYSBjeWNsaWMgZGVwZW5kZW5jeTogJyR7ZGVwZW5kZW5jeU5hbWVzU3RyaW5nfScuYCk7XG4gIH1cblxuICByZXR1cm4gY3ljbGljRGVwZW5kZW5jeUV4aXN0cztcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dE1hcCB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZG9uZSA9ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IG51bGw7XG5cbiAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIH1cblxuICBkZXBlbmRlbnROYW1lcyA9IFsgLi4uZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVuY3lOYW1lIF07ICAvLy9cblxuICBkZXBlbmRlbmNpZXMuYXN5bmNocm9ub3VzRm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3ksIG5leHQsIGRvbmUpID0+IHtcbiAgICBjb25zdCBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzKGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmIChjeWNsaWNEZXBlbmRlbmN5RXhpc3RzKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGw7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0LCAoZXJyb3IpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sIGRvbmUpO1xufVxuXG5mdW5jdGlvbiByZXRyaWV2ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgY29udGV4dCwgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyA9IFtdKSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCk7XG5cbiAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7XG4gICAgcmV0cmlldmVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQsIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMpO1xuICB9KTtcblxuICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzLnB1c2gocmVsZWFzZUNvbnRleHQpO1xuXG4gIHJldHVybiBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0IiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0IiwiZGVwZW5kZW5jeSIsImRlcGVuZGVudE5hbWVzIiwiY29udGV4dCIsImNhbGxiYWNrIiwicmVsZWFzZUNvbnRleHRNYXAiLCJkZXBlbmRlbmN5TmFtZSIsImdldE5hbWUiLCJyZWxlYXNlTmFtZSIsInJlbGVhc2VDb250ZXh0IiwiZXJyb3IiLCJyZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5QW5kRGVwZW5kZW50TmFtZXMiLCJsb2ciLCJjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwiaW5pdGlhbGlzZWQiLCJpc0luaXRpYWxpc2VkIiwiZGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwicmV0cmlldmVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwiaW5pdGlhbGlzZSIsImNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyIsImRlcGVuZGVudE5hbWVzSW5jbHVkZXNEZXBlbmRlbmN5TmFtZSIsImluY2x1ZGVzIiwiY3ljbGljRGVwZW5kZW5jeUV4aXN0cyIsImZpcnN0RGVwZW5kZW50TmFtZSIsImZpcnN0IiwiZGVwZW5kZW5jeU5hbWVzIiwiZGVwZW5kZW5jeU5hbWVzU3RyaW5nIiwiam9pbiIsImRvbmUiLCJhc3luY2hyb25vdXNGb3JFYWNoRGVwZW5kZW5jeSIsIm5leHQiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVnQkEsb0JBQW9CO2VBQXBCQTs7SUF1Q0FDLHdCQUF3QjtlQUF4QkE7O0lBMkJoQixPQUdFO2VBSEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFsRU8sU0FBU0QscUJBQXFCRSxVQUFVLEVBQUVDLGNBQWMsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVB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
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.389",
4
+ "version": "0.0.390",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -2,65 +2,49 @@
2
2
 
3
3
  export function createReleaseContext(dependency, dependentNames, context, callback) {
4
4
  const { releaseContextMap } = context,
5
- name = dependency.getName(),
6
- releaseName = name, ///
5
+ dependencyName = dependency.getName(),
6
+ releaseName = dependencyName, ///
7
7
  releaseContext = releaseContextMap[releaseName] || null;
8
8
 
9
9
  if (releaseContext !== null) {
10
- const error = false;
10
+ const error = null;
11
11
 
12
12
  callback(error);
13
13
 
14
14
  return;
15
15
  }
16
16
 
17
- const { releaseContextFromReleaseNameAndShortenedVersion } = context;
17
+ const { releaseContextFromDependencyAndDependentNames } = context;
18
18
 
19
- releaseContextFromReleaseNameAndShortenedVersion(dependency, context, (error, releaseContext) => {
19
+ releaseContextFromDependencyAndDependentNames(dependency, dependentNames, context, (error, releaseContext) => {
20
20
  if (error) {
21
21
  callback(error);
22
22
 
23
23
  return;
24
24
  }
25
25
 
26
+ releaseContextMap[releaseName] = releaseContext;
27
+
26
28
  if (releaseContext === null) {
27
29
  const { log } = context;
28
30
 
29
31
  log.error(`The '${releaseName}' package could not be created.`);
30
32
 
31
- releaseContextMap[releaseName] = releaseContext;
32
-
33
33
  callback(error);
34
34
 
35
35
  return;
36
36
  }
37
37
 
38
- createDependencyReleaseContexts(releaseContext, dependentNames, context, (error) => {
39
- if (error) {
40
- callback(error);
41
-
42
- return;
43
- }
44
-
45
- releaseContextMap[releaseName] = releaseContext;
46
-
47
- callback(error);
48
- });
38
+ createDependencyReleaseContexts(dependency, dependentNames, context, callback);
49
39
  }, context);
50
40
  }
51
41
 
52
- export function initialiseReleaseContexts(releaseName, releaseContextMap) {
53
- const releaseContext = releaseContextMap[releaseName];
54
-
55
- initialiseReleaseContext(releaseContext, releaseContextMap);
56
- }
57
-
58
- export default {
59
- createReleaseContext,
60
- initialiseReleaseContexts
61
- };
42
+ export function initialiseReleaseContext(dependency, context) {
43
+ const { releaseContextMap } = context,
44
+ dependencyName = dependency.getName(),
45
+ releaseName = dependencyName, ///
46
+ releaseContext = releaseContextMap[releaseName] || null;
62
47
 
63
- function initialiseReleaseContext(releaseContext, releaseContextMap) {
64
48
  if (releaseContext === null) {
65
49
  return;
66
50
  }
@@ -74,39 +58,44 @@ function initialiseReleaseContext(releaseContext, releaseContextMap) {
74
58
  const dependencies = releaseContext.getDependencies();
75
59
 
76
60
  dependencies.forEachDependency((dependency) => {
77
- const name = dependency.getName(),
78
- releaseName = name, ///
79
- releaseContext = releaseContextMap[releaseName];
80
-
81
- initialiseReleaseContext(releaseContext, releaseContextMap);
61
+ initialiseReleaseContext(dependency, context);
82
62
  });
83
63
 
84
- const dependencyReleaseContexts = retrieveDependencyReleaseContexts(releaseContext, releaseContextMap);
64
+ const dependencyReleaseContexts = retrieveDependencyReleaseContexts(dependency, context);
85
65
 
86
66
  releaseContext.initialise(dependencyReleaseContexts);
87
67
  }
88
68
 
89
- function checkCyclicDependencyExists(dependency, dependentNames, releaseContext) {
69
+ export default {
70
+ createReleaseContext,
71
+ initialiseReleaseContext
72
+ };
73
+
74
+ function checkCyclicDependencyExists(dependency, dependentNames, context) {
90
75
  const dependencyName = dependency.getName(),
91
76
  dependentNamesIncludesDependencyName = dependentNames.includes(dependencyName),
92
77
  cyclicDependencyExists = dependentNamesIncludesDependencyName; ///
93
78
 
94
79
  if (cyclicDependencyExists) {
95
- const firstDependentName = first(dependentNames),
80
+ const { log } = context,
81
+ firstDependentName = first(dependentNames),
96
82
  dependencyNames = [ ///
97
83
  ...dependentNames,
98
84
  firstDependentName
99
85
  ],
100
86
  dependencyNamesString = dependencyNames.join(`' -> '`);
101
87
 
102
- releaseContext.error(`There is a cyclic dependency: '${dependencyNamesString}'.`);
88
+ log.error(`There is a cyclic dependency: '${dependencyNamesString}'.`);
103
89
  }
104
90
 
105
91
  return cyclicDependencyExists;
106
92
  }
107
93
 
108
- function createDependencyReleaseContexts(releaseContext, dependentNames, context, callback) {
109
- const releaseName = releaseContext.getReleaseName(),
94
+ function createDependencyReleaseContexts(dependency, dependentNames, context, callback) {
95
+ const { releaseContextMap } = context,
96
+ dependencyName = dependency.getName(),
97
+ releaseName = dependencyName, ///
98
+ releaseContext = releaseContextMap[releaseName],
110
99
  dependencies = releaseContext.getDependencies(),
111
100
  done = () => {
112
101
  const error = null;
@@ -114,10 +103,10 @@ function createDependencyReleaseContexts(releaseContext, dependentNames, context
114
103
  callback(error);
115
104
  }
116
105
 
117
- dependentNames = [ ...dependentNames, releaseName ]; ///
106
+ dependentNames = [ ...dependentNames, dependencyName ]; ///
118
107
 
119
108
  dependencies.asynchronousForEachDependency((dependency, next, done) => {
120
- const cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames, releaseContext);
109
+ const cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames, context);
121
110
 
122
111
  if (cyclicDependencyExists) {
123
112
  const error = null;
@@ -139,28 +128,29 @@ function createDependencyReleaseContexts(releaseContext, dependentNames, context
139
128
  }, done);
140
129
  }
141
130
 
142
- function retrieveDependencyReleaseContexts(releaseContext, releaseContextMap, dependencyReleaseContexts = []) {
143
- const dependencies = releaseContext.getDependencies();
144
-
145
- dependencies.forEachDependency((dependency) => {
146
- const dependencyName = dependency.getName(),
147
- dependencyReleaseName = dependencyName, ///
148
- dependencyReleaseContext = releaseContextMap[dependencyReleaseName];
131
+ function retrieveDependencyReleaseContexts(dependency, context, dependencyReleaseContexts = []) {
132
+ const { releaseContextMap } = context,
133
+ dependencyName = dependency.getName(),
134
+ releaseName = dependencyName, ///
135
+ releaseContext = releaseContextMap[releaseName] || null;
149
136
 
150
- if (dependencyReleaseContext === null) {
151
- return;
152
- }
137
+ if (releaseContext === null) {
138
+ return;
139
+ }
153
140
 
154
- const dependencyReleaseContextsIncludesDependencyReleaseContext = dependencyReleaseContexts.includes(dependencyReleaseContext);
141
+ const dependencyReleaseContextsIncludesReleaseContext = dependencyReleaseContexts.includes(releaseContext);
155
142
 
156
- if (!dependencyReleaseContextsIncludesDependencyReleaseContext) {
157
- const releaseContext = dependencyReleaseContext; ///
143
+ if (dependencyReleaseContextsIncludesReleaseContext) {
144
+ return;
145
+ }
158
146
 
159
- retrieveDependencyReleaseContexts(releaseContext, releaseContextMap, dependencyReleaseContexts);
147
+ const dependencies = releaseContext.getDependencies();
160
148
 
161
- dependencyReleaseContexts.push(dependencyReleaseContext);
162
- }
149
+ dependencies.forEachDependency((dependency) => {
150
+ retrieveDependencyReleaseContexts(dependency, context, dependencyReleaseContexts);
163
151
  });
164
152
 
153
+ dependencyReleaseContexts.push(releaseContext);
154
+
165
155
  return dependencyReleaseContexts;
166
156
  }