occam-verify-cli 0.0.993 → 0.0.996

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,11 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  const { Dependency } = require("occam-entities"),
4
- { verifyRelease, createReleaseContext, initialiseReleaseContext } = require("../../lib/index"); ///
4
+ { verifyRelease, releaseContextUtilities } = require("../../lib/index"); ///
5
5
 
6
6
  const { trimTrailingSlash } = require("../utilities/string"),
7
7
  { releaseContextFromDependency } = require("../utilities/releaseContext");
8
8
 
9
+ const { createReleaseContext, initialiseReleaseContext } = releaseContextUtilities;
10
+
9
11
  function verifyAction(argument, verbose, log) {
10
12
  const name = trimTrailingSlash(argument), ///
11
13
  context = {},
@@ -22,7 +24,7 @@ function verifyAction(argument, verbose, log) {
22
24
 
23
25
  let now = startClock();
24
26
 
25
- createReleaseContext(dependency, dependentNames, context, (error) => {
27
+ createReleaseContext(dependency, dependentNames, context, (error, success) => {
26
28
  if (error) {
27
29
  log.error(error);
28
30
 
@@ -31,10 +33,7 @@ function verifyAction(argument, verbose, log) {
31
33
  return;
32
34
  }
33
35
 
34
- const releaseName = name, ///
35
- releaseContext = releaseContextMap[releaseName] || null;
36
-
37
- if (releaseContext === null) {
36
+ if (!success) {
38
37
  log.warning(`The '${name}' project or package context cannot be created.`);
39
38
 
40
39
  stopClock(now, log);
@@ -42,7 +41,9 @@ function verifyAction(argument, verbose, log) {
42
41
  return;
43
42
  }
44
43
 
45
- const releaseContextInitialised = initialiseReleaseContext(dependency, context);
44
+ const releaseName = name, ///
45
+ releaseContext = releaseContextMap[releaseName],
46
+ releaseContextInitialised = initialiseReleaseContext(dependency, context);
46
47
 
47
48
  if (!releaseContextInitialised) {
48
49
  log.warning(`The '${name}' project or package context cannot be initialised.`);
package/lib/index.js CHANGED
@@ -15,14 +15,11 @@ _export(exports, {
15
15
  ReleaseContext: function() {
16
16
  return _release1.default;
17
17
  },
18
- createReleaseContext: function() {
19
- return _create.default;
20
- },
21
18
  customGrammarUtilities: function() {
22
19
  return _customGrammar.default;
23
20
  },
24
- initialiseReleaseContext: function() {
25
- return _initialise.default;
21
+ releaseContextUtilities: function() {
22
+ return _releaseContext.default;
26
23
  },
27
24
  verifyRelease: function() {
28
25
  return _release.default;
@@ -31,13 +28,12 @@ _export(exports, {
31
28
  var _log = /*#__PURE__*/ _interop_require_default(require("./log"));
32
29
  var _release = /*#__PURE__*/ _interop_require_default(require("./verify/release"));
33
30
  var _release1 = /*#__PURE__*/ _interop_require_default(require("./context/release"));
34
- var _create = /*#__PURE__*/ _interop_require_default(require("./releaseContext/create"));
35
31
  var _customGrammar = /*#__PURE__*/ _interop_require_default(require("./utilities/customGrammar"));
36
- var _initialise = /*#__PURE__*/ _interop_require_default(require("./releaseContext/initialise"));
32
+ var _releaseContext = /*#__PURE__*/ _interop_require_default(require("./utilities/releaseContext"));
37
33
  function _interop_require_default(obj) {
38
34
  return obj && obj.__esModule ? obj : {
39
35
  default: obj
40
36
  };
41
37
  }
42
38
 
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZ5UmVsZWFzZSB9IGZyb20gXCIuL3ZlcmlmeS9yZWxlYXNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJlbGVhc2VDb250ZXh0IH0gZnJvbSBcIi4vY29udGV4dC9yZWxlYXNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZVJlbGVhc2VDb250ZXh0IH0gZnJvbSBcIi4vcmVsZWFzZUNvbnRleHQvY3JlYXRlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGN1c3RvbUdyYW1tYXJVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvY3VzdG9tR3JhbW1hclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9yZWxlYXNlQ29udGV4dC9pbml0aWFsaXNlXCI7XG5cbiJdLCJuYW1lcyI6WyJMb2ciLCJSZWxlYXNlQ29udGV4dCIsImNyZWF0ZVJlbGVhc2VDb250ZXh0IiwiY3VzdG9tR3JhbW1hclV0aWxpdGllcyIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCIsInZlcmlmeVJlbGVhc2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVvQkEsR0FBRztlQUFIQSxZQUFHOztJQUVIQyxjQUFjO2VBQWRBLGlCQUFjOztJQUNkQyxvQkFBb0I7ZUFBcEJBLGVBQW9COztJQUNwQkMsc0JBQXNCO2VBQXRCQSxzQkFBc0I7O0lBQ3RCQyx3QkFBd0I7ZUFBeEJBLG1CQUF3Qjs7SUFKeEJDLGFBQWE7ZUFBYkEsZ0JBQWE7OzswREFERjs4REFDVTsrREFDQzs2REFDTTtvRUFDRTtpRUFDRSJ9
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZ5UmVsZWFzZSB9IGZyb20gXCIuL3ZlcmlmeS9yZWxlYXNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJlbGVhc2VDb250ZXh0IH0gZnJvbSBcIi4vY29udGV4dC9yZWxlYXNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGN1c3RvbUdyYW1tYXJVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvY3VzdG9tR3JhbW1hclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWxlYXNlQ29udGV4dFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9yZWxlYXNlQ29udGV4dFwiO1xuXG4iXSwibmFtZXMiOlsiTG9nIiwiUmVsZWFzZUNvbnRleHQiLCJjdXN0b21HcmFtbWFyVXRpbGl0aWVzIiwicmVsZWFzZUNvbnRleHRVdGlsaXRpZXMiLCJ2ZXJpZnlSZWxlYXNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFb0JBLEdBQUc7ZUFBSEEsWUFBRzs7SUFFSEMsY0FBYztlQUFkQSxpQkFBYzs7SUFDZEMsc0JBQXNCO2VBQXRCQSxzQkFBc0I7O0lBQ3RCQyx1QkFBdUI7ZUFBdkJBLHVCQUF1Qjs7SUFIdkJDLGFBQWE7ZUFBYkEsZ0JBQWE7OzswREFERjs4REFDVTsrREFDQztvRUFDUTtxRUFDQyJ9
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ createReleaseContext: function() {
13
+ return createReleaseContext;
14
+ },
15
+ default: function() {
16
+ return _default;
17
+ },
18
+ initialiseReleaseContext: function() {
19
+ return initialiseReleaseContext;
20
+ }
21
+ });
22
+ var _array = require("../utilities/array");
23
+ function _array_like_to_array(arr, len) {
24
+ if (len == null || len > arr.length) len = arr.length;
25
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
26
+ return arr2;
27
+ }
28
+ function _array_without_holes(arr) {
29
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
30
+ }
31
+ function _iterable_to_array(iter) {
32
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
33
+ }
34
+ function _non_iterable_spread() {
35
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
36
+ }
37
+ function _to_consumable_array(arr) {
38
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
39
+ }
40
+ function _unsupported_iterable_to_array(o, minLen) {
41
+ if (!o) return;
42
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
43
+ var n = Object.prototype.toString.call(o).slice(8, -1);
44
+ if (n === "Object" && o.constructor) n = o.constructor.name;
45
+ if (n === "Map" || n === "Set") return Array.from(n);
46
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
47
+ }
48
+ function createReleaseContext(dependency, dependentNames, context, callback) {
49
+ var log = context.log, releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
50
+ if (releaseContext !== null) {
51
+ var error = null, success = true;
52
+ log.debug("Already created the '".concat(releaseName, "' context."));
53
+ callback(error, success);
54
+ return;
55
+ }
56
+ var releaseContextFromDependency = context.releaseContextFromDependency, dependencyString = dependency.asString();
57
+ log.debug("Creating the '".concat(releaseName, "' context given the '").concat(dependencyString, "' dependency..."));
58
+ releaseContextFromDependency(dependency, context, function(error, releaseContext) {
59
+ if (error) {
60
+ callback(error);
61
+ return;
62
+ }
63
+ var releaseContextCreated = checkReleaseContextCreated(releaseContext, dependency, context);
64
+ if (!releaseContextCreated) {
65
+ var _$error = null, success = false;
66
+ callback(_$error, success);
67
+ return;
68
+ }
69
+ var releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
70
+ if (!releaseMatchesDependency) {
71
+ var _$error1 = null, success1 = false;
72
+ callback(_$error1, success1);
73
+ return;
74
+ }
75
+ createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context, function(error, success) {
76
+ if (error) {
77
+ callback(error);
78
+ return;
79
+ }
80
+ if (!success) {
81
+ log.warning("...unable to create the '".concat(releaseName, "' context."));
82
+ callback(error, success);
83
+ return;
84
+ }
85
+ releaseContextMap[releaseName] = releaseContext;
86
+ log.info("...created the '".concat(releaseName, "' context."));
87
+ callback(error, success);
88
+ });
89
+ }, context);
90
+ }
91
+ function initialiseReleaseContext(dependency, context) {
92
+ var releaseContextInitialised = false;
93
+ var releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
94
+ if (releaseContext === null) {
95
+ var log = context.log;
96
+ log.warning("Unable to initialise the '".concat(dependencyName, "' context because it has not been created."));
97
+ } else {
98
+ releaseContextInitialised = releaseContext.isInitialised();
99
+ if (!releaseContextInitialised) {
100
+ var dependencyReleaseContextsInitialised = initialiseDependencyReleaseContexts(dependency, releaseContext, context);
101
+ if (dependencyReleaseContextsInitialised) {
102
+ var log1 = context.log, verbose = context.verbose, releaseContexts = retrieveReleaseContexts(releaseContext, releaseContextMap);
103
+ log1.debug("Initialising the '".concat(dependencyName, "' context..."));
104
+ releaseContextInitialised = releaseContext.initialise(releaseContexts, verbose);
105
+ releaseContextInitialised ? log1.info("...initialised the '".concat(dependencyName, "' context.")) : log1.warning("...unable to initialise the '".concat(dependencyName, "' context."));
106
+ }
107
+ }
108
+ }
109
+ return releaseContextInitialised;
110
+ }
111
+ var _default = {
112
+ createReleaseContext: createReleaseContext,
113
+ initialiseReleaseContext: initialiseReleaseContext
114
+ };
115
+ function retrieveReleaseContexts(releaseContext, releaseContextMap) {
116
+ var releaseContexts = [], remainingReleaseContext = releaseContext, remainingReleaseContexts = [
117
+ remainingReleaseContext
118
+ ];
119
+ var remainingReleaseContextsLength = remainingReleaseContexts.length;
120
+ while(remainingReleaseContextsLength > 0){
121
+ var remainingReleaseContext1 = remainingReleaseContexts.shift(), _$releaseContext = remainingReleaseContext1; ///
122
+ releaseContexts.push(_$releaseContext);
123
+ var dependencies = _$releaseContext.getDependencies();
124
+ dependencies.forEachDependency(function(dependency) {
125
+ var dependencyName = dependency.getName(), releaseName = dependencyName, _$releaseContext = releaseContextMap[releaseName], releaseContextsIncludesReleaseContext = releaseContexts.includes(_$releaseContext), remainingReleaseContextsIncludesReleaseContext = remainingReleaseContexts.includes(_$releaseContext);
126
+ if (!releaseContextsIncludesReleaseContext && !remainingReleaseContextsIncludesReleaseContext) {
127
+ var remainingReleaseContext = _$releaseContext; ///
128
+ remainingReleaseContexts.push(remainingReleaseContext);
129
+ }
130
+ });
131
+ remainingReleaseContextsLength = remainingReleaseContexts.length;
132
+ }
133
+ return releaseContexts;
134
+ }
135
+ function checkReleaseContextCreated(releaseContext, dependency, context) {
136
+ var releaseContextCreated = releaseContext !== null;
137
+ if (!releaseContextCreated) {
138
+ var log = context.log, dependencyName = dependency.getName(), releaseName = dependencyName; ///
139
+ log.warning("The '".concat(releaseName, "' context could not be created. Perhaps the 'meta.json' file is missing or invalid. Or there could be a dependency mismatch."));
140
+ }
141
+ return releaseContextCreated;
142
+ }
143
+ function checkCyclicDependencyExists(dependency, dependentNames, context) {
144
+ var dependencyName = dependency.getName(), dependentNamesIncludesDependencyName = dependentNames.includes(dependencyName), cyclicDependencyExists = dependentNamesIncludesDependencyName; ///
145
+ if (cyclicDependencyExists) {
146
+ var log = context.log, firstDependentName = first(dependentNames), dependencyNames = _to_consumable_array(dependentNames).concat([
147
+ firstDependentName
148
+ ]), dependencyNamesString = dependencyNames.join("' -> '");
149
+ log.warning("There is a cyclic dependency: '".concat(dependencyNamesString, "'."));
150
+ }
151
+ return cyclicDependencyExists;
152
+ }
153
+ function checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context) {
154
+ var releaseMatchesDependency = true;
155
+ var entries = releaseContext.getEntries(), shortenedVersion = dependency.getShortedVersion();
156
+ if (shortenedVersion !== null) {
157
+ var entriesMatchShortenedVersion = entries.matchShortenedVersion(shortenedVersion);
158
+ if (!entriesMatchShortenedVersion) {
159
+ var log = context.log, version = releaseContext.getVersion(), lastDependentName = (0, _array.last)(dependentNames), dependentName = lastDependentName, versionString = version.toString(), dependencyString = dependency.asString();
160
+ log.warning("Version mismatch: The '".concat(dependentName, "' dependent requires the '").concat(dependencyString, "' dependency but a context with version '").concat(versionString, "' was provided."));
161
+ releaseMatchesDependency = false;
162
+ }
163
+ }
164
+ return releaseMatchesDependency;
165
+ }
166
+ function createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context, callback) {
167
+ var dependencyName = dependency.getName(), dependencies = releaseContext.getDependencies();
168
+ dependentNames = _to_consumable_array(dependentNames).concat([
169
+ dependencyName
170
+ ]); ///
171
+ dependencies.asynchronousForEachDependency(function(dependency, next, done) {
172
+ var cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames);
173
+ if (cyclicDependencyExists) {
174
+ var error = null, success = false;
175
+ callback(error, success);
176
+ callback = null;
177
+ done();
178
+ return;
179
+ }
180
+ createReleaseContext(dependency, dependentNames, context, function(error, success) {
181
+ if (error) {
182
+ callback(error);
183
+ callback = null;
184
+ done();
185
+ return;
186
+ }
187
+ if (!success) {
188
+ callback(error, success);
189
+ callback = null;
190
+ done();
191
+ return;
192
+ }
193
+ next();
194
+ });
195
+ }, function() {
196
+ if (callback !== null) {
197
+ var error = null, success = true;
198
+ callback(error, success);
199
+ }
200
+ });
201
+ }
202
+ function initialiseDependencyReleaseContexts(dependency, releaseContext, context) {
203
+ var dependencies = releaseContext.getDependencies(), dependencyReleaseContextsInitialised = dependencies.everyDependency(function(dependency) {
204
+ var releaseContextInitialised = initialiseReleaseContext(dependency, context);
205
+ if (releaseContextInitialised) {
206
+ return true;
207
+ }
208
+ });
209
+ return dependencyReleaseContextsInitialised;
210
+ }
211
+
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxhc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgeyBsb2csIHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgIT09IG51bGwpIHtcbiAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG5cbiAgICBsb2cuZGVidWcoYEFscmVhZHkgY3JlYXRlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0LmApO1xuXG4gICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpO1xuXG4gIGxvZy5kZWJ1ZyhgQ3JlYXRpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dCBnaXZlbiB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kuLi5gKTtcblxuICByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQsIChlcnJvciwgcmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IGNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBjb250ZXh0KTtcblxuICAgIGlmICghcmVsZWFzZUNvbnRleHRDcmVhdGVkKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICBpZiAoIXJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICBjYWxsYmFjayhlcnJvciwgc3VjY2Vzcyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgKGVycm9yLCBzdWNjZXNzKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGxvZy53YXJuaW5nKGAuLi51bmFibGUgdG8gY3JlYXRlIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQuYCk7XG5cbiAgICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdID0gcmVsZWFzZUNvbnRleHQ7XG5cbiAgICAgIGxvZy5pbmZvKGAuLi5jcmVhdGVkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQuYCk7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcbiAgICB9KTtcbiAgfSwgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0O1xuXG4gICAgbG9nLndhcm5pbmcoYFVuYWJsZSB0byBpbml0aWFsaXNlIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIGNvbnRleHQgYmVjYXVzZSBpdCBoYXMgbm90IGJlZW4gY3JlYXRlZC5gKTtcbiAgfSBlbHNlIHtcbiAgICByZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkID0gcmVsZWFzZUNvbnRleHQuaXNJbml0aWFsaXNlZCgpO1xuXG4gICAgaWYgKCFyZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkKSB7XG4gICAgICBjb25zdCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzSW5pdGlhbGlzZWQgPSBpbml0aWFsaXNlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCByZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG5cbiAgICAgIGlmIChkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzSW5pdGlhbGlzZWQpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIHZlcmJvc2UgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgICAgbG9nLmRlYnVnKGBJbml0aWFsaXNpbmcgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJlbGVhc2VDb250ZXh0SW5pdGlhbGlzZWQgPSByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgdmVyYm9zZSk7XG5cbiAgICAgICAgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA/XG4gICAgICAgICAgbG9nLmluZm8oYC4uLmluaXRpYWxpc2VkIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIGNvbnRleHQuYCkgOlxuICAgICAgICAgICAgbG9nLndhcm5pbmcoYC4uLnVuYWJsZSB0byBpbml0aWFsaXNlIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIGNvbnRleHQuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0SW5pdGlhbGlzZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHQsXG4gIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dFxufTtcblxuZnVuY3Rpb24gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0cyA9IFtdLFxuICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0LCAgLy8vXG4gICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cyA9IFtcbiAgICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dFxuICAgICAgICBdO1xuXG4gIGxldCByZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMubGVuZ3RoO1xuXG4gIHdoaWxlIChyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPiAwKSB7XG4gICAgY29uc3QgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMuc2hpZnQoKSxcbiAgICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0OyAgLy8vXG5cbiAgICByZWxlYXNlQ29udGV4dHMucHVzaChyZWxlYXNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICAgIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0sXG4gICAgICAgICAgICByZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KSxcbiAgICAgICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMocmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICBpZiAoIXJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgJiYgIXJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLnB1c2gocmVtYWluaW5nUmVsZWFzZUNvbnRleHQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWU7IC8vL1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLiBPciB0aGVyZSBjb3VsZCBiZSBhIGRlcGVuZGVuY3kgbWlzbWF0Y2guYCk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRDcmVhdGVkO1xufVxuXG5mdW5jdGlvbiBjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW50TmFtZXMuaW5jbHVkZXMoZGVwZW5kZW5jeU5hbWUpLFxuICAgICAgICBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lOyAgLy8vXG5cbiAgaWYgKGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBmaXJzdERlcGVuZGVudE5hbWUgPSBmaXJzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzID0gWyAgLy8vXG4gICAgICAgICAgICAuLi5kZXBlbmRlbnROYW1lcyxcbiAgICAgICAgICAgIGZpcnN0RGVwZW5kZW50TmFtZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzU3RyaW5nID0gZGVwZW5kZW5jeU5hbWVzLmpvaW4oYCcgLT4gJ2ApO1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZXJlIGlzIGEgY3ljbGljIGRlcGVuZGVuY3k6ICcke2RlcGVuZGVuY3lOYW1lc1N0cmluZ30nLmApO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gdHJ1ZTtcblxuICBjb25zdCBlbnRyaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RW50cmllcygpLFxuICAgICAgICBzaG9ydGVuZWRWZXJzaW9uID0gZGVwZW5kZW5jeS5nZXRTaG9ydGVkVmVyc2lvbigpO1xuXG4gIGlmIChzaG9ydGVuZWRWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiA9IGVudHJpZXMubWF0Y2hTaG9ydGVuZWRWZXJzaW9uKHNob3J0ZW5lZFZlcnNpb24pO1xuXG4gICAgaWYgKCFlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIHZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5nZXRWZXJzaW9uKCksXG4gICAgICAgICAgICBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lLCAgLy8vXG4gICAgICAgICAgICB2ZXJzaW9uU3RyaW5nID0gdmVyc2lvbi50b1N0cmluZygpLFxuICAgICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgICAgbG9nLndhcm5pbmcoYFZlcnNpb24gbWlzbWF0Y2g6IFRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IHJlcXVpcmVzIHRoZSAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeSBidXQgYSBjb250ZXh0IHdpdGggdmVyc2lvbiAnJHt2ZXJzaW9uU3RyaW5nfScgd2FzIHByb3ZpZGVkLmApO1xuXG4gICAgICByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW50TmFtZXMgPSBbIC4uLmRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbmN5TmFtZSBdOyAgLy8vXG5cbiAgZGVwZW5kZW5jaWVzLmFzeW5jaHJvbm91c0ZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeUV4aXN0cyA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcyk7XG5cbiAgICBpZiAoY3ljbGljRGVwZW5kZW5jeUV4aXN0cykge1xuICAgICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICBjYWxsYmFjayhlcnJvciwgc3VjY2Vzcyk7XG5cbiAgICAgIGNhbGxiYWNrID0gbnVsbDtcblxuICAgICAgZG9uZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvciwgc3VjY2VzcykgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICBjYWxsYmFjayA9IG51bGw7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgICAgICBjYWxsYmFjayA9IG51bGw7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCAoKSA9PiB7XG4gICAgaWYgKGNhbGxiYWNrICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGNvbnN0IGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpLFxuICAgICAgICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzSW5pdGlhbGlzZWQgPSBkZXBlbmRlbmNpZXMuZXZlcnlEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7ICAvLy9cbiAgICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkID0gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0SW5pdGlhbGlzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNJbml0aWFsaXNlZDtcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVSZWxlYXNlQ29udGV4dCIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCIsImRlcGVuZGVuY3kiLCJkZXBlbmRlbnROYW1lcyIsImNvbnRleHQiLCJjYWxsYmFjayIsImxvZyIsInJlbGVhc2VDb250ZXh0TWFwIiwiZGVwZW5kZW5jeU5hbWUiLCJnZXROYW1lIiwicmVsZWFzZU5hbWUiLCJyZWxlYXNlQ29udGV4dCIsImVycm9yIiwic3VjY2VzcyIsImRlYnVnIiwicmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSIsImRlcGVuZGVuY3lTdHJpbmciLCJhc1N0cmluZyIsInJlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkIiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwid2FybmluZyIsImluZm8iLCJyZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkIiwiaXNJbml0aWFsaXNlZCIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNJbml0aWFsaXNlZCIsImluaXRpYWxpc2VEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwidmVyYm9zZSIsInJlbGVhc2VDb250ZXh0cyIsInJldHJpZXZlUmVsZWFzZUNvbnRleHRzIiwiaW5pdGlhbGlzZSIsInJlbWFpbmluZ1JlbGVhc2VDb250ZXh0IiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHRzIiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoIiwibGVuZ3RoIiwic2hpZnQiLCJwdXNoIiwiZGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0IiwiaW5jbHVkZXMiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0IiwiY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzIiwiZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lIiwiY3ljbGljRGVwZW5kZW5jeUV4aXN0cyIsImZpcnN0RGVwZW5kZW50TmFtZSIsImZpcnN0IiwiZGVwZW5kZW5jeU5hbWVzIiwiZGVwZW5kZW5jeU5hbWVzU3RyaW5nIiwiam9pbiIsImVudHJpZXMiLCJnZXRFbnRyaWVzIiwic2hvcnRlbmVkVmVyc2lvbiIsImdldFNob3J0ZWRWZXJzaW9uIiwiZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiIsIm1hdGNoU2hvcnRlbmVkVmVyc2lvbiIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwibGFzdERlcGVuZGVudE5hbWUiLCJsYXN0IiwiZGVwZW5kZW50TmFtZSIsInZlcnNpb25TdHJpbmciLCJ0b1N0cmluZyIsImFzeW5jaHJvbm91c0ZvckVhY2hEZXBlbmRlbmN5IiwibmV4dCIsImRvbmUiLCJldmVyeURlcGVuZGVuY3kiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUlnQkEsb0JBQW9CO2VBQXBCQTs7SUErR2hCLE9BR0U7ZUFIRjs7SUFwQ2dCQyx3QkFBd0I7ZUFBeEJBOzs7cUJBN0VLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVkLFNBQVNELHFCQUFxQkUsVUFBVSxFQUFFQyxjQUFjLEVBQUVDLE9BQU8sRUFBRUMsUUFBUTtJQUNoRixJQUFRQyxNQUEyQkYsUUFBM0JFLEtBQUtDLG9CQUFzQkgsUUFBdEJHLG1CQUNQQyxpQkFBaUJOLFdBQVdPLE9BQU8sSUFDbkNDLGNBQWNGLGdCQUNkRyxpQkFBaUJKLGlCQUFpQixDQUFDRyxZQUFZLElBQUk7SUFFekQsSUFBSUMsbUJBQW1CLE1BQU07UUFDM0IsSUFBTUMsUUFBUSxNQUNSQyxVQUFVO1FBRWhCUCxJQUFJUSxLQUFLLENBQUMsQUFBQyx3QkFBbUMsT0FBWkosYUFBWTtRQUU5Q0wsU0FBU08sT0FBT0M7UUFFaEI7SUFDRjtJQUVBLElBQU0sQUFBRUUsK0JBQWlDWCxRQUFqQ1csOEJBQ0ZDLG1CQUFtQmQsV0FBV2UsUUFBUTtJQUU1Q1gsSUFBSVEsS0FBSyxDQUFDLEFBQUMsaUJBQW1ERSxPQUFuQ04sYUFBWSx5QkFBd0MsT0FBakJNLGtCQUFpQjtJQUUvRUQsNkJBQTZCYixZQUFZRSxTQUFTLFNBQUNRLE9BQU9EO1FBQ3hELElBQUlDLE9BQU87WUFDVFAsU0FBU087WUFFVDtRQUNGO1FBRUEsSUFBTU0sd0JBQXdCQywyQkFBMkJSLGdCQUFnQlQsWUFBWUU7UUFFckYsSUFBSSxDQUFDYyx1QkFBdUI7WUFDMUIsSUFBTU4sVUFBUSxNQUNSQyxVQUFVO1lBRWhCUixTQUFTTyxTQUFPQztZQUVoQjtRQUNGO1FBRUEsSUFBTU8sMkJBQTJCQyw4QkFBOEJWLGdCQUFnQlQsWUFBWUMsZ0JBQWdCQztRQUUzRyxJQUFJLENBQUNnQiwwQkFBMEI7WUFDN0IsSUFBTVIsV0FBUSxNQUNSQyxXQUFVO1lBRWhCUixTQUFTTyxVQUFPQztZQUVoQjtRQUNGO1FBRUFTLGdDQUFnQ3BCLFlBQVlTLGdCQUFnQlIsZ0JBQWdCQyxTQUFTLFNBQUNRLE9BQU9DO1lBQzNGLElBQUlELE9BQU87Z0JBQ1RQLFNBQVNPO2dCQUVUO1lBQ0Y7WUFFQSxJQUFJLENBQUNDLFNBQVM7Z0JBQ1pQLElBQUlpQixPQUFPLENBQUMsQUFBQyw0QkFBdUMsT0FBWmIsYUFBWTtnQkFFcERMLFNBQVNPLE9BQU9DO2dCQUVoQjtZQUNGO1lBRUFOLGlCQUFpQixDQUFDRyxZQUFZLEdBQUdDO1lBRWpDTCxJQUFJa0IsSUFBSSxDQUFDLEFBQUMsbUJBQThCLE9BQVpkLGFBQVk7WUFFeENMLFNBQVNPLE9BQU9DO1FBQ2xCO0lBQ0YsR0FBR1Q7QUFDTDtBQUVPLFNBQVNILHlCQUF5QkMsVUFBVSxFQUFFRSxPQUFPO0lBQzFELElBQUlxQiw0QkFBNEI7SUFFaEMsSUFBTSxBQUFFbEIsb0JBQXNCSCxRQUF0QkcsbUJBQ0ZDLGlCQUFpQk4sV0FBV08sT0FBTyxJQUNuQ0MsY0FBY0YsZ0JBQ2RHLGlCQUFpQkosaUJBQWlCLENBQUNHLFlBQVksSUFBSTtJQUV6RCxJQUFJQyxtQkFBbUIsTUFBTTtRQUMzQixJQUFNLEFBQUVMLE1BQVFGLFFBQVJFO1FBRVJBLElBQUlpQixPQUFPLENBQUMsQUFBQyw2QkFBMkMsT0FBZmYsZ0JBQWU7SUFDMUQsT0FBTztRQUNMaUIsNEJBQTRCZCxlQUFlZSxhQUFhO1FBRXhELElBQUksQ0FBQ0QsMkJBQTJCO1lBQzlCLElBQU1FLHVDQUF1Q0Msb0NBQW9DMUIsWUFBWVMsZ0JBQWdCUDtZQUU3RyxJQUFJdUIsc0NBQXNDO2dCQUN4QyxJQUFRckIsT0FBaUJGLFFBQWpCRSxLQUFLdUIsVUFBWXpCLFFBQVp5QixTQUNQQyxrQkFBa0JDLHdCQUF3QnBCLGdCQUFnQko7Z0JBRWhFRCxLQUFJUSxLQUFLLENBQUMsQUFBQyxxQkFBbUMsT0FBZk4sZ0JBQWU7Z0JBRTlDaUIsNEJBQTRCZCxlQUFlcUIsVUFBVSxDQUFDRixpQkFBaUJEO2dCQUV2RUosNEJBQ0VuQixLQUFJa0IsSUFBSSxDQUFDLEFBQUMsdUJBQXFDLE9BQWZoQixnQkFBZSxpQkFDN0NGLEtBQUlpQixPQUFPLENBQUMsQUFBQyxnQ0FBOEMsT0FBZmYsZ0JBQWU7WUFDakU7UUFDRjtJQUNGO0lBRUEsT0FBT2lCO0FBQ1Q7SUFFQSxXQUFlO0lBQ2J6QixzQkFBQUE7SUFDQUMsMEJBQUFBO0FBQ0Y7QUFFQSxTQUFTOEIsd0JBQXdCcEIsY0FBYyxFQUFFSixpQkFBaUI7SUFDaEUsSUFBTXVCLGtCQUFrQixFQUFFLEVBQ3BCRywwQkFBMEJ0QixnQkFDMUJ1QiwyQkFBMkI7UUFDekJEO0tBQ0Q7SUFFUCxJQUFJRSxpQ0FBaUNELHlCQUF5QkUsTUFBTTtJQUVwRSxNQUFPRCxpQ0FBaUMsRUFBRztRQUN6QyxJQUFNRiwyQkFBMEJDLHlCQUF5QkcsS0FBSyxJQUN4RDFCLG1CQUFpQnNCLDBCQUEwQixHQUFHO1FBRXBESCxnQkFBZ0JRLElBQUksQ0FBQzNCO1FBRXJCLElBQU00QixlQUFlNUIsaUJBQWU2QixlQUFlO1FBRW5ERCxhQUFhRSxpQkFBaUIsQ0FBQyxTQUFDdkM7WUFDOUIsSUFBTU0saUJBQWlCTixXQUFXTyxPQUFPLElBQ25DQyxjQUFjRixnQkFDZEcsbUJBQWlCSixpQkFBaUIsQ0FBQ0csWUFBWSxFQUMvQ2dDLHdDQUF3Q1osZ0JBQWdCYSxRQUFRLENBQUNoQyxtQkFDakVpQyxpREFBaURWLHlCQUF5QlMsUUFBUSxDQUFDaEM7WUFFekYsSUFBSSxDQUFDK0IseUNBQXlDLENBQUNFLGdEQUFnRDtnQkFDN0YsSUFBTVgsMEJBQTBCdEIsa0JBQWdCLEdBQUc7Z0JBRW5EdUIseUJBQXlCSSxJQUFJLENBQUNMO1lBQ2hDO1FBQ0Y7UUFFQUUsaUNBQWlDRCx5QkFBeUJFLE1BQU07SUFDbEU7SUFFQSxPQUFPTjtBQUNUO0FBRUEsU0FBU1gsMkJBQTJCUixjQUFjLEVBQUVULFVBQVUsRUFBRUUsT0FBTztJQUNyRSxJQUFNYyx3QkFBeUJQLG1CQUFtQjtJQUVsRCxJQUFJLENBQUNPLHVCQUF1QjtRQUMxQixJQUFNLEFBQUVaLE1BQVFGLFFBQVJFLEtBQ0ZFLGlCQUFpQk4sV0FBV08sT0FBTyxJQUNuQ0MsY0FBY0YsZ0JBQWdCLEdBQUc7UUFFdkNGLElBQUlpQixPQUFPLENBQUMsQUFBQyxRQUFtQixPQUFaYixhQUFZO0lBQ2xDO0lBRUEsT0FBT1E7QUFDVDtBQUVBLFNBQVMyQiw0QkFBNEIzQyxVQUFVLEVBQUVDLGNBQWMsRUFBRUMsT0FBTztJQUN0RSxJQUFNSSxpQkFBaUJOLFdBQVdPLE9BQU8sSUFDbkNxQyx1Q0FBdUMzQyxlQUFld0MsUUFBUSxDQUFDbkMsaUJBQy9EdUMseUJBQXlCRCxzQ0FBdUMsR0FBRztJQUV6RSxJQUFJQyx3QkFBd0I7UUFDMUIsSUFBTSxBQUFFekMsTUFBUUYsUUFBUkUsS0FDRjBDLHFCQUFxQkMsTUFBTTlDLGlCQUMzQitDLGtCQUFrQixBQUNoQixxQkFBRy9DLHVCQURhO1lBRWhCNkM7U0FDRCxHQUNERyx3QkFBd0JELGdCQUFnQkUsSUFBSSxDQUFFO1FBRXBEOUMsSUFBSWlCLE9BQU8sQ0FBQyxBQUFDLGtDQUF1RCxPQUF0QjRCLHVCQUFzQjtJQUN0RTtJQUVBLE9BQU9KO0FBQ1Q7QUFFQSxTQUFTMUIsOEJBQThCVixjQUFjLEVBQUVULFVBQVUsRUFBRUMsY0FBYyxFQUFFQyxPQUFPO0lBQ3hGLElBQUlnQiwyQkFBMkI7SUFFL0IsSUFBTWlDLFVBQVUxQyxlQUFlMkMsVUFBVSxJQUNuQ0MsbUJBQW1CckQsV0FBV3NELGlCQUFpQjtJQUVyRCxJQUFJRCxxQkFBcUIsTUFBTTtRQUM3QixJQUFNRSwrQkFBK0JKLFFBQVFLLHFCQUFxQixDQUFDSDtRQUVuRSxJQUFJLENBQUNFLDhCQUE4QjtZQUNqQyxJQUFNLEFBQUVuRCxNQUFRRixRQUFSRSxLQUNGcUQsVUFBVWhELGVBQWVpRCxVQUFVLElBQ25DQyxvQkFBb0JDLElBQUFBLFdBQUksRUFBQzNELGlCQUN6QjRELGdCQUFnQkYsbUJBQ2hCRyxnQkFBZ0JMLFFBQVFNLFFBQVEsSUFDaENqRCxtQkFBbUJkLFdBQVdlLFFBQVE7WUFFNUNYLElBQUlpQixPQUFPLENBQUMsQUFBQywwQkFBbUVQLE9BQTFDK0MsZUFBYyw4QkFBd0ZDLE9BQTVEaEQsa0JBQWlCLDZDQUF5RCxPQUFkZ0QsZUFBYztZQUUxSjVDLDJCQUEyQjtRQUM3QjtJQUNGO0lBRUEsT0FBT0E7QUFDVDtBQUVBLFNBQVNFLGdDQUFnQ3BCLFVBQVUsRUFBRVMsY0FBYyxFQUFFUixjQUFjLEVBQUVDLE9BQU8sRUFBRUMsUUFBUTtJQUNwRyxJQUFNRyxpQkFBaUJOLFdBQVdPLE9BQU8sSUFDbkM4QixlQUFlNUIsZUFBZTZCLGVBQWU7SUFFbkRyQyxpQkFBaUIsQUFBRSxxQkFBR0EsdUJBQUw7UUFBcUJLO0tBQWdCLEdBQUcsR0FBRztJQUU1RCtCLGFBQWEyQiw2QkFBNkIsQ0FBQyxTQUFDaEUsWUFBWWlFLE1BQU1DO1FBQzVELElBQU1yQix5QkFBeUJGLDRCQUE0QjNDLFlBQVlDO1FBRXZFLElBQUk0Qyx3QkFBd0I7WUFDMUIsSUFBTW5DLFFBQVEsTUFDUkMsVUFBVTtZQUVoQlIsU0FBU08sT0FBT0M7WUFFaEJSLFdBQVc7WUFFWCtEO1lBRUE7UUFDRjtRQUVBcEUscUJBQXFCRSxZQUFZQyxnQkFBZ0JDLFNBQVMsU0FBQ1EsT0FBT0M7WUFDaEUsSUFBSUQsT0FBTztnQkFDVFAsU0FBU087Z0JBRVRQLFdBQVc7Z0JBRVgrRDtnQkFFQTtZQUNGO1lBRUEsSUFBSSxDQUFDdkQsU0FBUztnQkFDWlIsU0FBU08sT0FBT0M7Z0JBRWhCUixXQUFXO2dCQUVYK0Q7Z0JBRUE7WUFDRjtZQUVBRDtRQUNGO0lBQ0YsR0FBRztRQUNELElBQUk5RCxhQUFhLE1BQU07WUFDckIsSUFBTU8sUUFBUSxNQUNSQyxVQUFVO1lBRWhCUixTQUFTTyxPQUFPQztRQUNsQjtJQUNGO0FBQ0Y7QUFFQSxTQUFTZSxvQ0FBb0MxQixVQUFVLEVBQUVTLGNBQWMsRUFBRVAsT0FBTztJQUM5RSxJQUFNbUMsZUFBZTVCLGVBQWU2QixlQUFlLElBQzdDYix1Q0FBdUNZLGFBQWE4QixlQUFlLENBQUMsU0FBQ25FO1FBQ25FLElBQU11Qiw0QkFBNEJ4Qix5QkFBeUJDLFlBQVlFO1FBRXZFLElBQUlxQiwyQkFBMkI7WUFDN0IsT0FBTztRQUNUO0lBQ0Y7SUFFTixPQUFPRTtBQUNUIn0=
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.993",
4
+ "version": "0.0.996",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
package/src/index.js CHANGED
@@ -3,7 +3,6 @@
3
3
  export { default as Log } from "./log";
4
4
  export { default as verifyRelease } from "./verify/release";
5
5
  export { default as ReleaseContext } from "./context/release";
6
- export { default as createReleaseContext } from "./releaseContext/create";
7
6
  export { default as customGrammarUtilities } from "./utilities/customGrammar";
8
- export { default as initialiseReleaseContext } from "./releaseContext/initialise";
7
+ export { default as releaseContextUtilities } from "./utilities/releaseContext";
9
8
 
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+
3
+ import { last } from "../utilities/array";
4
+
5
+ export function createReleaseContext(dependency, dependentNames, context, callback) {
6
+ const { log, releaseContextMap } = context,
7
+ dependencyName = dependency.getName(),
8
+ releaseName = dependencyName, ///
9
+ releaseContext = releaseContextMap[releaseName] || null;
10
+
11
+ if (releaseContext !== null) {
12
+ const error = null,
13
+ success = true;
14
+
15
+ log.debug(`Already created the '${releaseName}' context.`);
16
+
17
+ callback(error, success);
18
+
19
+ return;
20
+ }
21
+
22
+ const { releaseContextFromDependency } = context,
23
+ dependencyString = dependency.asString();
24
+
25
+ log.debug(`Creating the '${releaseName}' context given the '${dependencyString}' dependency...`);
26
+
27
+ releaseContextFromDependency(dependency, context, (error, releaseContext) => {
28
+ if (error) {
29
+ callback(error);
30
+
31
+ return;
32
+ }
33
+
34
+ const releaseContextCreated = checkReleaseContextCreated(releaseContext, dependency, context);
35
+
36
+ if (!releaseContextCreated) {
37
+ const error = null,
38
+ success = false;
39
+
40
+ callback(error, success);
41
+
42
+ return;
43
+ }
44
+
45
+ const releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
46
+
47
+ if (!releaseMatchesDependency) {
48
+ const error = null,
49
+ success = false;
50
+
51
+ callback(error, success);
52
+
53
+ return;
54
+ }
55
+
56
+ createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context, (error, success) => {
57
+ if (error) {
58
+ callback(error);
59
+
60
+ return;
61
+ }
62
+
63
+ if (!success) {
64
+ log.warning(`...unable to create the '${releaseName}' context.`);
65
+
66
+ callback(error, success);
67
+
68
+ return;
69
+ }
70
+
71
+ releaseContextMap[releaseName] = releaseContext;
72
+
73
+ log.info(`...created the '${releaseName}' context.`);
74
+
75
+ callback(error, success);
76
+ });
77
+ }, context);
78
+ }
79
+
80
+ export function initialiseReleaseContext(dependency, context) {
81
+ let releaseContextInitialised = false;
82
+
83
+ const { releaseContextMap } = context,
84
+ dependencyName = dependency.getName(),
85
+ releaseName = dependencyName, ///
86
+ releaseContext = releaseContextMap[releaseName] || null;
87
+
88
+ if (releaseContext === null) {
89
+ const { log } = context;
90
+
91
+ log.warning(`Unable to initialise the '${dependencyName}' context because it has not been created.`);
92
+ } else {
93
+ releaseContextInitialised = releaseContext.isInitialised();
94
+
95
+ if (!releaseContextInitialised) {
96
+ const dependencyReleaseContextsInitialised = initialiseDependencyReleaseContexts(dependency, releaseContext, context);
97
+
98
+ if (dependencyReleaseContextsInitialised) {
99
+ const { log, verbose } = context,
100
+ releaseContexts = retrieveReleaseContexts(releaseContext, releaseContextMap);
101
+
102
+ log.debug(`Initialising the '${dependencyName}' context...`);
103
+
104
+ releaseContextInitialised = releaseContext.initialise(releaseContexts, verbose);
105
+
106
+ releaseContextInitialised ?
107
+ log.info(`...initialised the '${dependencyName}' context.`) :
108
+ log.warning(`...unable to initialise the '${dependencyName}' context.`);
109
+ }
110
+ }
111
+ }
112
+
113
+ return releaseContextInitialised;
114
+ }
115
+
116
+ export default {
117
+ createReleaseContext,
118
+ initialiseReleaseContext
119
+ };
120
+
121
+ function retrieveReleaseContexts(releaseContext, releaseContextMap) {
122
+ const releaseContexts = [],
123
+ remainingReleaseContext = releaseContext, ///
124
+ remainingReleaseContexts = [
125
+ remainingReleaseContext
126
+ ];
127
+
128
+ let remainingReleaseContextsLength = remainingReleaseContexts.length;
129
+
130
+ while (remainingReleaseContextsLength > 0) {
131
+ const remainingReleaseContext = remainingReleaseContexts.shift(),
132
+ releaseContext = remainingReleaseContext; ///
133
+
134
+ releaseContexts.push(releaseContext);
135
+
136
+ const dependencies = releaseContext.getDependencies();
137
+
138
+ dependencies.forEachDependency((dependency) => {
139
+ const dependencyName = dependency.getName(),
140
+ releaseName = dependencyName, ///
141
+ releaseContext = releaseContextMap[releaseName],
142
+ releaseContextsIncludesReleaseContext = releaseContexts.includes(releaseContext),
143
+ remainingReleaseContextsIncludesReleaseContext = remainingReleaseContexts.includes(releaseContext);
144
+
145
+ if (!releaseContextsIncludesReleaseContext && !remainingReleaseContextsIncludesReleaseContext) {
146
+ const remainingReleaseContext = releaseContext; ///
147
+
148
+ remainingReleaseContexts.push(remainingReleaseContext);
149
+ }
150
+ });
151
+
152
+ remainingReleaseContextsLength = remainingReleaseContexts.length;
153
+ }
154
+
155
+ return releaseContexts;
156
+ }
157
+
158
+ function checkReleaseContextCreated(releaseContext, dependency, context) {
159
+ const releaseContextCreated = (releaseContext !== null);
160
+
161
+ if (!releaseContextCreated) {
162
+ const { log } = context,
163
+ dependencyName = dependency.getName(),
164
+ releaseName = dependencyName; ///
165
+
166
+ log.warning(`The '${releaseName}' context could not be created. Perhaps the 'meta.json' file is missing or invalid. Or there could be a dependency mismatch.`);
167
+ }
168
+
169
+ return releaseContextCreated;
170
+ }
171
+
172
+ function checkCyclicDependencyExists(dependency, dependentNames, context) {
173
+ const dependencyName = dependency.getName(),
174
+ dependentNamesIncludesDependencyName = dependentNames.includes(dependencyName),
175
+ cyclicDependencyExists = dependentNamesIncludesDependencyName; ///
176
+
177
+ if (cyclicDependencyExists) {
178
+ const { log } = context,
179
+ firstDependentName = first(dependentNames),
180
+ dependencyNames = [ ///
181
+ ...dependentNames,
182
+ firstDependentName
183
+ ],
184
+ dependencyNamesString = dependencyNames.join(`' -> '`);
185
+
186
+ log.warning(`There is a cyclic dependency: '${dependencyNamesString}'.`);
187
+ }
188
+
189
+ return cyclicDependencyExists;
190
+ }
191
+
192
+ function checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context) {
193
+ let releaseMatchesDependency = true;
194
+
195
+ const entries = releaseContext.getEntries(),
196
+ shortenedVersion = dependency.getShortedVersion();
197
+
198
+ if (shortenedVersion !== null) {
199
+ const entriesMatchShortenedVersion = entries.matchShortenedVersion(shortenedVersion);
200
+
201
+ if (!entriesMatchShortenedVersion) {
202
+ const { log } = context,
203
+ version = releaseContext.getVersion(),
204
+ lastDependentName = last(dependentNames),
205
+ dependentName = lastDependentName, ///
206
+ versionString = version.toString(),
207
+ dependencyString = dependency.asString();
208
+
209
+ log.warning(`Version mismatch: The '${dependentName}' dependent requires the '${dependencyString}' dependency but a context with version '${versionString}' was provided.`);
210
+
211
+ releaseMatchesDependency = false;
212
+ }
213
+ }
214
+
215
+ return releaseMatchesDependency;
216
+ }
217
+
218
+ function createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context, callback) {
219
+ const dependencyName = dependency.getName(),
220
+ dependencies = releaseContext.getDependencies();
221
+
222
+ dependentNames = [ ...dependentNames, dependencyName ]; ///
223
+
224
+ dependencies.asynchronousForEachDependency((dependency, next, done) => {
225
+ const cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames);
226
+
227
+ if (cyclicDependencyExists) {
228
+ const error = null,
229
+ success = false;
230
+
231
+ callback(error, success);
232
+
233
+ callback = null;
234
+
235
+ done();
236
+
237
+ return;
238
+ }
239
+
240
+ createReleaseContext(dependency, dependentNames, context, (error, success) => {
241
+ if (error) {
242
+ callback(error);
243
+
244
+ callback = null;
245
+
246
+ done();
247
+
248
+ return;
249
+ }
250
+
251
+ if (!success) {
252
+ callback(error, success);
253
+
254
+ callback = null;
255
+
256
+ done();
257
+
258
+ return;
259
+ }
260
+
261
+ next();
262
+ });
263
+ }, () => {
264
+ if (callback !== null) {
265
+ const error = null,
266
+ success = true;
267
+
268
+ callback(error, success);
269
+ }
270
+ });
271
+ }
272
+
273
+ function initialiseDependencyReleaseContexts(dependency, releaseContext, context) {
274
+ const dependencies = releaseContext.getDependencies(),
275
+ dependencyReleaseContextsInitialised = dependencies.everyDependency((dependency) => { ///
276
+ const releaseContextInitialised = initialiseReleaseContext(dependency, context);
277
+
278
+ if (releaseContextInitialised) {
279
+ return true;
280
+ }
281
+ });
282
+
283
+ return dependencyReleaseContextsInitialised;
284
+ }
@@ -1,131 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return createReleaseContext;
9
- }
10
- });
11
- var _array = require("../utilities/array");
12
- function _array_like_to_array(arr, len) {
13
- if (len == null || len > arr.length) len = arr.length;
14
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
15
- return arr2;
16
- }
17
- function _array_without_holes(arr) {
18
- if (Array.isArray(arr)) return _array_like_to_array(arr);
19
- }
20
- function _iterable_to_array(iter) {
21
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
22
- }
23
- function _non_iterable_spread() {
24
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
25
- }
26
- function _to_consumable_array(arr) {
27
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
28
- }
29
- function _unsupported_iterable_to_array(o, minLen) {
30
- if (!o) return;
31
- if (typeof o === "string") return _array_like_to_array(o, minLen);
32
- var n = Object.prototype.toString.call(o).slice(8, -1);
33
- if (n === "Object" && o.constructor) n = o.constructor.name;
34
- if (n === "Map" || n === "Set") return Array.from(n);
35
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
36
- }
37
- function createReleaseContext(dependency, dependentNames, context, callback) {
38
- var log = context.log, releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), dependencyString = dependency.asString(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
39
- log.debug("Creating the '".concat(releaseName, "' context given the '").concat(dependencyString, "' dependency..."));
40
- if (releaseContext !== null) {
41
- var error = null;
42
- log.debug("...already created the '".concat(releaseName, "' context."));
43
- callback(error);
44
- return;
45
- }
46
- var releaseContextFromDependency = context.releaseContextFromDependency;
47
- releaseContextFromDependency(dependency, context, function(error, releaseContext) {
48
- if (error) {
49
- callback(error);
50
- return;
51
- }
52
- var releaseContextCreated = checkReleaseContextCreated(releaseContext, dependency, context);
53
- if (!releaseContextCreated) {
54
- var _$error = null;
55
- callback(_$error);
56
- return;
57
- }
58
- var releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
59
- if (!releaseMatchesDependency) {
60
- var _$error1 = null;
61
- callback(_$error1);
62
- return;
63
- }
64
- releaseContextMap[releaseName] = releaseContext;
65
- log.info("...created the '".concat(releaseName, "' context."));
66
- createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context, function(error) {
67
- if (error) {
68
- callback(error);
69
- return;
70
- }
71
- callback(error);
72
- });
73
- }, context);
74
- }
75
- function checkReleaseContextCreated(releaseContext, dependency, context) {
76
- var releaseContextCreated = releaseContext !== null;
77
- if (!releaseContextCreated) {
78
- var log = context.log, dependencyName = dependency.getName(), releaseName = dependencyName; ///
79
- log.warning("The '".concat(releaseName, "' context could not be created. Perhaps the 'meta.json' file is missing or invalid. Or there could be a dependency mismatch."));
80
- }
81
- return releaseContextCreated;
82
- }
83
- function checkCyclicDependencyExists(dependency, dependentNames, context) {
84
- var dependencyName = dependency.getName(), dependentNamesIncludesDependencyName = dependentNames.includes(dependencyName), cyclicDependencyExists = dependentNamesIncludesDependencyName; ///
85
- if (cyclicDependencyExists) {
86
- var log = context.log, firstDependentName = first(dependentNames), dependencyNames = _to_consumable_array(dependentNames).concat([
87
- firstDependentName
88
- ]), dependencyNamesString = dependencyNames.join("' -> '");
89
- log.warning("There is a cyclic dependency: '".concat(dependencyNamesString, "'."));
90
- }
91
- return cyclicDependencyExists;
92
- }
93
- function checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context) {
94
- var releaseMatchesDependency = true;
95
- var entries = releaseContext.getEntries(), shortenedVersion = dependency.getShortedVersion();
96
- if (shortenedVersion !== null) {
97
- var entriesMatchShortenedVersion = entries.matchShortenedVersion(shortenedVersion);
98
- if (!entriesMatchShortenedVersion) {
99
- var log = context.log, version = releaseContext.getVersion(), lastDependentName = (0, _array.last)(dependentNames), dependentName = lastDependentName, versionString = version.toString(), dependencyString = dependency.asString();
100
- log.warning("Version mismatch: The '".concat(dependentName, "' dependent requires the '").concat(dependencyString, "' dependency but a context with version '").concat(versionString, "' was provided."));
101
- releaseMatchesDependency = false;
102
- }
103
- }
104
- return releaseMatchesDependency;
105
- }
106
- function createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context, callback) {
107
- var dependencyName = dependency.getName(), dependencies = releaseContext.getDependencies();
108
- dependentNames = _to_consumable_array(dependentNames).concat([
109
- dependencyName
110
- ]); ///
111
- dependencies.asynchronousForEachDependency(function(dependency, next, done) {
112
- var cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames);
113
- if (cyclicDependencyExists) {
114
- var error = null;
115
- callback(error);
116
- return;
117
- }
118
- createReleaseContext(dependency, dependentNames, context, function(error) {
119
- if (error) {
120
- callback(error);
121
- return;
122
- }
123
- next();
124
- });
125
- }, function() {
126
- var error = null;
127
- callback(error);
128
- });
129
- }
130
-
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWxlYXNlQ29udGV4dC9jcmVhdGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxhc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0LCBjYWxsYmFjaykge1xuICBjb25zdCB7IGxvZywgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGxvZy5kZWJ1ZyhgQ3JlYXRpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dCBnaXZlbiB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kuLi5gKTtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgIT09IG51bGwpIHtcbiAgICBjb25zdCBlcnJvciA9IG51bGw7XG5cbiAgICBsb2cuZGVidWcoYC4uLmFscmVhZHkgY3JlYXRlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0LmApO1xuXG4gICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3koZGVwZW5kZW5jeSwgY29udGV4dCwgKGVycm9yLCByZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gY2hlY2tSZWxlYXNlQ29udGV4dENyZWF0ZWQocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gICAgaWYgKCFyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbnVsbDtcblxuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGw7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSA9IHJlbGVhc2VDb250ZXh0O1xuXG4gICAgbG9nLmluZm8oYC4uLmNyZWF0ZWQgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dC5gKTtcblxuICAgIGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0LCAoZXJyb3IpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfSk7XG4gIH0sIGNvbnRleHQpO1xufVxuXG5mdW5jdGlvbiBjaGVja1JlbGVhc2VDb250ZXh0Q3JlYXRlZChyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSAocmVsZWFzZUNvbnRleHQgIT09IG51bGwpO1xuXG4gIGlmICghcmVsZWFzZUNvbnRleHRDcmVhdGVkKSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lOyAvLy9cblxuICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0IGNvdWxkIG5vdCBiZSBjcmVhdGVkLiBQZXJoYXBzIHRoZSAnbWV0YS5qc29uJyBmaWxlIGlzIG1pc3Npbmcgb3IgaW52YWxpZC4gT3IgdGhlcmUgY291bGQgYmUgYSBkZXBlbmRlbmN5IG1pc21hdGNoLmApO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0Q3JlYXRlZDtcbn1cblxuZnVuY3Rpb24gY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzKGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIGRlcGVuZGVudE5hbWVzSW5jbHVkZXNEZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVudE5hbWVzLmluY2x1ZGVzKGRlcGVuZGVuY3lOYW1lKSxcbiAgICAgICAgY3ljbGljRGVwZW5kZW5jeUV4aXN0cyA9IGRlcGVuZGVudE5hbWVzSW5jbHVkZXNEZXBlbmRlbmN5TmFtZTsgIC8vL1xuXG4gIGlmIChjeWNsaWNEZXBlbmRlbmN5RXhpc3RzKSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgZmlyc3REZXBlbmRlbnROYW1lID0gZmlyc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lcyA9IFsgIC8vL1xuICAgICAgICAgICAgLi4uZGVwZW5kZW50TmFtZXMsXG4gICAgICAgICAgICBmaXJzdERlcGVuZGVudE5hbWVcbiAgICAgICAgICBdLFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lc1N0cmluZyA9IGRlcGVuZGVuY3lOYW1lcy5qb2luKGAnIC0+ICdgKTtcblxuICAgIGxvZy53YXJuaW5nKGBUaGVyZSBpcyBhIGN5Y2xpYyBkZXBlbmRlbmN5OiAnJHtkZXBlbmRlbmN5TmFtZXNTdHJpbmd9Jy5gKTtcbiAgfVxuXG4gIHJldHVybiBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzO1xufVxuXG5mdW5jdGlvbiBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IHRydWU7XG5cbiAgY29uc3QgZW50cmllcyA9IHJlbGVhc2VDb250ZXh0LmdldEVudHJpZXMoKSxcbiAgICAgICAgc2hvcnRlbmVkVmVyc2lvbiA9IGRlcGVuZGVuY3kuZ2V0U2hvcnRlZFZlcnNpb24oKTtcblxuICBpZiAoc2hvcnRlbmVkVmVyc2lvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24gPSBlbnRyaWVzLm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIGlmICghZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbikge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICB2ZXJzaW9uID0gcmVsZWFzZUNvbnRleHQuZ2V0VmVyc2lvbigpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZSwgIC8vL1xuICAgICAgICAgICAgdmVyc2lvblN0cmluZyA9IHZlcnNpb24udG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCk7XG5cbiAgICAgIGxvZy53YXJuaW5nKGBWZXJzaW9uIG1pc21hdGNoOiBUaGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCByZXF1aXJlcyB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kgYnV0IGEgY29udGV4dCB3aXRoIHZlcnNpb24gJyR7dmVyc2lvblN0cmluZ30nIHdhcyBwcm92aWRlZC5gKTtcblxuICAgICAgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCByZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpO1xuXG4gIGRlcGVuZGVudE5hbWVzID0gWyAuLi5kZXBlbmRlbnROYW1lcywgZGVwZW5kZW5jeU5hbWUgXTsgIC8vL1xuXG4gIGRlcGVuZGVuY2llcy5hc3luY2hyb25vdXNGb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSwgbmV4dCwgZG9uZSkgPT4ge1xuICAgIGNvbnN0IGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMgPSBjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMpO1xuXG4gICAgaWYgKGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbnVsbDtcblxuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfSwgKCkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbnVsbDtcblxuICAgIGNhbGxiYWNrKGVycm9yKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUmVsZWFzZUNvbnRleHQiLCJkZXBlbmRlbmN5IiwiZGVwZW5kZW50TmFtZXMiLCJjb250ZXh0IiwiY2FsbGJhY2siLCJsb2ciLCJyZWxlYXNlQ29udGV4dE1hcCIsImRlcGVuZGVuY3lOYW1lIiwiZ2V0TmFtZSIsImRlcGVuZGVuY3lTdHJpbmciLCJhc1N0cmluZyIsInJlbGVhc2VOYW1lIiwicmVsZWFzZUNvbnRleHQiLCJkZWJ1ZyIsImVycm9yIiwicmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSIsInJlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkIiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJpbmZvIiwiY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsIndhcm5pbmciLCJjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMiLCJkZXBlbmRlbnROYW1lc0luY2x1ZGVzRGVwZW5kZW5jeU5hbWUiLCJpbmNsdWRlcyIsImN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMiLCJmaXJzdERlcGVuZGVudE5hbWUiLCJmaXJzdCIsImRlcGVuZGVuY3lOYW1lcyIsImRlcGVuZGVuY3lOYW1lc1N0cmluZyIsImpvaW4iLCJlbnRyaWVzIiwiZ2V0RW50cmllcyIsInNob3J0ZW5lZFZlcnNpb24iLCJnZXRTaG9ydGVkVmVyc2lvbiIsImVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJ2ZXJzaW9uIiwiZ2V0VmVyc2lvbiIsImxhc3REZXBlbmRlbnROYW1lIiwibGFzdCIsImRlcGVuZGVudE5hbWUiLCJ2ZXJzaW9uU3RyaW5nIiwidG9TdHJpbmciLCJkZXBlbmRlbmNpZXMiLCJnZXREZXBlbmRlbmNpZXMiLCJhc3luY2hyb25vdXNGb3JFYWNoRGVwZW5kZW5jeSIsIm5leHQiLCJkb25lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXdCQTs7O3FCQUZIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVOLFNBQVNBLHFCQUFxQkMsVUFBVSxFQUFFQyxjQUFjLEVBQUVDLE9BQU8sRUFBRUMsUUFBUTtJQUN4RixJQUFRQyxNQUEyQkYsUUFBM0JFLEtBQUtDLG9CQUFzQkgsUUFBdEJHLG1CQUNQQyxpQkFBaUJOLFdBQVdPLE9BQU8sSUFDbkNDLG1CQUFtQlIsV0FBV1MsUUFBUSxJQUN0Q0MsY0FBY0osZ0JBQ2RLLGlCQUFpQk4saUJBQWlCLENBQUNLLFlBQVksSUFBSTtJQUV6RE4sSUFBSVEsS0FBSyxDQUFDLEFBQUMsaUJBQW1ESixPQUFuQ0UsYUFBWSx5QkFBd0MsT0FBakJGLGtCQUFpQjtJQUUvRSxJQUFJRyxtQkFBbUIsTUFBTTtRQUMzQixJQUFNRSxRQUFRO1FBRWRULElBQUlRLEtBQUssQ0FBQyxBQUFDLDJCQUFzQyxPQUFaRixhQUFZO1FBRWpEUCxTQUFTVTtRQUVUO0lBQ0Y7SUFFQSxJQUFNLEFBQUVDLCtCQUFpQ1osUUFBakNZO0lBRVJBLDZCQUE2QmQsWUFBWUUsU0FBUyxTQUFDVyxPQUFPRjtRQUN4RCxJQUFJRSxPQUFPO1lBQ1RWLFNBQVNVO1lBRVQ7UUFDRjtRQUVBLElBQU1FLHdCQUF3QkMsMkJBQTJCTCxnQkFB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
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return initialiseReleaseContext;
9
- }
10
- });
11
- function initialiseReleaseContext(dependency, context) {
12
- var releaseContextInitialised = false;
13
- var releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
14
- if (releaseContext === null) {
15
- var log = context.log;
16
- log.warning("Unable to initialise the '".concat(dependencyName, "' context because it has not been created."));
17
- } else {
18
- releaseContextInitialised = releaseContext.isInitialised();
19
- if (!releaseContextInitialised) {
20
- var dependencyReleaseContextsInitialised = initialiseDependencyReleaseContexts(dependency, releaseContext, context);
21
- if (dependencyReleaseContextsInitialised) {
22
- var log1 = context.log, verbose = context.verbose, releaseContexts = retrieveReleaseContexts(releaseContext, releaseContextMap);
23
- log1.debug("Initialising the '".concat(dependencyName, "' context..."));
24
- releaseContextInitialised = releaseContext.initialise(releaseContexts, verbose);
25
- releaseContextInitialised ? log1.info("...initialised the '".concat(dependencyName, "' context.")) : log1.warning("...unable to initialise the '".concat(dependencyName, "' context."));
26
- }
27
- }
28
- }
29
- return releaseContextInitialised;
30
- }
31
- function retrieveReleaseContexts(releaseContext, releaseContextMap) {
32
- var releaseContexts = [], remainingReleaseContext = releaseContext, remainingReleaseContexts = [
33
- remainingReleaseContext
34
- ];
35
- var remainingReleaseContextsLength = remainingReleaseContexts.length;
36
- while(remainingReleaseContextsLength > 0){
37
- var remainingReleaseContext1 = remainingReleaseContexts.shift(), _$releaseContext = remainingReleaseContext1; ///
38
- releaseContexts.push(_$releaseContext);
39
- var dependencies = _$releaseContext.getDependencies();
40
- dependencies.forEachDependency(function(dependency) {
41
- var dependencyName = dependency.getName(), releaseName = dependencyName, _$releaseContext = releaseContextMap[releaseName], releaseContextsIncludesReleaseContext = releaseContexts.includes(_$releaseContext), remainingReleaseContextsIncludesReleaseContext = remainingReleaseContexts.includes(_$releaseContext);
42
- if (!releaseContextsIncludesReleaseContext && !remainingReleaseContextsIncludesReleaseContext) {
43
- var remainingReleaseContext = _$releaseContext; ///
44
- remainingReleaseContexts.push(remainingReleaseContext);
45
- }
46
- });
47
- remainingReleaseContextsLength = remainingReleaseContexts.length;
48
- }
49
- return releaseContexts;
50
- }
51
- function initialiseDependencyReleaseContexts(dependency, releaseContext, context) {
52
- var dependencies = releaseContext.getDependencies(), dependencyReleaseContextsInitialised = dependencies.everyDependency(function(dependency) {
53
- var releaseContextInitialised = initialiseReleaseContext(dependency, context);
54
- if (releaseContextInitialised) {
55
- return true;
56
- }
57
- });
58
- return dependencyReleaseContextsInitialised;
59
- }
60
-
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWxlYXNlQ29udGV4dC9pbml0aWFsaXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0O1xuXG4gICAgbG9nLndhcm5pbmcoYFVuYWJsZSB0byBpbml0aWFsaXNlIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIGNvbnRleHQgYmVjYXVzZSBpdCBoYXMgbm90IGJlZW4gY3JlYXRlZC5gKTtcbiAgfSBlbHNlIHtcbiAgICByZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkID0gcmVsZWFzZUNvbnRleHQuaXNJbml0aWFsaXNlZCgpO1xuXG4gICAgaWYgKCFyZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkKSB7XG4gICAgICBjb25zdCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzSW5pdGlhbGlzZWQgPSBpbml0aWFsaXNlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCByZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG5cbiAgICAgIGlmIChkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzSW5pdGlhbGlzZWQpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIHZlcmJvc2UgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgICAgbG9nLmRlYnVnKGBJbml0aWFsaXNpbmcgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC4uLmApO1xuXG4gICAgICAgIHJlbGVhc2VDb250ZXh0SW5pdGlhbGlzZWQgPSByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgdmVyYm9zZSk7XG5cbiAgICAgICAgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA/XG4gICAgICAgICAgbG9nLmluZm8oYC4uLmluaXRpYWxpc2VkIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIGNvbnRleHQuYCkgOlxuICAgICAgICAgICAgbG9nLndhcm5pbmcoYC4uLnVuYWJsZSB0byBpbml0aWFsaXNlIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIGNvbnRleHQuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0SW5pdGlhbGlzZWQ7XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dHMgPSBbXSxcbiAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dCwgIC8vL1xuICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMgPSBbXG4gICAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRcbiAgICAgICAgXTtcblxuICBsZXQgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLmxlbmd0aDtcblxuICB3aGlsZSAocmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0ID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLnNoaWZ0KCksXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dDsgIC8vL1xuXG4gICAgcmVsZWFzZUNvbnRleHRzLnB1c2gocmVsZWFzZUNvbnRleHQpO1xuXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdLFxuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCksXG4gICAgICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KTtcblxuICAgICAgaWYgKCFyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ICYmICFyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cy5wdXNoKHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0xlbmd0aCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRzO1xufVxuXG5mdW5jdGlvbiBpbml0aWFsaXNlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCByZWxlYXNlQ29udGV4dCwgY29udGV4dCkge1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0luaXRpYWxpc2VkID0gZGVwZW5kZW5jaWVzLmV2ZXJ5RGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4geyAgLy8vXG4gICAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA9IGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChyZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzSW5pdGlhbGlzZWQ7XG59Il0sIm5hbWVzIjpbImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCIsImRlcGVuZGVuY3kiLCJjb250ZXh0IiwicmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCIsInJlbGVhc2VDb250ZXh0TWFwIiwiZGVwZW5kZW5jeU5hbWUiLCJnZXROYW1lIiwicmVsZWFzZU5hbWUiLCJyZWxlYXNlQ29udGV4dCIsImxvZyIsIndhcm5pbmciLCJpc0luaXRpYWxpc2VkIiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0luaXRpYWxpc2VkIiwiaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJ2ZXJib3NlIiwicmVsZWFzZUNvbnRleHRzIiwicmV0cmlldmVSZWxlYXNlQ29udGV4dHMiLCJkZWJ1ZyIsImluaXRpYWxpc2UiLCJpbmZvIiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHQiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHMiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGgiLCJsZW5ndGgiLCJzaGlmdCIsInB1c2giLCJkZXBlbmRlbmNpZXMiLCJnZXREZXBlbmRlbmNpZXMiLCJmb3JFYWNoRGVwZW5kZW5jeSIsInJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJpbmNsdWRlcyIsInJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJldmVyeURlcGVuZGVuY3kiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUVBOzs7ZUFBd0JBOzs7QUFBVCxTQUFTQSx5QkFBeUJDLFVBQVUsRUFBRUMsT0FBTztJQUNsRSxJQUFJQyw0QkFBNEI7SUFFaEMsSUFBTSxBQUFFQyxvQkFBc0JGLFFBQXRCRSxtQkFDRkMsaUJBQWlCSixXQUFXSyxPQUFPLElBQ25DQyxjQUFjRixnQkFDZEcsaUJBQWlCSixpQkFBaUIsQ0FBQ0csWUFBWSxJQUFJO0lBRXpELElBQUlDLG1CQUFtQixNQUFNO1FBQzNCLElBQU0sQUFBRUMsTUFBUVAsUUFBUk87UUFFUkEsSUFBSUMsT0FBTyxDQUFDLEFBQUMsNkJBQTJDLE9BQWZMLGdCQUFlO0lBQzFELE9BQU87UUFDTEYsNEJBQTRCSyxlQUFlRyxhQUFhO1FBRXhELElBQUksQ0FBQ1IsMkJBQTJCO1lBQzlCLElBQU1TLHVDQUF1Q0Msb0NBQW9DWixZQUFZTyxnQkFBZ0JOO1lBRTdHLElBQUlVLHNDQUFzQztnQkFDeEMsSUFBUUgsT0FBaUJQLFFBQWpCTyxLQUFLSyxVQUFZWixRQUFaWSxTQUNQQyxrQkFBa0JDLHdCQUF3QlIsZ0JBQWdCSjtnQkFFaEVLLEtBQUlRLEtBQUssQ0FBQyxBQUFDLHFCQUFtQyxPQUFmWixnQkFBZTtnQkFFOUNGLDRCQUE0QkssZUFBZVUsVUFBVSxDQUFDSCxpQkFBaUJEO2dCQUV2RVgsNEJBQ0VNLEtBQUlVLElBQUksQ0FBQyxBQUFDLHVCQUFxQyxPQUFmZCxnQkFBZSxpQkFDN0NJLEtBQUlDLE9BQU8sQ0FBQyxBQUFDLGdDQUE4QyxPQUFmTCxnQkFBZTtZQUNqRTtRQUNGO0lBQ0Y7SUFFQSxPQUFPRjtBQUNUO0FBRUEsU0FBU2Esd0JBQXdCUixjQUFjLEVBQUVKLGlCQUFpQjtJQUNoRSxJQUFNVyxrQkFBa0IsRUFBRSxFQUNwQkssMEJBQTBCWixnQkFDMUJhLDJCQUEyQjtRQUN6QkQ7S0FDRDtJQUVQLElBQUlFLGlDQUFpQ0QseUJBQXlCRSxNQUFNO0lBRXBFLE1BQU9ELGlDQUFpQyxFQUFHO1FBQ3pDLElBQU1GLDJCQUEwQkMseUJBQXlCRyxLQUFLLElBQ3hEaEIsbUJBQWlCWSwwQkFBMEIsR0FBRztRQUVwREwsZ0JBQWdCVSxJQUFJLENBQUNqQjtRQUVyQixJQUFNa0IsZUFBZWxCLGlCQUFlbUIsZUFBZTtRQUVuREQsYUFBYUUsaUJBQWlCLENBQUMsU0FBQzNCO1lBQzlCLElBQU1JLGlCQUFpQkosV0FBV0ssT0FBTyxJQUNuQ0MsY0FBY0YsZ0JBQ2RHLG1CQUFpQkosaUJBQWlCLENBQUNHLFlBQVksRUFDL0NzQix3Q0FBd0NkLGdCQUFnQmUsUUFBUSxDQUFDdEIsbUJBQ2pFdUIsaURBQWlEVix5QkFBeUJTLFFBQVEsQ0FBQ3RCO1lBRXpGLElBQUksQ0FBQ3FCLHlDQUF5QyxDQUFDRSxnREFBZ0Q7Z0JBQzdGLElBQU1YLDBCQUEwQlosa0JBQWdCLEdBQUc7Z0JBRW5EYSx5QkFBeUJJLElBQUksQ0FBQ0w7WUFDaEM7UUFDRjtRQUVBRSxpQ0FBaUNELHlCQUF5QkUsTUFBTTtJQUNsRTtJQUVBLE9BQU9SO0FBQ1Q7QUFFQSxTQUFTRixvQ0FBb0NaLFVBQVUsRUFBRU8sY0FBYyxFQUFFTixPQUFPO0lBQzlFLElBQU13QixlQUFlbEIsZUFBZW1CLGVBQWUsSUFDN0NmLHVDQUF1Q2MsYUFBYU0sZUFBZSxDQUFDLFNBQUMvQjtRQUNuRSxJQUFNRSw0QkFBNEJILHlCQUF5QkMsWUFBWUM7UUFFdkUsSUFBSUMsMkJBQTJCO1lBQzdCLE9BQU87UUFDVDtJQUNGO0lBRU4sT0FBT1M7QUFDVCJ9
@@ -1,160 +0,0 @@
1
- "use strict";
2
-
3
- import { last } from "../utilities/array";
4
-
5
- export default function createReleaseContext(dependency, dependentNames, context, callback) {
6
- const { log, releaseContextMap } = context,
7
- dependencyName = dependency.getName(),
8
- dependencyString = dependency.asString(),
9
- releaseName = dependencyName, ///
10
- releaseContext = releaseContextMap[releaseName] || null;
11
-
12
- log.debug(`Creating the '${releaseName}' context given the '${dependencyString}' dependency...`);
13
-
14
- if (releaseContext !== null) {
15
- const error = null;
16
-
17
- log.debug(`...already created the '${releaseName}' context.`);
18
-
19
- callback(error);
20
-
21
- return;
22
- }
23
-
24
- const { releaseContextFromDependency } = context;
25
-
26
- releaseContextFromDependency(dependency, context, (error, releaseContext) => {
27
- if (error) {
28
- callback(error);
29
-
30
- return;
31
- }
32
-
33
- const releaseContextCreated = checkReleaseContextCreated(releaseContext, dependency, context);
34
-
35
- if (!releaseContextCreated) {
36
- const error = null;
37
-
38
- callback(error);
39
-
40
- return;
41
- }
42
-
43
- const releaseMatchesDependency = checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context);
44
-
45
- if (!releaseMatchesDependency) {
46
- const error = null;
47
-
48
- callback(error);
49
-
50
- return;
51
- }
52
-
53
- releaseContextMap[releaseName] = releaseContext;
54
-
55
- log.info(`...created the '${releaseName}' context.`);
56
-
57
- createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context, (error) => {
58
- if (error) {
59
- callback(error);
60
-
61
- return;
62
- }
63
-
64
- callback(error);
65
- });
66
- }, context);
67
- }
68
-
69
- function checkReleaseContextCreated(releaseContext, dependency, context) {
70
- const releaseContextCreated = (releaseContext !== null);
71
-
72
- if (!releaseContextCreated) {
73
- const { log } = context,
74
- dependencyName = dependency.getName(),
75
- releaseName = dependencyName; ///
76
-
77
- log.warning(`The '${releaseName}' context could not be created. Perhaps the 'meta.json' file is missing or invalid. Or there could be a dependency mismatch.`);
78
- }
79
-
80
- return releaseContextCreated;
81
- }
82
-
83
- function checkCyclicDependencyExists(dependency, dependentNames, context) {
84
- const dependencyName = dependency.getName(),
85
- dependentNamesIncludesDependencyName = dependentNames.includes(dependencyName),
86
- cyclicDependencyExists = dependentNamesIncludesDependencyName; ///
87
-
88
- if (cyclicDependencyExists) {
89
- const { log } = context,
90
- firstDependentName = first(dependentNames),
91
- dependencyNames = [ ///
92
- ...dependentNames,
93
- firstDependentName
94
- ],
95
- dependencyNamesString = dependencyNames.join(`' -> '`);
96
-
97
- log.warning(`There is a cyclic dependency: '${dependencyNamesString}'.`);
98
- }
99
-
100
- return cyclicDependencyExists;
101
- }
102
-
103
- function checkReleaseMatchesDependency(releaseContext, dependency, dependentNames, context) {
104
- let releaseMatchesDependency = true;
105
-
106
- const entries = releaseContext.getEntries(),
107
- shortenedVersion = dependency.getShortedVersion();
108
-
109
- if (shortenedVersion !== null) {
110
- const entriesMatchShortenedVersion = entries.matchShortenedVersion(shortenedVersion);
111
-
112
- if (!entriesMatchShortenedVersion) {
113
- const { log } = context,
114
- version = releaseContext.getVersion(),
115
- lastDependentName = last(dependentNames),
116
- dependentName = lastDependentName, ///
117
- versionString = version.toString(),
118
- dependencyString = dependency.asString();
119
-
120
- log.warning(`Version mismatch: The '${dependentName}' dependent requires the '${dependencyString}' dependency but a context with version '${versionString}' was provided.`);
121
-
122
- releaseMatchesDependency = false;
123
- }
124
- }
125
-
126
- return releaseMatchesDependency;
127
- }
128
-
129
- function createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context, callback) {
130
- const dependencyName = dependency.getName(),
131
- dependencies = releaseContext.getDependencies();
132
-
133
- dependentNames = [ ...dependentNames, dependencyName ]; ///
134
-
135
- dependencies.asynchronousForEachDependency((dependency, next, done) => {
136
- const cyclicDependencyExists = checkCyclicDependencyExists(dependency, dependentNames);
137
-
138
- if (cyclicDependencyExists) {
139
- const error = null;
140
-
141
- callback(error);
142
-
143
- return;
144
- }
145
-
146
- createReleaseContext(dependency, dependentNames, context, (error) => {
147
- if (error) {
148
- callback(error);
149
-
150
- return;
151
- }
152
-
153
- next();
154
- });
155
- }, () => {
156
- const error = null;
157
-
158
- callback(error);
159
- });
160
- }
@@ -1,87 +0,0 @@
1
- "use strict";
2
-
3
- export default function initialiseReleaseContext(dependency, context) {
4
- let releaseContextInitialised = false;
5
-
6
- const { releaseContextMap } = context,
7
- dependencyName = dependency.getName(),
8
- releaseName = dependencyName, ///
9
- releaseContext = releaseContextMap[releaseName] || null;
10
-
11
- if (releaseContext === null) {
12
- const { log } = context;
13
-
14
- log.warning(`Unable to initialise the '${dependencyName}' context because it has not been created.`);
15
- } else {
16
- releaseContextInitialised = releaseContext.isInitialised();
17
-
18
- if (!releaseContextInitialised) {
19
- const dependencyReleaseContextsInitialised = initialiseDependencyReleaseContexts(dependency, releaseContext, context);
20
-
21
- if (dependencyReleaseContextsInitialised) {
22
- const { log, verbose } = context,
23
- releaseContexts = retrieveReleaseContexts(releaseContext, releaseContextMap);
24
-
25
- log.debug(`Initialising the '${dependencyName}' context...`);
26
-
27
- releaseContextInitialised = releaseContext.initialise(releaseContexts, verbose);
28
-
29
- releaseContextInitialised ?
30
- log.info(`...initialised the '${dependencyName}' context.`) :
31
- log.warning(`...unable to initialise the '${dependencyName}' context.`);
32
- }
33
- }
34
- }
35
-
36
- return releaseContextInitialised;
37
- }
38
-
39
- function retrieveReleaseContexts(releaseContext, releaseContextMap) {
40
- const releaseContexts = [],
41
- remainingReleaseContext = releaseContext, ///
42
- remainingReleaseContexts = [
43
- remainingReleaseContext
44
- ];
45
-
46
- let remainingReleaseContextsLength = remainingReleaseContexts.length;
47
-
48
- while (remainingReleaseContextsLength > 0) {
49
- const remainingReleaseContext = remainingReleaseContexts.shift(),
50
- releaseContext = remainingReleaseContext; ///
51
-
52
- releaseContexts.push(releaseContext);
53
-
54
- const dependencies = releaseContext.getDependencies();
55
-
56
- dependencies.forEachDependency((dependency) => {
57
- const dependencyName = dependency.getName(),
58
- releaseName = dependencyName, ///
59
- releaseContext = releaseContextMap[releaseName],
60
- releaseContextsIncludesReleaseContext = releaseContexts.includes(releaseContext),
61
- remainingReleaseContextsIncludesReleaseContext = remainingReleaseContexts.includes(releaseContext);
62
-
63
- if (!releaseContextsIncludesReleaseContext && !remainingReleaseContextsIncludesReleaseContext) {
64
- const remainingReleaseContext = releaseContext; ///
65
-
66
- remainingReleaseContexts.push(remainingReleaseContext);
67
- }
68
- });
69
-
70
- remainingReleaseContextsLength = remainingReleaseContexts.length;
71
- }
72
-
73
- return releaseContexts;
74
- }
75
-
76
- function initialiseDependencyReleaseContexts(dependency, releaseContext, context) {
77
- const dependencies = releaseContext.getDependencies(),
78
- dependencyReleaseContextsInitialised = dependencies.everyDependency((dependency) => { ///
79
- const releaseContextInitialised = initialiseReleaseContext(dependency, context);
80
-
81
- if (releaseContextInitialised) {
82
- return true;
83
- }
84
- });
85
-
86
- return dependencyReleaseContextsInitialised;
87
- }