occam-verify-cli 0.0.959 → 0.0.960
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.
- package/bin/action/verify.js +16 -5
- package/bin/utilities/releaseContext.js +5 -8
- package/lib/context/file.js +38 -14
- package/lib/context/release.js +82 -52
- package/lib/frame.js +3 -3
- package/lib/index.js +5 -5
- package/lib/metavariable.js +9 -9
- package/lib/proofStep.js +15 -15
- package/lib/releaseContext/create.js +8 -9
- package/lib/releaseContext/initialise.js +67 -0
- package/lib/rule.js +5 -5
- package/lib/substitution/statementForMetavariable.js +8 -8
- package/lib/substitution/termForVariable.js +6 -6
- package/lib/substitution.js +7 -7
- package/lib/substitutions.js +7 -7
- package/lib/topLevelAssertion.js +5 -5
- package/lib/unifier/equality.js +7 -7
- package/lib/unifier/intrinsicLevel.js +4 -4
- package/lib/unifier/metaLevel.js +10 -10
- package/lib/unifier/statementWithCombinator.js +147 -0
- package/lib/unifier/{termAgainstConstructor.js → termWithConstructor.js} +17 -17
- package/lib/unify/conclusionWithStatement.js +34 -0
- package/lib/unify/consequentWithStatement.js +34 -0
- package/lib/unify/metavariableWithStatement.js +74 -0
- package/lib/unify/premiseWithProofStep.js +41 -0
- package/lib/unify/premisesWithProofSteps.js +31 -0
- package/lib/unify/statementAtainstStatement.js +6 -6
- package/lib/unify/statementWithMetaType.js +48 -0
- package/lib/unify/suppositionWithProffStep.js +41 -0
- package/lib/unify/suppositionsWithProofSteps.js +31 -0
- package/lib/unify/termWithTerm.js +21 -0
- package/lib/unify/termWithType.js +32 -0
- package/lib/unify/variableWithTerm.js +54 -0
- package/lib/verify/error.js +2 -2
- package/lib/verify/judgement.js +3 -3
- package/lib/verify/metavariable.js +4 -4
- package/lib/verify/statement/qualified.js +51 -51
- package/lib/verify/statement.js +18 -18
- package/lib/verify/statementAsCombinator.js +2 -2
- package/lib/verify/term.js +25 -25
- package/package.json +1 -1
- package/src/context/file.js +42 -17
- package/src/context/release.js +84 -45
- package/src/frame.js +2 -2
- package/src/index.js +1 -1
- package/src/metavariable.js +6 -6
- package/src/proofStep.js +14 -14
- package/src/releaseContext/create.js +8 -16
- package/src/releaseContext/{verify.js → initialise.js} +32 -23
- package/src/rule.js +4 -4
- package/src/substitution/statementForMetavariable.js +7 -7
- package/src/substitution/termForVariable.js +4 -4
- package/src/substitution.js +5 -5
- package/src/substitutions.js +5 -5
- package/src/topLevelAssertion.js +4 -4
- package/src/unifier/equality.js +6 -6
- package/src/unifier/intrinsicLevel.js +3 -3
- package/src/unifier/metaLevel.js +9 -9
- package/src/unifier/{statementAgainstCombinator.js → statementWithCombinator.js} +12 -12
- package/src/unifier/{termAgainstConstructor.js → termWithConstructor.js} +9 -9
- package/src/unify/{conclusionAgainstStatement.js → conclusionWithStatement.js} +3 -3
- package/src/unify/{consequentAgainstStatement.js → consequentWithStatement.js} +3 -3
- package/src/unify/{metavariableAgainstStatement.js → metavariableWithStatement.js} +12 -12
- package/src/unify/{premiseAgainstProofStep.js → premiseWithProofStep.js} +5 -5
- package/src/unify/{premisesAgainstProofSteps.js → premisesWithProofSteps.js} +3 -3
- package/src/unify/statementAtainstStatement.js +4 -4
- package/src/unify/{statementAgainstMetaType.js → statementWithMetaType.js} +5 -5
- package/src/unify/{suppositionAgainstProofStep.js → suppositionWithProffStep.js} +5 -5
- package/src/unify/{suppositionsAgainstProofSteps.js → suppositionsWithProofSteps.js} +3 -3
- package/src/unify/{termAgainstTerm.js → termWithTerm.js} +4 -4
- package/src/unify/{termAgainstType.js → termWithType.js} +4 -4
- package/src/unify/{variableAgainstTerm.js → variableWithTerm.js} +5 -5
- package/src/verify/error.js +1 -1
- package/src/verify/judgement.js +3 -3
- package/src/verify/metavariable.js +3 -3
- package/src/verify/statement/qualified.js +50 -50
- package/src/verify/statement.js +17 -17
- package/src/verify/statementAsCombinator.js +1 -1
- package/src/verify/term.js +24 -24
- package/lib/releaseContext/verify.js +0 -66
- package/lib/unifier/statementAgainstCombinator.js +0 -147
- package/lib/unify/conclusionAgainstStatement.js +0 -34
- package/lib/unify/consequentAgainstStatement.js +0 -34
- package/lib/unify/metavariableAgainstStatement.js +0 -74
- package/lib/unify/premiseAgainstProofStep.js +0 -41
- package/lib/unify/premisesAgainstProofSteps.js +0 -31
- package/lib/unify/statementAgainstMetaType.js +0 -48
- package/lib/unify/suppositionAgainstProofStep.js +0 -41
- package/lib/unify/suppositionsAgainstProofSteps.js +0 -31
- package/lib/unify/termAgainstTerm.js +0 -21
- package/lib/unify/termAgainstType.js +0 -32
- package/lib/unify/variableAgainstTerm.js +0 -54
package/lib/verify/term.js
CHANGED
|
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
|
|
12
12
|
var _term = /*#__PURE__*/ _interop_require_default(require("../term"));
|
|
13
13
|
var _bracketed = /*#__PURE__*/ _interop_require_default(require("../constructor/bracketed"));
|
|
14
|
-
var
|
|
14
|
+
var _termWithConstructor = /*#__PURE__*/ _interop_require_default(require("../unifier/termWithConstructor"));
|
|
15
15
|
var _query = require("../utilities/query");
|
|
16
16
|
function _interop_require_default(obj) {
|
|
17
17
|
return obj && obj.__esModule ? obj : {
|
|
@@ -25,8 +25,8 @@ function verifyTerm(termNode, terms, localContext, verifyAhead) {
|
|
|
25
25
|
localContext.trace("Verifying the '".concat(termString, "' term..."), termNode);
|
|
26
26
|
var verifyTermFunctions = [
|
|
27
27
|
verifyTermAsVariable,
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
unifyTermWithConstructors,
|
|
29
|
+
unifyTermWithBracketedConstructor
|
|
30
30
|
];
|
|
31
31
|
termVerified = verifyTermFunctions.some(function(verifyTermFunction) {
|
|
32
32
|
var termVerified = verifyTermFunction(termNode, terms, localContext, verifyAhead);
|
|
@@ -64,25 +64,25 @@ function verifyTermAsVariable(termNode, terms, localContext, verifyAhead) {
|
|
|
64
64
|
}
|
|
65
65
|
return termVerifiedAsVariable;
|
|
66
66
|
}
|
|
67
|
-
function
|
|
68
|
-
var
|
|
67
|
+
function unifyTermWithConstructors(termNode, terms, localContext, verifyAhead) {
|
|
68
|
+
var termUnifiedWithConstructors = false;
|
|
69
69
|
var variableNode = variableNodeQuery(termNode);
|
|
70
70
|
if (variableNode === null) {
|
|
71
71
|
var constructors = localContext.getConstructors();
|
|
72
|
-
|
|
73
|
-
var
|
|
74
|
-
if (
|
|
72
|
+
termUnifiedWithConstructors = constructors.some(function(constructor) {
|
|
73
|
+
var termUnifiedWithConstructor = unifyTermWithConstructor(termNode, terms, constructor, localContext, verifyAhead);
|
|
74
|
+
if (termUnifiedWithConstructor) {
|
|
75
75
|
return true;
|
|
76
76
|
}
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
|
-
return
|
|
79
|
+
return termUnifiedWithConstructors;
|
|
80
80
|
}
|
|
81
|
-
function
|
|
82
|
-
var
|
|
81
|
+
function unifyTermWithBracketedConstructor(termNode, terms, localContext, verifyAhead) {
|
|
82
|
+
var termUnifiedWithBracketedConstructor;
|
|
83
83
|
var termString = localContext.nodeAsString(termNode), bracketedTerms = [];
|
|
84
|
-
localContext.trace("Unifying the '".concat(termString, "' term
|
|
85
|
-
|
|
84
|
+
localContext.trace("Unifying the '".concat(termString, "' term with the bracketed constructor..."), termNode);
|
|
85
|
+
termUnifiedWithBracketedConstructor = unifyTermWithConstructor(termNode, bracketedTerms, _bracketed.default, localContext, function() {
|
|
86
86
|
var verifiedAhead;
|
|
87
87
|
var bracketedTermNode = termNode; ///
|
|
88
88
|
termNode = termNodeQuery(bracketedTermNode); ///
|
|
@@ -90,28 +90,28 @@ function unifyTermAgainstBracketedConstructor(termNode, terms, localContext, ver
|
|
|
90
90
|
verifiedAhead = termVVerified; ///
|
|
91
91
|
return verifiedAhead;
|
|
92
92
|
});
|
|
93
|
-
if (
|
|
94
|
-
localContext.debug("...unified the '".concat(termString, "' term
|
|
93
|
+
if (termUnifiedWithBracketedConstructor) {
|
|
94
|
+
localContext.debug("...unified the '".concat(termString, "' term with the bracketed constructor."), termNode);
|
|
95
95
|
}
|
|
96
|
-
return
|
|
96
|
+
return termUnifiedWithBracketedConstructor;
|
|
97
97
|
}
|
|
98
|
-
function
|
|
99
|
-
var
|
|
98
|
+
function unifyTermWithConstructor(termNode, terms, constructor, localContext, verifyAhead) {
|
|
99
|
+
var termUnifiedWithConstructor = false;
|
|
100
100
|
var termString = localContext.nodeAsString(termNode), constructorString = constructor.getString(), constructorTermNode = constructor.getTermNode();
|
|
101
|
-
localContext.trace("Unifying the '".concat(termString, "' term
|
|
102
|
-
var termNodeA = termNode, constructorTermNodeB = constructorTermNode, unified =
|
|
101
|
+
localContext.trace("Unifying the '".concat(termString, "' term with the '").concat(constructorString, "' constructor..."), termNode);
|
|
102
|
+
var termNodeA = termNode, constructorTermNodeB = constructorTermNode, unified = _termWithConstructor.default.unify(termNodeA, constructorTermNodeB, localContext);
|
|
103
103
|
if (unified) {
|
|
104
104
|
var verifiedAhead;
|
|
105
105
|
var type = constructor.getType(), term = _term.default.fromTermNodeAndType(termNode, type);
|
|
106
106
|
terms.push(term);
|
|
107
107
|
verifiedAhead = verifyAhead();
|
|
108
108
|
terms.pop();
|
|
109
|
-
|
|
109
|
+
termUnifiedWithConstructor = verifiedAhead; ///
|
|
110
110
|
}
|
|
111
|
-
if (
|
|
112
|
-
localContext.debug("...unified the '".concat(termString, "' term
|
|
111
|
+
if (termUnifiedWithConstructor) {
|
|
112
|
+
localContext.debug("...unified the '".concat(termString, "' term with the '").concat(constructorString, "' constructor."), termNode);
|
|
113
113
|
}
|
|
114
|
-
return
|
|
114
|
+
return termUnifiedWithConstructor;
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgYnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL2NvbnN0cnVjdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHRlcm1BZ2FpbnN0Q29uc3RydWN0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3Rlcm1BZ2FpbnN0Q29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vYXJndW1lbnQvdGVybVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpO1xuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5VGVybUZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlUZXJtQXNWYXJpYWJsZSxcbiAgICB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzLFxuICAgIHVuaWZ5VGVybUFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvclxuICBdO1xuXG4gIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm1GdW5jdGlvbnMuc29tZSgodmVyaWZ5VGVybUZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUZ1bmN0aW9uKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgdmVyaWZ5VGVybVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHZlcmlmeVRlcm07XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgICBjb25zdCB2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgY29uc3QgdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGxvY2FsQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTtcblxuICAgIHRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgY29uc3QgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgYnJhY2tldGVkVGVybXMgPSBbXTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgdGVybVVuaWZpZWRBZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIGJyYWNrZXRlZFRlcm1zLCBicmFja2V0ZWRDb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShicmFja2V0ZWRUZXJtTm9kZSk7IC8vL1xuXG4gICAgY29uc3QgdGVybVZWZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB0ZXJtVlZlcmlmaWVkOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgfSk7XG5cbiAgaWYgKHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSksXG4gICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gY29uc3RydWN0b3IuZ2V0U3RyaW5nKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3Rvci5nZXRUZXJtTm9kZSgpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFnYWluc3QgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdGVybU5vZGVBID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZUIgPSBjb25zdHJ1Y3RvclRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHVuaWZpZWQgPSB0ZXJtQWdhaW5zdENvbnN0cnVjdG9yVW5pZmllci51bmlmeSh0ZXJtTm9kZUEsIGNvbnN0cnVjdG9yVGVybU5vZGVCLCBsb2NhbENvbnRleHQpO1xuXG4gIGlmICh1bmlmaWVkKSB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgdGVybXMucG9wKCk7XG5cbiAgICB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvciA9IHZlcmlmaWVkQWhlYWQ7ICAvLy9cbiAgfVxuXG4gIGlmICh0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYWdhaW5zdCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3I7XG59XG5cbiJdLCJuYW1lcyI6WyJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ2ZXJpZnlUZXJtIiwidGVybU5vZGUiLCJ0ZXJtcyIsImxvY2FsQ29udGV4dCIsInZlcmlmeUFoZWFkIiwidGVybVZlcmlmaWVkIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5VGVybUZ1bmN0aW9ucyIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwidW5pZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyIsInVuaWZ5VGVybUFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvciIsInNvbWUiLCJ2ZXJpZnlUZXJtRnVuY3Rpb24iLCJkZWJ1ZyIsIk9iamVjdCIsImFzc2lnbiIsInNoaW0iLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSIsInZlcmlmaWVkQWhlYWQiLCJ0eXBlIiwiZ2V0VHlwZSIsInRlcm0iLCJUZXJtIiwiZnJvbVRlcm1Ob2RlQW5kVHlwZSIsInB1c2giLCJwb3AiLCJ0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yIiwidW5pZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yIiwidGVybVVuaWZpZWRBZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRUZXJtcyIsImJyYWNrZXRlZENvbnN0cnVjdG9yIiwiYnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtVlZlcmlmaWVkIiwiY29uc3RydWN0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJ0ZXJtTm9kZUEiLCJjb25zdHJ1Y3RvclRlcm1Ob2RlQiIsInVuaWZpZWQiLCJ0ZXJtQWdhaW5zdENvbnN0cnVjdG9yVW5pZmllciIsInVuaWZ5Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE0Q0E7OztlQUFBOzs7MkRBMUNpQjsyREFDQTtnRUFDZ0I7NkVBQ1M7cUJBRWhCOzs7Ozs7QUFFMUIsSUFBTUEsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLHdCQUMxQkMsb0JBQW9CRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXBDLFNBQVNFLFdBQVdDLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxZQUFZLEVBQUVDLFdBQVc7SUFDNUQsSUFBSUM7SUFFSixJQUFNQyxhQUFhSCxhQUFhSSxZQUFZLENBQUNOO0lBRTdDRSxhQUFhSyxLQUFLLENBQUMsQUFBQyxrQkFBNEIsT0FBWEYsWUFBVyxjQUFZTDtJQUU1RCxJQUFNUSxzQkFBc0I7UUFDMUJDO1FBQ0FDO1FBQ0FDO0tBQ0Q7SUFFRFAsZUFBZUksb0JBQW9CSSxJQUFJLENBQUMsU0FBQ0M7UUFDdkMsSUFBTVQsZUFBZVMsbUJB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
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgYnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL2NvbnN0cnVjdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHRlcm1XaXRoQ29uc3RydWN0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3Rlcm1XaXRoQ29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vYXJndW1lbnQvdGVybVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpO1xuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5VGVybUZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlUZXJtQXNWYXJpYWJsZSxcbiAgICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzLFxuICAgIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvclxuICBdO1xuXG4gIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm1GdW5jdGlvbnMuc29tZSgodmVyaWZ5VGVybUZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUZ1bmN0aW9uKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgdmVyaWZ5VGVybVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHZlcmlmeVRlcm07XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgICBjb25zdCB2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgY29uc3QgdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvcnModGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnMgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGxvY2FsQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTtcblxuICAgIHRlcm1VbmlmaWVkV2l0aENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgY29uc3QgdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgYnJhY2tldGVkVGVybXMgPSBbXTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgdGVybVVuaWZpZWRXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIGJyYWNrZXRlZFRlcm1zLCBicmFja2V0ZWRDb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShicmFja2V0ZWRUZXJtTm9kZSk7IC8vL1xuXG4gICAgY29uc3QgdGVybVZWZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB0ZXJtVlZlcmlmaWVkOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgfSk7XG5cbiAgaWYgKHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3IgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSksXG4gICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gY29uc3RydWN0b3IuZ2V0U3RyaW5nKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3Rvci5nZXRUZXJtTm9kZSgpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdGVybU5vZGVBID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZUIgPSBjb25zdHJ1Y3RvclRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHVuaWZpZWQgPSB0ZXJtV2l0aENvbnN0cnVjdG9yVW5pZmllci51bmlmeSh0ZXJtTm9kZUEsIGNvbnN0cnVjdG9yVGVybU5vZGVCLCBsb2NhbENvbnRleHQpO1xuXG4gIGlmICh1bmlmaWVkKSB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgdGVybXMucG9wKCk7XG5cbiAgICB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvciA9IHZlcmlmaWVkQWhlYWQ7ICAvLy9cbiAgfVxuXG4gIGlmICh0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3Rvcikge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3I7XG59XG5cbiJdLCJuYW1lcyI6WyJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ2ZXJpZnlUZXJtIiwidGVybU5vZGUiLCJ0ZXJtcyIsImxvY2FsQ29udGV4dCIsInZlcmlmeUFoZWFkIiwidGVybVZlcmlmaWVkIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5VGVybUZ1bmN0aW9ucyIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyIsInVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvciIsInNvbWUiLCJ2ZXJpZnlUZXJtRnVuY3Rpb24iLCJkZWJ1ZyIsIk9iamVjdCIsImFzc2lnbiIsInNoaW0iLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSIsInZlcmlmaWVkQWhlYWQiLCJ0eXBlIiwiZ2V0VHlwZSIsInRlcm0iLCJUZXJtIiwiZnJvbVRlcm1Ob2RlQW5kVHlwZSIsInB1c2giLCJwb3AiLCJ0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVkV2l0aENvbnN0cnVjdG9yIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwidGVybVVuaWZpZWRXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRUZXJtcyIsImJyYWNrZXRlZENvbnN0cnVjdG9yIiwiYnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtVlZlcmlmaWVkIiwiY29uc3RydWN0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJ0ZXJtTm9kZUEiLCJjb25zdHJ1Y3RvclRlcm1Ob2RlQiIsInVuaWZpZWQiLCJ0ZXJtV2l0aENvbnN0cnVjdG9yVW5pZmllciIsInVuaWZ5Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE0Q0E7OztlQUFBOzs7MkRBMUNpQjsyREFDQTtnRUFDZ0I7MEVBQ007cUJBRWI7Ozs7OztBQUUxQixJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsd0JBQzFCQyxvQkFBb0JELElBQUFBLGdCQUFTLEVBQUM7QUFFcEMsU0FBU0UsV0FBV0MsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLFlBQVksRUFBRUMsV0FBVztJQUM1RCxJQUFJQztJQUVKLElBQU1DLGFBQWFILGFBQWFJLFlBQVksQ0FBQ047SUFFN0NFLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUE0QixPQUFYRixZQUFXLGNBQVlMO0lBRTVELElBQU1RLHNCQUFzQjtRQUMxQkM7UUFDQUM7UUFDQUM7S0FDRDtJQUVEUCxlQUFlSSxvQkFBb0JJLElBQUksQ0FBQyxTQUFDQztRQUN2QyxJQUFNVCxlQUFlUyxtQkFBbUJiLFVBQVVDLE9BQU9DLGNBQWNDO1FBRXZFLElBQUlDLGNBQWM7WUFDaEIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxJQUFJQSxjQUFjO1FBQ2hCRixhQUFhWSxLQUFLLENBQUMsQUFB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
|
package/package.json
CHANGED
package/src/context/file.js
CHANGED
|
@@ -620,6 +620,45 @@ export default class FileContext {
|
|
|
620
620
|
|
|
621
621
|
fatal(message, node) { this.releaseContext.fatal(message, node, this.tokens, this.filePath); }
|
|
622
622
|
|
|
623
|
+
reset() {
|
|
624
|
+
this.types = [];
|
|
625
|
+
this.rules = [];
|
|
626
|
+
this.axioms = [];
|
|
627
|
+
this.lemmas = [];
|
|
628
|
+
this.theorems = [];
|
|
629
|
+
this.variables = [];
|
|
630
|
+
this.metaLemmas = [];
|
|
631
|
+
this.conjectures = [];
|
|
632
|
+
this.combinators = [];
|
|
633
|
+
this.constructors = [];
|
|
634
|
+
this.metatheorems = [];
|
|
635
|
+
this.metavariables = [];
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
verify() {
|
|
639
|
+
let verified = false;
|
|
640
|
+
|
|
641
|
+
if (this.tokens === null) {
|
|
642
|
+
const lexer = this.getLexer(),
|
|
643
|
+
parser = this.getParser(),
|
|
644
|
+
content = this.fileContent; ///
|
|
645
|
+
|
|
646
|
+
this.tokens = lexer.tokenise(content);
|
|
647
|
+
|
|
648
|
+
this.node = parser.parse(this.tokens);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
if (this.node !== null) {
|
|
652
|
+
this.reset();
|
|
653
|
+
|
|
654
|
+
const fileContext = this; ///
|
|
655
|
+
|
|
656
|
+
verified = topLevelVerifier.verify(this.node, fileContext);
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
return verified;
|
|
660
|
+
}
|
|
661
|
+
|
|
623
662
|
toJSON() {
|
|
624
663
|
const filePath = this.filePath,
|
|
625
664
|
fileContent = this.fileContent,
|
|
@@ -631,23 +670,9 @@ export default class FileContext {
|
|
|
631
670
|
return json;
|
|
632
671
|
}
|
|
633
672
|
|
|
634
|
-
|
|
635
|
-
const
|
|
636
|
-
|
|
637
|
-
content = this.fileContent, ///
|
|
638
|
-
fileContext = this;
|
|
639
|
-
|
|
640
|
-
this.tokens = lexer.tokenise(content);
|
|
641
|
-
|
|
642
|
-
this.node = parser.parse(this.tokens);
|
|
643
|
-
|
|
644
|
-
const verified = topLevelVerifier.verify(this.node, fileContext);
|
|
645
|
-
|
|
646
|
-
return verified;
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
static fromJSONAndReleaseContext(json, releaseContext) {
|
|
650
|
-
const { fileContent, filePath } = json,
|
|
673
|
+
static fromFileAndReleaseContext(file, releaseContext) {
|
|
674
|
+
const fileContent = file.getContent(),
|
|
675
|
+
filePath = file.getPath(),
|
|
651
676
|
tokens = null,
|
|
652
677
|
node = null,
|
|
653
678
|
types = [],
|
package/src/context/release.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { filePathUtilities } from "occam-entities";
|
|
3
4
|
import { lexersUtilities, parsersUtilities } from "occam-custom-grammars";
|
|
4
5
|
|
|
5
6
|
import FileContext from "./file";
|
|
@@ -8,18 +9,20 @@ import { objectType } from "../type";
|
|
|
8
9
|
import { tail, push, leftDifference } from "../utilities/array";
|
|
9
10
|
import { customGrammarFromNameAndEntries, combinedCustomGrammarFromReleaseContexts } from "../utilities/customGrammar";
|
|
10
11
|
|
|
11
|
-
const {
|
|
12
|
+
const { isFilePathFlorenceFilePath } = filePathUtilities,
|
|
13
|
+
{ florenceLexerFromCombinedCustomGrammar } = lexersUtilities,
|
|
12
14
|
{ florenceParserFromCombinedCustomGrammar } = parsersUtilities;
|
|
13
15
|
|
|
14
16
|
export default class ReleaseContext {
|
|
15
|
-
constructor(log,
|
|
17
|
+
constructor(log, name, entries, released, lexer, parser, verified, initialised, fileContexts, customGrammar, loggingDisabled, dependencyReleaseContexts) {
|
|
16
18
|
this.log = log;
|
|
17
|
-
this.json = json;
|
|
18
19
|
this.name = name;
|
|
20
|
+
this.entries = entries;
|
|
21
|
+
this.released = released;
|
|
19
22
|
this.lexer = lexer;
|
|
20
23
|
this.parser = parser;
|
|
21
|
-
this.entries = entries;
|
|
22
24
|
this.verified = verified;
|
|
25
|
+
this.initialised = initialised;
|
|
23
26
|
this.fileContexts = fileContexts;
|
|
24
27
|
this.customGrammar = customGrammar;
|
|
25
28
|
this.loggingDisabled = loggingDisabled;
|
|
@@ -30,14 +33,18 @@ export default class ReleaseContext {
|
|
|
30
33
|
return log;
|
|
31
34
|
}
|
|
32
35
|
|
|
33
|
-
getJSON() {
|
|
34
|
-
return this.json;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
36
|
getName() {
|
|
38
37
|
return this.name;
|
|
39
38
|
}
|
|
40
39
|
|
|
40
|
+
getEntries() {
|
|
41
|
+
return this.entries;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
isReleased() {
|
|
45
|
+
return this.released;
|
|
46
|
+
}
|
|
47
|
+
|
|
41
48
|
getLexer() {
|
|
42
49
|
return this.lexer;
|
|
43
50
|
}
|
|
@@ -46,14 +53,14 @@ export default class ReleaseContext {
|
|
|
46
53
|
return this.parser;
|
|
47
54
|
}
|
|
48
55
|
|
|
49
|
-
getEntries() {
|
|
50
|
-
return this.entries;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
56
|
isVerified() {
|
|
54
57
|
return this.verified;
|
|
55
58
|
}
|
|
56
59
|
|
|
60
|
+
isInitialised() {
|
|
61
|
+
return this.initialised;
|
|
62
|
+
}
|
|
63
|
+
|
|
57
64
|
getFileContexts() {
|
|
58
65
|
return this.fileContexts;
|
|
59
66
|
}
|
|
@@ -74,14 +81,18 @@ export default class ReleaseContext {
|
|
|
74
81
|
this.log = log;
|
|
75
82
|
}
|
|
76
83
|
|
|
77
|
-
setJSON(json) {
|
|
78
|
-
this.json = json;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
84
|
setName(name) {
|
|
82
85
|
this.name = name;
|
|
83
86
|
}
|
|
84
87
|
|
|
88
|
+
setEntries(entries) {
|
|
89
|
+
this.entries = entries;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
setReleased(released) {
|
|
93
|
+
this.released = released;
|
|
94
|
+
}
|
|
95
|
+
|
|
85
96
|
setLexer(lexer) {
|
|
86
97
|
this.lexer = lexer;
|
|
87
98
|
}
|
|
@@ -90,14 +101,14 @@ export default class ReleaseContext {
|
|
|
90
101
|
this.parser = parser;
|
|
91
102
|
}
|
|
92
103
|
|
|
93
|
-
setEntries(entries) {
|
|
94
|
-
this.entries = entries;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
104
|
setVerified(verified) {
|
|
98
105
|
this.verified = verified;
|
|
99
106
|
}
|
|
100
107
|
|
|
108
|
+
setInitialised(initialised) {
|
|
109
|
+
return this.initialised = initialised;
|
|
110
|
+
}
|
|
111
|
+
|
|
101
112
|
setFileContexts(fileContexts) {
|
|
102
113
|
this.fileContexts = fileContexts;
|
|
103
114
|
}
|
|
@@ -376,12 +387,6 @@ export default class ReleaseContext {
|
|
|
376
387
|
return type;
|
|
377
388
|
}
|
|
378
389
|
|
|
379
|
-
isReleased() {
|
|
380
|
-
const released = (this.json !== null);
|
|
381
|
-
|
|
382
|
-
return released;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
390
|
getReleaseName() {
|
|
386
391
|
const name = this.getName(),
|
|
387
392
|
releaseName = name; ///
|
|
@@ -459,7 +464,9 @@ export default class ReleaseContext {
|
|
|
459
464
|
this.log.fatal(message, node, tokens, filePath);
|
|
460
465
|
}
|
|
461
466
|
|
|
462
|
-
|
|
467
|
+
initialise(releaseContexts) {
|
|
468
|
+
let initialised;
|
|
469
|
+
|
|
463
470
|
const combinedCustomGrammar = combinedCustomGrammarFromReleaseContexts(releaseContexts),
|
|
464
471
|
florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar),
|
|
465
472
|
florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
@@ -468,21 +475,39 @@ export default class ReleaseContext {
|
|
|
468
475
|
|
|
469
476
|
this.parser = florenceParser; ///
|
|
470
477
|
|
|
471
|
-
this.dependencyReleaseContexts = tail(releaseContexts)
|
|
478
|
+
this.dependencyReleaseContexts = tail(releaseContexts);
|
|
472
479
|
|
|
473
|
-
if (this.
|
|
474
|
-
const
|
|
480
|
+
if (this.released) {
|
|
481
|
+
const verified = this.verify();
|
|
475
482
|
|
|
476
|
-
|
|
483
|
+
initialised = verified; ///
|
|
484
|
+
} else {
|
|
485
|
+
initialised = true;
|
|
486
|
+
}
|
|
477
487
|
|
|
478
|
-
|
|
488
|
+
this.initialised = initialised;
|
|
479
489
|
|
|
480
|
-
|
|
490
|
+
return initialised;
|
|
491
|
+
}
|
|
481
492
|
|
|
482
|
-
|
|
493
|
+
verify() {
|
|
494
|
+
let verified;
|
|
483
495
|
|
|
484
|
-
|
|
485
|
-
|
|
496
|
+
const releaseContext = this;
|
|
497
|
+
|
|
498
|
+
releaseContext.disableLogging();
|
|
499
|
+
|
|
500
|
+
this.fileContexts = fileContextsFromEntries(this.entries, releaseContext);
|
|
501
|
+
|
|
502
|
+
const fileContextsVerified = verifyFileContexts(this.fileContexts, releaseContext);
|
|
503
|
+
|
|
504
|
+
verified = fileContextsVerified; ///
|
|
505
|
+
|
|
506
|
+
releaseContext.enableLogging();
|
|
507
|
+
|
|
508
|
+
this.verified = verified;
|
|
509
|
+
|
|
510
|
+
return verified;
|
|
486
511
|
}
|
|
487
512
|
|
|
488
513
|
toJSON() {
|
|
@@ -496,21 +521,24 @@ export default class ReleaseContext {
|
|
|
496
521
|
return json;
|
|
497
522
|
}
|
|
498
523
|
|
|
499
|
-
static
|
|
524
|
+
static fromLogNameEntriesAndReleased(log, name, entries, released) {
|
|
500
525
|
const lexer = null,
|
|
501
526
|
parser = null,
|
|
502
527
|
verified = false,
|
|
528
|
+
initialised = false,
|
|
503
529
|
fileContexts = [],
|
|
504
530
|
customGrammar = customGrammarFromNameAndEntries(name, entries),
|
|
505
531
|
loggingDisabled = false,
|
|
506
532
|
dependencyReleaseContexts = null,
|
|
507
|
-
releaseContext = new ReleaseContext(log,
|
|
533
|
+
releaseContext = new ReleaseContext(log, name, entries, released, lexer, parser, verified, initialised, fileContexts, customGrammar, loggingDisabled, dependencyReleaseContexts);
|
|
508
534
|
|
|
509
535
|
return releaseContext;
|
|
510
536
|
}
|
|
511
537
|
}
|
|
512
538
|
|
|
513
539
|
function verifyFileContexts(fileContexts, releaseContext) {
|
|
540
|
+
let fileContextsVerified;
|
|
541
|
+
|
|
514
542
|
fileContexts = [ ///
|
|
515
543
|
...fileContexts
|
|
516
544
|
];
|
|
@@ -543,16 +571,27 @@ function verifyFileContexts(fileContexts, releaseContext) {
|
|
|
543
571
|
|
|
544
572
|
leftDifference(fileContexts, verifiedFileContexts);
|
|
545
573
|
}
|
|
574
|
+
|
|
575
|
+
const fileContextsLength = fileContexts.length;
|
|
576
|
+
|
|
577
|
+
fileContextsVerified = (fileContextsLength === 0);
|
|
578
|
+
|
|
579
|
+
return fileContextsVerified;
|
|
546
580
|
}
|
|
547
581
|
|
|
548
|
-
function
|
|
549
|
-
const
|
|
550
|
-
fileContexts = fileContextsJSON.map((fileContextJSON) => {
|
|
551
|
-
const json = fileContextJSON, ///
|
|
552
|
-
fileContext = FileContext.fromJSONAndReleaseContext(json, releaseContext);
|
|
582
|
+
function fileContextsFromEntries(entries, releaseContext) {
|
|
583
|
+
const fileContexts = [];
|
|
553
584
|
|
|
554
|
-
|
|
555
|
-
|
|
585
|
+
entries.forEachFile((file) => {
|
|
586
|
+
const filePath = file.getPath(),
|
|
587
|
+
filePathFlorenceFilePath = isFilePathFlorenceFilePath(filePath);
|
|
588
|
+
|
|
589
|
+
if (filePathFlorenceFilePath) {
|
|
590
|
+
const fileContext = FileContext.fromFileAndReleaseContext(file, releaseContext);
|
|
591
|
+
|
|
592
|
+
fileContexts.push(fileContext);
|
|
593
|
+
}
|
|
594
|
+
});
|
|
556
595
|
|
|
557
596
|
return fileContexts;
|
|
558
597
|
}
|
package/src/frame.js
CHANGED
|
@@ -38,9 +38,9 @@ export default class Frame {
|
|
|
38
38
|
|
|
39
39
|
unifySubstitution(substitution) {
|
|
40
40
|
const substitutionUnified = this.declarations.some((declaration) => {
|
|
41
|
-
const
|
|
41
|
+
const substitutionUnifiedWithDeclaration = declaration.unifySubstitution(substitution);
|
|
42
42
|
|
|
43
|
-
if (
|
|
43
|
+
if (substitutionUnifiedWithDeclaration) {
|
|
44
44
|
return true;
|
|
45
45
|
}
|
|
46
46
|
});
|
package/src/index.js
CHANGED
|
@@ -4,6 +4,6 @@ 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
6
|
export { default as createReleaseContext } from "./releaseContext/create";
|
|
7
|
-
export { default as verifyReleaseContext } from "./releaseContext/verify";
|
|
8
7
|
export { default as customGrammarUtilities } from "./utilities/customGrammar";
|
|
8
|
+
export { default as initialiseReleaseContext } from "./releaseContext/initialise";
|
|
9
9
|
|
package/src/metavariable.js
CHANGED
|
@@ -63,9 +63,9 @@ export default class Metavariable {
|
|
|
63
63
|
} else if ((termNode === null) && (this.termType === null)) {
|
|
64
64
|
matchesNode = true;
|
|
65
65
|
} else if ((termNode !== null) && (this.termType !== null)) {
|
|
66
|
-
const
|
|
66
|
+
const termUnifiedWithTermType = unifyTermWithTermType(termNode, this.termType, localContext);
|
|
67
67
|
|
|
68
|
-
matchesNode =
|
|
68
|
+
matchesNode = termUnifiedWithTermType; ///
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -90,8 +90,8 @@ export default class Metavariable {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
export function
|
|
94
|
-
let
|
|
93
|
+
export function unifyTermWithTermType(termNode, termType, localContext) {
|
|
94
|
+
let termUnifiedWithTermType;
|
|
95
95
|
|
|
96
96
|
const type = termType, ///
|
|
97
97
|
terms = [],
|
|
@@ -110,9 +110,9 @@ export function unifyTermAgainstTermType(termNode, termType, localContext) {
|
|
|
110
110
|
return verifiedAhead;
|
|
111
111
|
});
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
termUnifiedWithTermType = termVerified; ///
|
|
114
114
|
|
|
115
|
-
return
|
|
115
|
+
return termUnifiedWithTermType;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
function termTypeFromMetavariableNode(metavariableNode, fileContext) {
|
package/src/proofStep.js
CHANGED
|
@@ -21,23 +21,23 @@ export default class ProofStep {
|
|
|
21
21
|
let statementUnified = false;
|
|
22
22
|
|
|
23
23
|
if (this.statementNode !== null) {
|
|
24
|
-
let
|
|
24
|
+
let statementUnifiedWithStatement = false;
|
|
25
25
|
|
|
26
|
-
if (!
|
|
26
|
+
if (!statementUnifiedWithStatement) {
|
|
27
27
|
const statementNodeA = statementNode, ///
|
|
28
28
|
statementNodeB = this.statementNode; ///
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
statementUnifiedWithStatement = unifyStatementWithStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
if (!
|
|
33
|
+
if (!statementUnifiedWithStatement) {
|
|
34
34
|
const statementNodeA = statementNode, ///
|
|
35
35
|
statementNodeB = this.statementNode; ///
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
statementUnifiedWithStatement = unifyStatementWithStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
statementUnified =
|
|
40
|
+
statementUnified = statementUnifiedWithStatement; ///
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
return statementUnified;
|
|
@@ -58,13 +58,13 @@ export default class ProofStep {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
function
|
|
62
|
-
let
|
|
61
|
+
function unifyStatementWithStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB) {
|
|
62
|
+
let statementUnifiedWithStatement = false;
|
|
63
63
|
|
|
64
64
|
const statementStringA = localContextA.nodeAsString(statementNodeA),
|
|
65
65
|
statementStringB = localContextB.nodeAsString(statementNodeB);
|
|
66
66
|
|
|
67
|
-
localContextB.trace(`Unifying the '${statementStringB}' statement
|
|
67
|
+
localContextB.trace(`Unifying the '${statementStringB}' statement with the '${statementStringA}' statement...`, statementNodeB);
|
|
68
68
|
|
|
69
69
|
const substitutions = Substitutions.fromNothing(),
|
|
70
70
|
nodeA = statementNodeA, ///
|
|
@@ -72,14 +72,14 @@ function unifyStatementAgainstStatement(statementNodeA, statementNodeB, equivale
|
|
|
72
72
|
unified = intrinsicLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
73
73
|
|
|
74
74
|
if (unified) {
|
|
75
|
-
const
|
|
75
|
+
const substitutionsUnifiedWithEquivalences = substitutions.unifyWithEquivalences(equivalences, localContextA, localContextB);
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
statementUnifiedWithStatement = substitutionsUnifiedWithEquivalences; ///
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
if (
|
|
81
|
-
localContextB.debug(`...unified the '${statementStringB}' statement
|
|
80
|
+
if (statementUnifiedWithStatement) {
|
|
81
|
+
localContextB.debug(`...unified the '${statementStringB}' statement with the '${statementStringA}' statement.`, statementNodeB);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
return
|
|
84
|
+
return statementUnifiedWithStatement;
|
|
85
85
|
}
|
|
@@ -12,11 +12,9 @@ export default function createReleaseContext(dependency, dependentNames, context
|
|
|
12
12
|
log.debug(`Creating the '${releaseName}' context given the '${dependencyString}' dependency...`);
|
|
13
13
|
|
|
14
14
|
if (releaseContext !== null) {
|
|
15
|
-
const error = null
|
|
16
|
-
version = releaseContext.getVersion(),
|
|
17
|
-
versionString = version.toString();
|
|
15
|
+
const error = null;
|
|
18
16
|
|
|
19
|
-
log.debug(`...already created the '${releaseName}
|
|
17
|
+
log.debug(`...already created the '${releaseName}' context.`);
|
|
20
18
|
|
|
21
19
|
callback(error);
|
|
22
20
|
|
|
@@ -52,20 +50,17 @@ export default function createReleaseContext(dependency, dependentNames, context
|
|
|
52
50
|
return;
|
|
53
51
|
}
|
|
54
52
|
|
|
55
|
-
const version = releaseContext.getVersion(),
|
|
56
|
-
versionString = version.toString();
|
|
57
|
-
|
|
58
53
|
releaseContextMap[releaseName] = releaseContext;
|
|
59
54
|
|
|
60
|
-
|
|
55
|
+
log.info(`...created the '${releaseName}' context.`);
|
|
56
|
+
|
|
57
|
+
createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context, (error) => {
|
|
61
58
|
if (error) {
|
|
62
59
|
callback(error);
|
|
63
60
|
|
|
64
61
|
return;
|
|
65
62
|
}
|
|
66
63
|
|
|
67
|
-
log.info(`...created the '${releaseName}@${versionString}' context.`);
|
|
68
|
-
|
|
69
64
|
callback(error);
|
|
70
65
|
});
|
|
71
66
|
}, context);
|
|
@@ -122,7 +117,7 @@ function checkReleaseMatchesDependency(releaseContext, dependency, dependentName
|
|
|
122
117
|
versionString = version.toString(),
|
|
123
118
|
dependencyString = dependency.asString();
|
|
124
119
|
|
|
125
|
-
log.
|
|
120
|
+
log.warning(`Version mismatch: The '${dependentName}' dependent requires the '${dependencyString}' dependency but a context with version '${versionString}' was provided.`);
|
|
126
121
|
|
|
127
122
|
releaseMatchesDependency = false;
|
|
128
123
|
}
|
|
@@ -131,11 +126,8 @@ function checkReleaseMatchesDependency(releaseContext, dependency, dependentName
|
|
|
131
126
|
return releaseMatchesDependency;
|
|
132
127
|
}
|
|
133
128
|
|
|
134
|
-
function createDependencyReleaseContexts(dependency, dependentNames, context, callback) {
|
|
135
|
-
const
|
|
136
|
-
dependencyName = dependency.getName(),
|
|
137
|
-
releaseName = dependencyName, ///
|
|
138
|
-
releaseContext = releaseContextMap[releaseName],
|
|
129
|
+
function createDependencyReleaseContexts(dependency, releaseContext, dependentNames, context, callback) {
|
|
130
|
+
const dependencyName = dependency.getName(),
|
|
139
131
|
dependencies = releaseContext.getDependencies();
|
|
140
132
|
|
|
141
133
|
dependentNames = [ ...dependentNames, dependencyName ]; ///
|