occam-verify-cli 0.0.316 → 0.0.318

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.
Files changed (92) hide show
  1. package/bin/callbacks.js +27 -0
  2. package/bin/main.js +3 -5
  3. package/bin/messages.js +11 -0
  4. package/bin/utilities/logging.js +2 -10
  5. package/bin/utilities/release.js +68 -43
  6. package/lib/callbacks.js +68 -0
  7. package/lib/context/file.js +58 -81
  8. package/lib/context/metaproof.js +30 -118
  9. package/lib/context/proof.js +73 -137
  10. package/lib/context/release.js +81 -15
  11. package/lib/index.js +5 -1
  12. package/lib/mixins/callbacks.js +27 -0
  13. package/lib/mixins/file.js +23 -0
  14. package/lib/mixins/logging.js +39 -0
  15. package/lib/rule.js +3 -3
  16. package/lib/verify/IndicativeConditional.js +9 -5
  17. package/lib/verify/assertion/type.js +12 -10
  18. package/lib/verify/axiom.js +10 -14
  19. package/lib/verify/conclusion.js +5 -3
  20. package/lib/verify/conditinalInference.js +7 -5
  21. package/lib/verify/declaration/combinator.js +7 -3
  22. package/lib/verify/declaration/constructor.js +7 -3
  23. package/lib/verify/declaration/topLevel.js +11 -9
  24. package/lib/verify/declaration/type.js +8 -3
  25. package/lib/verify/declaration/variable.js +7 -3
  26. package/lib/verify/equality.js +8 -6
  27. package/lib/verify/file.js +7 -9
  28. package/lib/verify/label.js +6 -4
  29. package/lib/verify/labels.js +5 -4
  30. package/lib/verify/metaDerivation.js +21 -18
  31. package/lib/verify/metaproof.js +6 -4
  32. package/lib/verify/metastatement/qualified.js +7 -5
  33. package/lib/verify/metastatement/unqualified.js +7 -5
  34. package/lib/verify/premiseOrPremises.js +11 -12
  35. package/lib/verify/release.js +28 -18
  36. package/lib/verify/rule.js +11 -14
  37. package/lib/verify/statement/qualified.js +7 -3
  38. package/lib/verify/statement/unqualified.js +6 -4
  39. package/lib/verify/statement.js +8 -10
  40. package/lib/verify/statementAsCombinator.js +33 -36
  41. package/lib/verify/term.js +4 -2
  42. package/lib/verify/termAsConstructor.js +38 -39
  43. package/lib/verify/termAsVariable.js +4 -2
  44. package/lib/verify/type.js +18 -14
  45. package/lib/verify/unconditionalInference.js +5 -3
  46. package/lib/verify/variable.js +13 -10
  47. package/package.json +2 -2
  48. package/src/callbacks.js +27 -0
  49. package/src/context/file.js +62 -61
  50. package/src/context/metaproof.js +29 -44
  51. package/src/context/proof.js +51 -64
  52. package/src/context/release.js +33 -11
  53. package/src/index.js +1 -0
  54. package/src/mixins/callbacks.js +15 -0
  55. package/src/mixins/file.js +12 -0
  56. package/src/mixins/logging.js +24 -0
  57. package/src/rule.js +2 -2
  58. package/src/verify/IndicativeConditional.js +18 -9
  59. package/src/verify/assertion/type.js +15 -8
  60. package/src/verify/axiom.js +15 -17
  61. package/src/verify/conclusion.js +8 -2
  62. package/src/verify/conditinalInference.js +10 -4
  63. package/src/verify/declaration/combinator.js +12 -3
  64. package/src/verify/declaration/constructor.js +12 -3
  65. package/src/verify/declaration/topLevel.js +15 -9
  66. package/src/verify/declaration/type.js +14 -4
  67. package/src/verify/declaration/variable.js +12 -3
  68. package/src/verify/equality.js +11 -4
  69. package/src/verify/file.js +6 -8
  70. package/src/verify/label.js +9 -3
  71. package/src/verify/labels.js +5 -3
  72. package/src/verify/metaDerivation.js +26 -19
  73. package/src/verify/metaproof.js +9 -3
  74. package/src/verify/metastatement/qualified.js +10 -4
  75. package/src/verify/metastatement/unqualified.js +10 -4
  76. package/src/verify/premiseOrPremises.js +18 -14
  77. package/src/verify/release.js +45 -27
  78. package/src/verify/rule.js +15 -16
  79. package/src/verify/statement/qualified.js +12 -3
  80. package/src/verify/statement/unqualified.js +9 -3
  81. package/src/verify/statement.js +10 -9
  82. package/src/verify/statementAsCombinator.js +45 -46
  83. package/src/verify/term.js +7 -1
  84. package/src/verify/termAsConstructor.js +48 -45
  85. package/src/verify/termAsVariable.js +7 -1
  86. package/src/verify/type.js +25 -21
  87. package/src/verify/unconditionalInference.js +8 -2
  88. package/src/verify/variable.js +18 -11
  89. package/lib/mixins/log.js +0 -41
  90. package/lib/verify/supposition.js +0 -29
  91. package/src/mixins/log.js +0 -28
  92. package/src/verify/supposition.js +0 -22
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ const { Callbacks } = require("../lib/index");
4
+
5
+ const { HALT_MESSAGE, BEGIN_MESSAGE, COMPLETED_MESSAGE } = require("./messages");
6
+
7
+ function halt(filePath, leastLineIndex, greatestLineIndex) { message(HALT_MESSAGE, filePath, leastLineIndex, greatestLineIndex); } ///
8
+
9
+ function begin(filePath, leastLineIndex, greatestLineIndex) { message(BEGIN_MESSAGE, filePath, leastLineIndex, greatestLineIndex); } ///
10
+
11
+ function complete(filePath, leastLineIndex, greatestLineIndex) { message(COMPLETED_MESSAGE, filePath, leastLineIndex, greatestLineIndex); } ///
12
+
13
+ const callbacks = Callbacks.fromHaltBeginAndComplete(halt, begin, complete);
14
+
15
+ module.exports = callbacks;
16
+
17
+ function message(message, filePath, leastLineIndex, greatestLineIndex) {
18
+ if (leastLineIndex === greatestLineIndex) {
19
+ const lineIndex = leastLineIndex; ///
20
+
21
+ message = `'${filePath}' : [${lineIndex}] - ${message}`;
22
+ } else {
23
+ message = `'${filePath}' : [${leastLineIndex}-${greatestLineIndex}] - ${message}`;
24
+ }
25
+
26
+ console.log(message);
27
+ }
package/bin/main.js CHANGED
@@ -10,11 +10,9 @@ const { first } = arrayUtilities;
10
10
  function main(commands, options) {
11
11
  const firstCommand = first(commands),
12
12
  { name = firstCommand } = options, ///
13
- releaseContextMap = {};
14
-
15
- createReleaseContext(name, releaseContextMap);
16
-
17
- const releaseContext = releaseContextMap[name];
13
+ releaseContextMap = {},
14
+ shortenedVersion = null,
15
+ releaseContext = createReleaseContext(name, shortenedVersion, releaseContextMap);
18
16
 
19
17
  if (releaseContext !== null) {
20
18
  verifyRelease(name, releaseContextMap);
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ const HALT_MESSAGE = "Halted verification.",
4
+ BEGIN_MESSAGE = "Begun verification...",
5
+ COMPLETED_MESSAGE = "...completed verification.";
6
+
7
+ module.exports = {
8
+ HALT_MESSAGE,
9
+ BEGIN_MESSAGE,
10
+ COMPLETED_MESSAGE
11
+ };
@@ -4,16 +4,8 @@ const { levels } = require("necessary");
4
4
 
5
5
  const { TRACE_LEVEL, DEBUG_LEVEL, INFO_LEVEL, WARNING_LEVEL, ERROR_LEVEL, FATAL_LEVEL } = levels;
6
6
 
7
- function log(level, message, filePath = null, leastLineIndex = null, greatestLineIndex = null) {
8
- if (filePath === null) {
9
- console.log(`(${level}) ${message}`)
10
- } else if (leastLineIndex === greatestLineIndex) {
11
- const lineIndex = leastLineIndex; ///
12
-
13
- console.log(`(${level}) '${filePath}' : [${lineIndex}] - ${message}`);
14
- } else {
15
- console.log(`(${level}) '${filePath}' : [${leastLineIndex}-${greatestLineIndex}] - ${message}`);
16
- }
7
+ function log(level, message) {
8
+ console.log(`(${level}) ${message}`)
17
9
  }
18
10
 
19
11
  function trace(message) { log(TRACE_LEVEL, message); }
@@ -4,81 +4,106 @@ const { arrayUtilities } = require("necessary"),
4
4
  { ReleaseContext } = require("../../lib/index"),
5
5
  { fileSystemUtilities } = require("occam-file-system");
6
6
 
7
+ const callbacks = require("../callbacks");
8
+
7
9
  const { log } = require("../utilities/logging"),
8
10
  { PERIOD } = require("../constants");
9
11
 
10
12
  const { first } = arrayUtilities,
11
13
  { loadRelease } = fileSystemUtilities;
12
14
 
13
- function createReleaseContext(name, releaseContextMap, dependentNames = []) {
15
+ function createReleaseContext(name, shortenedVersion, releaseContextMap, dependentNames = []) {
14
16
  let releaseContext = releaseContextMap[name] || null;
15
17
 
18
+ if (releaseContext === null) {
19
+ const release = createRelease(name);
20
+
21
+ if (release !== null) {
22
+ releaseContext = ReleaseContext.fromLogReleaseAndCallbacks(log, release, callbacks);
23
+ }
24
+ }
25
+
16
26
  if (releaseContext !== null) {
17
- return;
27
+ const releaseMatchesShortedVersion = checkReleaseMatchesShortenedVersion(releaseContext, shortenedVersion),
28
+ dependencyReleaseContextsCreated = createDependencyReleaseContexts(releaseContext, releaseContextMap, dependentNames);
29
+
30
+ if (!releaseMatchesShortedVersion || !dependencyReleaseContextsCreated) {
31
+ releaseContext = null;
32
+ }
18
33
  }
19
34
 
35
+ releaseContextMap[name] = releaseContext;
36
+
37
+ return releaseContext;
38
+ }
39
+
40
+ module.exports = {
41
+ createReleaseContext
42
+ };
43
+
44
+ function createRelease(name) {
20
45
  const topmostDirectoryName = name, ///
21
- projectsDirectoryPath = PERIOD,
22
- release = loadRelease(topmostDirectoryName, projectsDirectoryPath);
46
+ projectsDirectoryPath = PERIOD;
47
+
48
+ let release = loadRelease(topmostDirectoryName, projectsDirectoryPath);
23
49
 
24
50
  if (release === null) {
25
51
  log.error(`The '${name}' package cannot be loaded.`);
26
- } else {
27
- const releaseContext = ReleaseContext.fromLogAndRelease(log, release);
52
+ }
28
53
 
29
- createDependencyReleaseContexts(releaseContext, releaseContextMap, dependentNames);
54
+ return release;
55
+ }
56
+
57
+ function checkCyclicDependencyExists(name, dependentNames, releaseContext) {
58
+ const dependentNamesIncludesName = dependentNames.includes(name),
59
+ cyclicDependencyExists = dependentNamesIncludesName; ///
60
+
61
+ if (cyclicDependencyExists) {
62
+ const firstDependentName = first(dependentNames),
63
+ dependencyNames = dependentNames.concat(firstDependentName),
64
+ dependencyNamesString = dependencyNames.join(`' -> '`);
30
65
 
31
- releaseContextMap[name] = releaseContext;
66
+ releaseContext.error(`There is a cyclic dependency: '${dependencyNamesString}'.`);
32
67
  }
68
+
69
+ return cyclicDependencyExists;
33
70
  }
34
71
 
35
72
  function createDependencyReleaseContexts(releaseContext, releaseContextMap, dependentNames = []) {
36
73
  const name = releaseContext.getName(),
37
- version = releaseContext.getVersion(),
38
- dependencies = releaseContext.getDependencies(),
39
- dependencyNames = dependencies.reduceDependency((dependencyNames, dependency) => {
40
- const dependencyName = dependency.getName(),
41
- dependencyMatchesVersion = dependency.matchVersion(version);
42
-
43
- if (dependencyMatchesVersion) {
44
- dependencyNames.push(dependencyName);
45
- } else {
46
- releaseContext.error(`The '${dependencyName}' dependency's does to mat.`)
47
- }
48
-
49
- return dependencyNames;
50
- }, []);
74
+ dependencies = releaseContext.getDependencies();
51
75
 
52
76
  dependentNames = [ ...dependentNames, name ]; ///
53
77
 
54
- dependencyNames.forEach((dependencyName) => {
55
- const cyclicDependencyExists = checkCyclicDependencyExists(dependencyName, dependentNames, releaseContext);
56
-
57
- if (cyclicDependencyExists) {
58
- return;
59
- }
78
+ const dependencyReleaseContextsCreated = dependencies.everyDependency((dependency) => {
79
+ const name = dependency.getName(),
80
+ shortenedVersion = dependency.getShortedVersion(),
81
+ cyclicDependencyExists = checkCyclicDependencyExists(name, dependentNames, releaseContext);
60
82
 
61
- const name = dependencyName; ///
83
+ if (!cyclicDependencyExists) {
84
+ const releaseContext = createReleaseContext(name, shortenedVersion, releaseContextMap, dependentNames);
62
85
 
63
- createReleaseContext(name, releaseContextMap, dependentNames);
86
+ if (releaseContext !== null) {
87
+ return true;
88
+ }
89
+ }
64
90
  });
65
- }
66
91
 
67
- module.exports = {
68
- createReleaseContext
69
- };
92
+ return dependencyReleaseContextsCreated;
93
+ }
70
94
 
71
- function checkCyclicDependencyExists(dependencyName, dependentNames, releaseContext) {
72
- const dependentNamesIncludesDependencyName = dependentNames.includes(dependencyName),
73
- cyclicDependencyExists = dependentNamesIncludesDependencyName; ///
95
+ function checkReleaseMatchesShortenedVersion(releaseContext, shortenedVersion) {
96
+ const release = releaseContext.getRelease(),
97
+ releaseMatchesShortedVersion = release.matchShortenedVersion(shortenedVersion);
74
98
 
75
- if (cyclicDependencyExists) {
76
- const firstDependentName = first(dependentNames),
77
- dependencyNames = dependentNames.concat(firstDependentName),
78
- dependencyNamesString = dependencyNames.join(`' -> '`);
99
+ if (!releaseMatchesShortedVersion) {
100
+ const name = releaseContext.getName(),
101
+ version = releaseContext.getVersion(),
102
+ versionString = version.toString(),
103
+ shortenedVersionString = shortenedVersion.toString();
79
104
 
80
- releaseContext.error(`There is a cyclic dependency: '${dependencyNamesString}'.`);
105
+ releaseContext.error(`The '${name}' package's version of ${versionString} does not match the dependency's shortened version of ${shortenedVersionString}.`);
81
106
  }
82
107
 
83
- return cyclicDependencyExists;
108
+ return releaseMatchesShortedVersion;
84
109
  }
@@ -0,0 +1,68 @@
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 Callbacks;
9
+ }
10
+ });
11
+ function _classCallCheck(instance, Constructor) {
12
+ if (!(instance instanceof Constructor)) {
13
+ throw new TypeError("Cannot call a class as a function");
14
+ }
15
+ }
16
+ function _defineProperties(target, props) {
17
+ for(var i = 0; i < props.length; i++){
18
+ var descriptor = props[i];
19
+ descriptor.enumerable = descriptor.enumerable || false;
20
+ descriptor.configurable = true;
21
+ if ("value" in descriptor) descriptor.writable = true;
22
+ Object.defineProperty(target, descriptor.key, descriptor);
23
+ }
24
+ }
25
+ function _createClass(Constructor, protoProps, staticProps) {
26
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
+ if (staticProps) _defineProperties(Constructor, staticProps);
28
+ return Constructor;
29
+ }
30
+ var Callbacks = /*#__PURE__*/ function() {
31
+ function Callbacks(halt, begin, complete) {
32
+ _classCallCheck(this, Callbacks);
33
+ this.halt = halt;
34
+ this.begin = begin;
35
+ this.complete = complete;
36
+ }
37
+ _createClass(Callbacks, [
38
+ {
39
+ key: "getHalt",
40
+ value: function getHalt() {
41
+ return this.halt;
42
+ }
43
+ },
44
+ {
45
+ key: "getBegin",
46
+ value: function getBegin() {
47
+ return this.begin;
48
+ }
49
+ },
50
+ {
51
+ key: "getComplete",
52
+ value: function getComplete() {
53
+ return this.complete;
54
+ }
55
+ }
56
+ ], [
57
+ {
58
+ key: "fromHaltBeginAndComplete",
59
+ value: function fromHaltBeginAndComplete(halt, begin, complete) {
60
+ var callbacks = new Callbacks(halt, begin, complete);
61
+ return callbacks;
62
+ }
63
+ }
64
+ ]);
65
+ return Callbacks;
66
+ }();
67
+
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jYWxsYmFja3MuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbGxiYWNrcyB7XG4gIGNvbnN0cnVjdG9yKGhhbHQsIGJlZ2luLCBjb21wbGV0ZSkge1xuICAgIHRoaXMuaGFsdCA9IGhhbHQ7XG4gICAgdGhpcy5iZWdpbiA9IGJlZ2luO1xuICAgIHRoaXMuY29tcGxldGUgPSBjb21wbGV0ZTtcbiAgfVxuXG4gIGdldEhhbHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFsdDtcbiAgfVxuXG4gIGdldEJlZ2luKCkge1xuICAgIHJldHVybiB0aGlzLmJlZ2luO1xuICB9XG5cbiAgZ2V0Q29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGxldGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUhhbHRCZWdpbkFuZENvbXBsZXRlKGhhbHQsIGJlZ2luLCBjb21wbGV0ZSkge1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IG5ldyBDYWxsYmFja3MoaGFsdCwgYmVnaW4sIGNvbXBsZXRlKTtcblxuICAgIHJldHVybiBjYWxsYmFja3M7XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiQ2FsbGJhY2tzIiwiaGFsdCIsImJlZ2luIiwiY29tcGxldGUiLCJnZXRIYWx0IiwiZ2V0QmVnaW4iLCJnZXRDb21wbGV0ZSIsImZyb21IYWx0QmVnaW5BbmRDb21wbGV0ZSIsImNhbGxiYWNrcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFFcUJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU4sSUFBQSxBQUFNQSwwQkFBTjthQUFNQSxVQUNQQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsUUFBUTs4QkFEZEg7UUFFakIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxRQUFRLEdBQUdBOztpQkFKQ0g7O1lBT25CSSxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVTtnQkFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtZQUNsQjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXO2dCQUNULE9BQU8sSUFBSSxDQUFDSCxLQUFLO1lBQ25COzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLGNBQWM7Z0JBQ1osT0FBTyxJQUFJLENBQUNILFFBQVE7WUFDdEI7Ozs7WUFFT0ksS0FBQUE7bUJBQVAsU0FBT0EseUJBQXlCTixJQUFJLEVBQUVDLEtBQUssRUFBRUMsUUFBUSxFQUFFO2dCQUNyRCxJQUFNSyxZQUFZLElBcEJEUixVQW9CZUMsTUFBTUMsT0FBT0M7Z0JBRTdDLE9BQU9LO1lBQ1Q7OztXQXZCbUJSIn0=