occam-verify-cli 0.0.355 → 0.0.358

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/lib/constants.js CHANGED
@@ -12,8 +12,14 @@ _export(exports, {
12
12
  COMMA: function() {
13
13
  return COMMA;
14
14
  },
15
- EMPTY_STRING: function() {
16
- return EMPTY_STRING;
15
+ STRING: function() {
16
+ return STRING;
17
+ },
18
+ NUMBER: function() {
19
+ return NUMBER;
20
+ },
21
+ BOOLEAN: function() {
22
+ return BOOLEAN;
17
23
  },
18
24
  LEFT_BRACKET: function() {
19
25
  return LEFT_BRACKET;
@@ -32,11 +38,13 @@ _export(exports, {
32
38
  }
33
39
  });
34
40
  var COMMA = ",";
35
- var EMPTY_STRING = "";
41
+ var STRING = "string";
42
+ var NUMBER = "number";
43
+ var BOOLEAN = "boolean";
36
44
  var LEFT_BRACKET = "(";
37
45
  var RIGHT_BRACKET = ")";
38
46
  var MAXIMUM_INDEXES_LENGTH = 10;
39
47
  var MAXIMUM_PERMUTATION_LENGTH = 5;
40
48
  var BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH = 3;
41
49
 
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBDT01NQSA9ICcsJztcbmV4cG9ydCBjb25zdCBFTVBUWV9TVFJJTkcgPSBcIlwiO1xuZXhwb3J0IGNvbnN0IExFRlRfQlJBQ0tFVCA9IFwiKFwiO1xuZXhwb3J0IGNvbnN0IFJJR0hUX0JSQUNLRVQgPSBcIilcIjtcbmV4cG9ydCBjb25zdCBNQVhJTVVNX0lOREVYRVNfTEVOR1RIID0gMTA7XG5leHBvcnQgY29uc3QgTUFYSU1VTV9QRVJNVVRBVElPTl9MRU5HVEggPSA1O1xuZXhwb3J0IGNvbnN0IEJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0NISUxEX05PREVTX0xFTkdUSCA9IDM7XG4iXSwibmFtZXMiOlsiQ09NTUEiLCJFTVBUWV9TVFJJTkciLCJMRUZUX0JSQUNLRVQiLCJSSUdIVF9CUkFDS0VUIiwiTUFYSU1VTV9JTkRFWEVTX0xFTkdUSCIsIk1BWElNVU1fUEVSTVVUQVRJT05fTEVOR1RIIiwiQlJBQ0tFVEVEX01FVEFTVEFURU1FTlRfQ0hJTERfTk9ERVNfTEVOR1RIIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFYUEsS0FBSztlQUFMQTs7SUFDQUMsWUFBWTtlQUFaQTs7SUFDQUMsWUFBWTtlQUFaQTs7SUFDQUMsYUFBYTtlQUFiQTs7SUFDQUMsc0JBQXNCO2VBQXRCQTs7SUFDQUMsMEJBQTBCO2VBQTFCQTs7SUFDQUMsMENBQTBDO2VBQTFDQTs7O0FBTk4sSUFBTU4sUUFBUTtBQUNkLElBQU1DLGVBQWU7QUFDckIsSUFBTUMsZUFBZTtBQUNyQixJQUFNQyxnQkFBZ0I7QUFDdEIsSUFBTUMseUJBQXlCO0FBQy9CLElBQU1DLDZCQUE2QjtBQUNuQyxJQUFNQyw2Q0FBNkMifQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBDT01NQSA9ICcsJztcbmV4cG9ydCBjb25zdCBTVFJJTkcgPSBcInN0cmluZ1wiO1xuZXhwb3J0IGNvbnN0IE5VTUJFUiA9IFwibnVtYmVyXCI7XG5leHBvcnQgY29uc3QgQk9PTEVBTiA9IFwiYm9vbGVhblwiO1xuZXhwb3J0IGNvbnN0IExFRlRfQlJBQ0tFVCA9IFwiKFwiO1xuZXhwb3J0IGNvbnN0IFJJR0hUX0JSQUNLRVQgPSBcIilcIjtcbmV4cG9ydCBjb25zdCBNQVhJTVVNX0lOREVYRVNfTEVOR1RIID0gMTA7XG5leHBvcnQgY29uc3QgTUFYSU1VTV9QRVJNVVRBVElPTl9MRU5HVEggPSA1O1xuZXhwb3J0IGNvbnN0IEJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0NISUxEX05PREVTX0xFTkdUSCA9IDM7XG4iXSwibmFtZXMiOlsiQ09NTUEiLCJTVFJJTkciLCJOVU1CRVIiLCJCT09MRUFOIiwiTEVGVF9CUkFDS0VUIiwiUklHSFRfQlJBQ0tFVCIsIk1BWElNVU1fSU5ERVhFU19MRU5HVEgiLCJNQVhJTVVNX1BFUk1VVEFUSU9OX0xFTkdUSCIsIkJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0NISUxEX05PREVTX0xFTkdUSCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRWFBLEtBQUs7ZUFBTEE7O0lBQ0FDLE1BQU07ZUFBTkE7O0lBQ0FDLE1BQU07ZUFBTkE7O0lBQ0FDLE9BQU87ZUFBUEE7O0lBQ0FDLFlBQVk7ZUFBWkE7O0lBQ0FDLGFBQWE7ZUFBYkE7O0lBQ0FDLHNCQUFzQjtlQUF0QkE7O0lBQ0FDLDBCQUEwQjtlQUExQkE7O0lBQ0FDLDBDQUEwQztlQUExQ0E7OztBQVJOLElBQU1SLFFBQVE7QUFDZCxJQUFNQyxTQUFTO0FBQ2YsSUFBTUMsU0FBUztBQUNmLElBQU1DLFVBQVU7QUFDaEIsSUFBTUMsZUFBZTtBQUNyQixJQUFNQyxnQkFBZ0I7QUFDdEIsSUFBTUMseUJBQXlCO0FBQy9CLElBQU1DLDZCQUE2QjtBQUNuQyxJQUFNQyw2Q0FBNkMifQ==
package/lib/index.js CHANGED
@@ -18,6 +18,12 @@ _export(exports, {
18
18
  ReleaseContext: function() {
19
19
  return _release1.default;
20
20
  },
21
+ versionChanges: function() {
22
+ return _versionChanges.default;
23
+ },
24
+ versionUtilities: function() {
25
+ return _version.default;
26
+ },
21
27
  releaseContextUtilities: function() {
22
28
  return _releaseContext.default;
23
29
  }
@@ -25,6 +31,8 @@ _export(exports, {
25
31
  var _callbacks = /*#__PURE__*/ _interopRequireDefault(require("./callbacks"));
26
32
  var _release = /*#__PURE__*/ _interopRequireDefault(require("./verify/release"));
27
33
  var _release1 = /*#__PURE__*/ _interopRequireDefault(require("./context/release"));
34
+ var _versionChanges = /*#__PURE__*/ _interopRequireDefault(require("./versionChanges"));
35
+ var _version = /*#__PURE__*/ _interopRequireDefault(require("./utilities/version"));
28
36
  var _releaseContext = /*#__PURE__*/ _interopRequireDefault(require("./utilities/releaseContext"));
29
37
  function _interopRequireDefault(obj) {
30
38
  return obj && obj.__esModule ? obj : {
@@ -32,4 +40,4 @@ function _interopRequireDefault(obj) {
32
40
  };
33
41
  }
34
42
 
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBDYWxsYmFja3MgfSBmcm9tIFwiLi9jYWxsYmFja3NcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZ5UmVsZWFzZSB9IGZyb20gXCIuL3ZlcmlmeS9yZWxlYXNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJlbGVhc2VDb250ZXh0IH0gZnJvbSBcIi4vY29udGV4dC9yZWxlYXNlXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVsZWFzZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHRcIjtcbiJdLCJuYW1lcyI6WyJDYWxsYmFja3MiLCJ2ZXJpZnlSZWxlYXNlIiwiUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dFV0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRW9CQSxTQUFTO2VBQVRBLGtCQUFTOztJQUNUQyxhQUFhO2VBQWJBLGdCQUFhOztJQUNiQyxjQUFjO2VBQWRBLGlCQUFjOztJQUVkQyx1QkFBdUI7ZUFBdkJBLHVCQUF1Qjs7OzhEQUpOOzREQUNJOzZEQUNDO21FQUVTIn0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBDYWxsYmFja3MgfSBmcm9tIFwiLi9jYWxsYmFja3NcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyaWZ5UmVsZWFzZSB9IGZyb20gXCIuL3ZlcmlmeS9yZWxlYXNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJlbGVhc2VDb250ZXh0IH0gZnJvbSBcIi4vY29udGV4dC9yZWxlYXNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHZlcnNpb25DaGFuZ2VzIH0gZnJvbSBcIi4vdmVyc2lvbkNoYW5nZXNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmVyc2lvblV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy92ZXJzaW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQ2FsbGJhY2tzIiwidmVyaWZ5UmVsZWFzZSIsIlJlbGVhc2VDb250ZXh0IiwidmVyc2lvbkNoYW5nZXMiLCJ2ZXJzaW9uVXRpbGl0aWVzIiwicmVsZWFzZUNvbnRleHRVdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVvQkEsU0FBUztlQUFUQSxrQkFBUzs7SUFDVEMsYUFBYTtlQUFiQSxnQkFBYTs7SUFDYkMsY0FBYztlQUFkQSxpQkFBYzs7SUFDZEMsY0FBYztlQUFkQSx1QkFBYzs7SUFDZEMsZ0JBQWdCO2VBQWhCQSxnQkFBZ0I7O0lBQ2hCQyx1QkFBdUI7ZUFBdkJBLHVCQUF1Qjs7OzhEQUxOOzREQUNJOzZEQUNDO21FQUNBOzREQUNFO21FQUNPIn0=
@@ -0,0 +1,30 @@
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
+ NULL_JSON_TYPE: function() {
13
+ return NULL_JSON_TYPE;
14
+ },
15
+ ARRAY_JSON_TYPE: function() {
16
+ return ARRAY_JSON_TYPE;
17
+ },
18
+ OBJECT_JSON_TYPE: function() {
19
+ return OBJECT_JSON_TYPE;
20
+ },
21
+ PRIMITIVE_JSON_TYPE: function() {
22
+ return PRIMITIVE_JSON_TYPE;
23
+ }
24
+ });
25
+ var NULL_JSON_TYPE = "null";
26
+ var ARRAY_JSON_TYPE = "array";
27
+ var OBJECT_JSON_TYPE = "object";
28
+ var PRIMITIVE_JSON_TYPE = "primitive";
29
+
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uVHlwZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBOVUxMX0pTT05fVFlQRSA9IFwibnVsbFwiO1xuZXhwb3J0IGNvbnN0IEFSUkFZX0pTT05fVFlQRSA9IFwiYXJyYXlcIjtcbmV4cG9ydCBjb25zdCBPQkpFQ1RfSlNPTl9UWVBFID0gXCJvYmplY3RcIjtcbmV4cG9ydCBjb25zdCBQUklNSVRJVkVfSlNPTl9UWVBFID0gXCJwcmltaXRpdmVcIjtcbiJdLCJuYW1lcyI6WyJOVUxMX0pTT05fVFlQRSIsIkFSUkFZX0pTT05fVFlQRSIsIk9CSkVDVF9KU09OX1RZUEUiLCJQUklNSVRJVkVfSlNPTl9UWVBFIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFYUEsY0FBYztlQUFkQTs7SUFDQUMsZUFBZTtlQUFmQTs7SUFDQUMsZ0JBQWdCO2VBQWhCQTs7SUFDQUMsbUJBQW1CO2VBQW5CQTs7O0FBSE4sSUFBTUgsaUJBQWlCO0FBQ3ZCLElBQU1DLGtCQUFrQjtBQUN4QixJQUFNQyxtQkFBbUI7QUFDekIsSUFBTUMsc0JBQXNCIn0=
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _necessary = require("necessary");
6
+ var _constants = require("../constants");
7
+ var _jsonTypes = require("../jsonTypes");
8
+ var _versionChanges = require("../versionChanges");
9
+ var _typeof = function(obj) {
10
+ "@swc/helpers - typeof";
11
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
12
+ };
13
+ var first = _necessary.arrayUtilities.first;
14
+ function compareJSON(jsonA, jsonB) {
15
+ var result = _versionChanges.BREAKING_VERSION_CHANGE;
16
+ var jsonAType = typeOf(jsonA), jsonBType = typeOf(jsonB);
17
+ if (jsonAType === jsonBType) {
18
+ var jsonType = jsonAType; ///
19
+ switch(jsonType){
20
+ case _jsonTypes.ARRAY_JSON_TYPE:
21
+ {
22
+ var arrayA = jsonA, arrayB = jsonB; ///
23
+ result = compareArrays(arrayA, arrayB);
24
+ break;
25
+ }
26
+ case _jsonTypes.OBJECT_JSON_TYPE:
27
+ {
28
+ var objectA = jsonA, objectB = jsonB; ///
29
+ result = compareObjects(objectA, objectB);
30
+ break;
31
+ }
32
+ case _jsonTypes.PRIMITIVE_JSON_TYPE:
33
+ {
34
+ var primitiveA = jsonA, primitiveB = jsonB; ///
35
+ result = comparePrimitives(primitiveA, primitiveB);
36
+ break;
37
+ }
38
+ }
39
+ }
40
+ return result;
41
+ }
42
+ module.exports = {
43
+ compareJSON: compareJSON
44
+ };
45
+ function compareArrays(arrayA, arrayB) {
46
+ var result;
47
+ var arrayALength = arrayA.length, arrayBLength = arrayB.length;
48
+ if (arrayALength === 0) {
49
+ if (arrayBLength === 0) {
50
+ result = _versionChanges.COSMETIC_VERSION_CHANGE;
51
+ } else {
52
+ result = _versionChanges.ADDITIVE_VERSION_CHANGE;
53
+ }
54
+ } else {
55
+ if (arrayBLength === 0) {
56
+ result = _versionChanges.BREAKING_VERSION_CHANGE;
57
+ } else {
58
+ var firstElementA = first(arrayA), elementA = firstElementA, elementB = arrayB.find(function(elementB) {
59
+ var jsonA = elementA, jsonB = elementB, result = compareJSON(jsonA, jsonB);
60
+ if (result === _versionChanges.COSMETIC_VERSION_CHANGE) {
61
+ return true;
62
+ }
63
+ }) || null;
64
+ if (elementB !== null) {
65
+ arrayA = deleteElement(arrayA, elementA);
66
+ arrayB = deleteElement(arrayB, elementB);
67
+ result = compareArrays(arrayA, arrayB);
68
+ } else {
69
+ result = _versionChanges.BREAKING_VERSION_CHANGE;
70
+ }
71
+ }
72
+ }
73
+ return result;
74
+ }
75
+ function compareObjects(objectA, objectB) {
76
+ var result;
77
+ var keysA = Object.keys(objectA), keysB = Object.keys(objectB), keysALength = keysA.length, keysBLength = keysB.length;
78
+ if (keysALength === 0) {
79
+ if (keysBLength === 0) {
80
+ result = _versionChanges.COSMETIC_VERSION_CHANGE;
81
+ } else {
82
+ result = _versionChanges.ADDITIVE_VERSION_CHANGE;
83
+ }
84
+ } else {
85
+ if (keysBLength === 0) {
86
+ result = _versionChanges.BREAKING_VERSION_CHANGE;
87
+ } else {
88
+ var firstKeyA = first(keysA), keyA = firstKeyA, keyB = keysB.find(function(keyB, index) {
89
+ if (keyA === keyB) {
90
+ var valueA = objectA[keyA], valueB = objectB[keyB], jsonA = valueA, jsonB = valueB, result = compareJSON(jsonA, jsonB);
91
+ if (result === _versionChanges.COSMETIC_VERSION_CHANGE) {
92
+ return true;
93
+ }
94
+ }
95
+ }) || null;
96
+ if (keyB !== null) {
97
+ objectA = deleteKey(objectA, keyA);
98
+ objectB = deleteKey(objectB, keyB);
99
+ result = compareObjects(objectA, objectB);
100
+ } else {
101
+ result = _versionChanges.BREAKING_VERSION_CHANGE;
102
+ }
103
+ }
104
+ }
105
+ return result;
106
+ }
107
+ function comparePrimitives(primitiveA, primitiveB) {
108
+ var result = _versionChanges.BREAKING_VERSION_CHANGE;
109
+ if (primitiveA === primitiveB) {
110
+ result = _versionChanges.COSMETIC_VERSION_CHANGE;
111
+ }
112
+ return result;
113
+ }
114
+ function typeOf(json) {
115
+ var type;
116
+ var _null = isNull(json), array = isArray(json), object = isObject(json), primitive = isPrimitive(json);
117
+ if (_null) {
118
+ type = _jsonTypes.NULL_JSON_TYPE;
119
+ }
120
+ if (array) {
121
+ type = _jsonTypes.ARRAY_JSON_TYPE;
122
+ }
123
+ if (object) {
124
+ type = _jsonTypes.OBJECT_JSON_TYPE;
125
+ }
126
+ if (primitive) {
127
+ type = _jsonTypes.PRIMITIVE_JSON_TYPE;
128
+ }
129
+ return type;
130
+ }
131
+ function isNull(json) {
132
+ var _null = json === null;
133
+ return _null;
134
+ }
135
+ function isArray(json) {
136
+ var array = Array.isArray(json);
137
+ return array;
138
+ }
139
+ function isObject(json) {
140
+ var array = isArray(json), primitive = isPrimitive(json), object = !array && !primitive;
141
+ return object;
142
+ }
143
+ function isString(json) {
144
+ var string = (typeof json === "undefined" ? "undefined" : _typeof(json)) === _constants.STRING;
145
+ return string;
146
+ }
147
+ function isNumber(json) {
148
+ var number = (typeof json === "undefined" ? "undefined" : _typeof(json)) === _constants.NUMBER;
149
+ return number;
150
+ }
151
+ function isBoolean(json) {
152
+ var boolean = (typeof json === "undefined" ? "undefined" : _typeof(json)) === _constants.BOOLEAN;
153
+ return boolean;
154
+ }
155
+ function isPrimitive(json) {
156
+ var _null = isNull(json), string = isString(json), number = isNumber(json), boolean = isBoolean(json), primitive = _null || string || number || boolean;
157
+ return primitive;
158
+ }
159
+ function deleteElement(array, element) {
160
+ var deletedElement = element; ///
161
+ array = array.reduce(function(array, element) {
162
+ if (element !== deletedElement) {
163
+ array.push(element);
164
+ }
165
+ return array;
166
+ }, []);
167
+ return array;
168
+ }
169
+ function deleteKey(object, key) {
170
+ var deletedKey = key, keys = Object.keys(object), values = Object.values(object);
171
+ object = keys.reduce(function(object, key, index) {
172
+ if (key !== deletedKey) {
173
+ var value = values[index];
174
+ object[key] = value;
175
+ }
176
+ return object;
177
+ }, {});
178
+ return object;
179
+ }
180
+
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IFNUUklORywgTlVNQkVSLCBCT09MRUFOIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTlVMTF9KU09OX1RZUEUsIEFSUkFZX0pTT05fVFlQRSwgT0JKRUNUX0pTT05fVFlQRSwgUFJJTUlUSVZFX0pTT05fVFlQRSB9IGZyb20gXCIuLi9qc29uVHlwZXNcIjtcbmltcG9ydCB7IEJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFLCBBRERJVElWRV9WRVJTSU9OX0NIQU5HRSwgQ09TTUVUSUNfVkVSU0lPTl9DSEFOR0UgfSBmcm9tIFwiLi4vdmVyc2lvbkNoYW5nZXNcIjtcblxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmZ1bmN0aW9uIGNvbXBhcmVKU09OKGpzb25BLCBqc29uQikge1xuICBsZXQgcmVzdWx0ID0gQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0U7XG5cbiAgY29uc3QganNvbkFUeXBlID0gdHlwZU9mKGpzb25BKSxcbiAgICAgICAganNvbkJUeXBlID0gdHlwZU9mKGpzb25CKTtcblxuICBpZiAoanNvbkFUeXBlID09PSBqc29uQlR5cGUpIHtcbiAgICBjb25zdCBqc29uVHlwZSA9IGpzb25BVHlwZTsgLy8vXG5cbiAgICBzd2l0Y2ggKGpzb25UeXBlKSB7XG4gICAgICBjYXNlIEFSUkFZX0pTT05fVFlQRToge1xuICAgICAgICBjb25zdCBhcnJheUEgPSBqc29uQSwgLy8vXG4gICAgICAgICAgICAgIGFycmF5QiA9IGpzb25COyAvLy9cblxuICAgICAgICByZXN1bHQgPSBjb21wYXJlQXJyYXlzKGFycmF5QSwgYXJyYXlCKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBPQkpFQ1RfSlNPTl9UWVBFOiB7XG4gICAgICAgIGNvbnN0IG9iamVjdEEgPSBqc29uQSwgLy8vXG4gICAgICAgICAgICAgIG9iamVjdEIgPSBqc29uQjsgLy8vXG5cbiAgICAgICAgcmVzdWx0ID0gY29tcGFyZU9iamVjdHMob2JqZWN0QSwgb2JqZWN0Qik7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgUFJJTUlUSVZFX0pTT05fVFlQRToge1xuICAgICAgICBjb25zdCBwcmltaXRpdmVBID0ganNvbkEsIC8vL1xuICAgICAgICAgICAgICBwcmltaXRpdmVCID0ganNvbkI7IC8vL1xuXG4gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVQcmltaXRpdmVzKHByaW1pdGl2ZUEsIHByaW1pdGl2ZUIpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjb21wYXJlSlNPTlxufTtcblxuZnVuY3Rpb24gY29tcGFyZUFycmF5cyhhcnJheUEsIGFycmF5Qikge1xuICBsZXQgcmVzdWx0O1xuXG4gIGNvbnN0IGFycmF5QUxlbmd0aCA9IGFycmF5QS5sZW5ndGgsXG4gICAgICAgIGFycmF5Qkxlbmd0aCA9IGFycmF5Qi5sZW5ndGg7XG5cbiAgaWYgKGFycmF5QUxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChhcnJheUJMZW5ndGggPT09IDApIHtcbiAgICAgIHJlc3VsdCA9IENPU01FVElDX1ZFUlNJT05fQ0hBTkdFO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBBRERJVElWRV9WRVJTSU9OX0NIQU5HRTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGFycmF5Qkxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVzdWx0ID0gQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpcnN0RWxlbWVudEEgPSBmaXJzdChhcnJheUEpLCAgLy8vXG4gICAgICAgICAgICBlbGVtZW50QSA9IGZpcnN0RWxlbWVudEEsIC8vL1xuICAgICAgICAgICAgZWxlbWVudEIgPSBhcnJheUIuZmluZCgoZWxlbWVudEIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QganNvbkEgPSBlbGVtZW50QSwgLy8vXG4gICAgICAgICAgICAgICAgICAgIGpzb25CID0gZWxlbWVudEIsIC8vL1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlSlNPTihqc29uQSwganNvbkIpO1xuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IENPU01FVElDX1ZFUlNJT05fQ0hBTkdFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICAgIGlmIChlbGVtZW50QiAhPT0gbnVsbCkge1xuICAgICAgICBhcnJheUEgPSBkZWxldGVFbGVtZW50KGFycmF5QSwgZWxlbWVudEEpO1xuXG4gICAgICAgIGFycmF5QiA9IGRlbGV0ZUVsZW1lbnQoYXJyYXlCLCBlbGVtZW50Qik7XG5cbiAgICAgICAgcmVzdWx0ID0gY29tcGFyZUFycmF5cyhhcnJheUEsIGFycmF5Qik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBCUkVBS0lOR19WRVJTSU9OX0NIQU5HRTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0cyhvYmplY3RBLCBvYmplY3RCKSB7XG4gIGxldCByZXN1bHQ7XG5cbiAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhvYmplY3RBKSxcbiAgICAgICAga2V5c0IgPSBPYmplY3Qua2V5cyhvYmplY3RCKSxcbiAgICAgICAga2V5c0FMZW5ndGggPSBrZXlzQS5sZW5ndGgsXG4gICAgICAgIGtleXNCTGVuZ3RoID0ga2V5c0IubGVuZ3RoO1xuXG4gIGlmIChrZXlzQUxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChrZXlzQkxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVzdWx0ID0gQ09TTUVUSUNfVkVSU0lPTl9DSEFOR0U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IEFERElUSVZFX1ZFUlNJT05fQ0hBTkdFO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoa2V5c0JMZW5ndGggPT09IDApIHtcbiAgICAgIHJlc3VsdCA9IEJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaXJzdEtleUEgPSBmaXJzdChrZXlzQSksICAvLy9cbiAgICAgICAgICAgIGtleUEgPSBmaXJzdEtleUEsIC8vL1xuICAgICAgICAgICAga2V5QiA9IGtleXNCLmZpbmQoKGtleUIsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChrZXlBID09PSBrZXlCKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVBID0gb2JqZWN0QVtrZXlBXSxcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUIgPSBvYmplY3RCW2tleUJdLFxuICAgICAgICAgICAgICAgICAgICAgIGpzb25BID0gdmFsdWVBLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgICBqc29uQiA9IHZhbHVlQiwgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUpTT04oanNvbkEsIGpzb25CKTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IENPU01FVElDX1ZFUlNJT05fQ0hBTkdFKSB7ICAvLy9cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgICAgaWYgKGtleUIgIT09IG51bGwpIHtcbiAgICAgICAgb2JqZWN0QSA9IGRlbGV0ZUtleShvYmplY3RBLCBrZXlBKTtcblxuICAgICAgICBvYmplY3RCID0gZGVsZXRlS2V5KG9iamVjdEIsIGtleUIpO1xuXG4gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVPYmplY3RzKG9iamVjdEEsIG9iamVjdEIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29tcGFyZVByaW1pdGl2ZXMocHJpbWl0aXZlQSwgcHJpbWl0aXZlQikge1xuICBsZXQgcmVzdWx0ID0gQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0U7XG5cbiAgaWYgKHByaW1pdGl2ZUEgPT09IHByaW1pdGl2ZUIpIHtcbiAgICByZXN1bHQgPSBDT1NNRVRJQ19WRVJTSU9OX0NIQU5HRTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZihqc29uKSB7XG4gIGxldCB0eXBlO1xuXG4gIGNvbnN0IF9udWxsID0gaXNOdWxsKGpzb24pLFxuICAgICAgICBhcnJheSA9IGlzQXJyYXkoanNvbiksXG4gICAgICAgIG9iamVjdCA9IGlzT2JqZWN0KGpzb24pLFxuICAgICAgICBwcmltaXRpdmUgPSBpc1ByaW1pdGl2ZShqc29uKTtcblxuICBpZiAoX251bGwpIHtcbiAgICB0eXBlID0gTlVMTF9KU09OX1RZUEU7XG4gIH1cblxuICBpZiAoYXJyYXkpIHtcbiAgICB0eXBlID0gQVJSQVlfSlNPTl9UWVBFO1xuICB9XG5cbiAgaWYgKG9iamVjdCkge1xuICAgIHR5cGUgPSBPQkpFQ1RfSlNPTl9UWVBFO1xuICB9XG5cbiAgaWYgKHByaW1pdGl2ZSkge1xuICAgIHR5cGUgPSBQUklNSVRJVkVfSlNPTl9UWVBFO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbChqc29uKSB7XG4gIGNvbnN0IF9udWxsID0gKGpzb24gPT09IG51bGwpO1xuXG4gIHJldHVybiBfbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNBcnJheShqc29uKSB7XG4gIGNvbnN0IGFycmF5ID0gQXJyYXkuaXNBcnJheShqc29uKTtcblxuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGpzb24pIHtcbiAgY29uc3QgYXJyYXkgPSBpc0FycmF5KGpzb24pLFxuICAgICAgICBwcmltaXRpdmUgPSBpc1ByaW1pdGl2ZShqc29uKSxcbiAgICAgICAgb2JqZWN0ID0gKCFhcnJheSAmJiAhcHJpbWl0aXZlKTtcblxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBpc1N0cmluZyhqc29uKSB7XG4gIGNvbnN0IHN0cmluZyA9ICgodHlwZW9mIGpzb24pID09PSBTVFJJTkcpO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGpzb24pIHtcbiAgY29uc3QgbnVtYmVyID0gKCh0eXBlb2YganNvbikgPT09IE5VTUJFUik7XG5cbiAgcmV0dXJuIG51bWJlcjtcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKGpzb24pIHtcbiAgY29uc3QgYm9vbGVhbiA9ICgodHlwZW9mIGpzb24pID09PSBCT09MRUFOKTtcblxuICByZXR1cm4gYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gaXNQcmltaXRpdmUoanNvbikge1xuICBjb25zdCBfbnVsbCA9IGlzTnVsbChqc29uKSxcbiAgICAgICAgc3RyaW5nID0gaXNTdHJpbmcoanNvbiksXG4gICAgICAgIG51bWJlciA9IGlzTnVtYmVyKGpzb24pLFxuICAgICAgICBib29sZWFuID0gaXNCb29sZWFuKGpzb24pLFxuICAgICAgICBwcmltaXRpdmUgPSAoX251bGwgfHwgc3RyaW5nIHx8IG51bWJlciB8fCBib29sZWFuKTtcblxuICByZXR1cm4gcHJpbWl0aXZlO1xufVxuXG5mdW5jdGlvbiBkZWxldGVFbGVtZW50KGFycmF5LCBlbGVtZW50KSB7XG4gIGNvbnN0IGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgYXJyYXkgPSBhcnJheS5yZWR1Y2UoKGFycmF5LCBlbGVtZW50KSA9PiB7ICAvLy9cbiAgICBpZiAoZWxlbWVudCAhPT0gZGVsZXRlZEVsZW1lbnQpIHtcbiAgICAgIGFycmF5LnB1c2goZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycmF5O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBkZWxldGVLZXkob2JqZWN0LCBrZXkpIHtcbiAgY29uc3QgZGVsZXRlZEtleSA9IGtleSwgLy8vXG4gICAgICAgIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgICAgICB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKG9iamVjdCk7XG5cbiAgb2JqZWN0ID0ga2V5cy5yZWR1Y2UoKG9iamVjdCwga2V5LCBpbmRleCkgPT4geyAgLy8vXG4gICAgaWYgKGtleSAhPT0gZGVsZXRlZEtleSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbaW5kZXhdO1xuXG4gICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0sIHt9KTtcblxuICByZXR1cm4gb2JqZWN0O1xufVxuIl0sIm5hbWVzIjpbImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJjb21wYXJlSlNPTiIsImpzb25BIiwianNvbkIiLCJyZXN1bHQiLCJCUkVBS0lOR19WRVJTSU9OX0NIQU5HRSIsImpzb25BVHlwZSIsInR5cGVPZiIsImpzb25CVHlwZSIsImpzb25UeXBlIiwiQVJSQVlfSlNPTl9UWVBFIiwiYXJyYXlBIiwiYXJyYXlCIiwiY29tcGFyZUFycmF5cyIsIk9CSkVDVF9KU09OX1RZUEUiLCJvYmplY3RBIiwib2JqZWN0QiIsImNvbXBhcmVPYmplY3RzIiwiUFJJTUlUSVZFX0pTT05fVFlQRSIsInByaW1pdGl2ZUEiLCJwcmltaXRpdmVCIiwiY29tcGFyZVByaW1pdGl2ZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXJyYXlBTGVuZ3RoIiwibGVuZ3RoIiwiYXJyYXlCTGVuZ3RoIiwiQ09TTUVUSUNfVkVSU0lPTl9DSEFOR0UiLCJBRERJVElWRV9WRVJTSU9OX0NIQU5HRSIsImZpcnN0RWxlbWVudEEiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiZmluZCIsImRlbGV0ZUVsZW1lbnQiLCJrZXlzQSIsIk9iamVjdCIsImtleXMiLCJrZXlzQiIsImtleXNBTGVuZ3RoIiwia2V5c0JMZW5ndGgiLCJmaXJzdEtleUEiLCJrZXlBIiwia2V5QiIsImluZGV4IiwidmFsdWVBIiwidmFsdWVCIiwiZGVsZXRlS2V5IiwianNvbiIsInR5cGUiLCJfbnVsbCIsImlzTnVsbCIsImFycmF5IiwiaXNBcnJheSIsIm9iamVjdCIsImlzT2JqZWN0IiwicHJpbWl0aXZlIiwiaXNQcmltaXRpdmUiLCJOVUxMX0pTT05fVFlQRSIsIkFycmF5IiwiaXNTdHJpbmciLCJzdHJpbmciLCJTVFJJTkciLCJpc051bWJlciIsIm51bWJlciIsIk5VTUJFUiIsImlzQm9vbGVhbiIsImJvb2xlYW4iLCJCT09MRUFOIiwiZWxlbWVudCIsImRlbGV0ZWRFbGVtZW50IiwicmVkdWNlIiwicHVzaCIsImtleSIsImRlbGV0ZWRLZXkiLCJ2YWx1ZXMiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7eUJBRStCO3lCQUVTO3lCQUMrQzs4QkFDRzs7Ozs7QUFFMUYsSUFBTSxBQUFFQSxRQUFVQyx5QkFBYyxDQUF4QkQ7QUFFUixTQUFTRSxZQUFZQyxLQUFLLEVBQUVDLEtBQUssRUFBRTtJQUNqQyxJQUFJQyxTQUFTQyx1Q0FBdUI7SUFFcEMsSUFBTUMsWUFBWUMsT0FBT0wsUUFDbkJNLFlBQVlELE9BQU9KO0lBRXpCLElBQUlHLGNBQWNFLFdBQVc7UUFDM0IsSUFBTUMsV0FBV0gsV0FBVyxHQUFHO1FBRS9CLE9BQVFHO1lBQ04sS0FBS0MsMEJBQWU7Z0JBQUU7b0JBQ3BCLElBQU1DLFNBQVNULE9BQ1RVLFNBQVNULE9BQU8sR0FBRztvQkFFekJDLFNBQVNTLGNBQWNGLFFBQVFDO29CQUUvQixLQUFNO2dCQUNSO1lBRUEs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
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _versionChanges = require("../versionChanges");
6
+ function updateVersion(version, versionChange) {
7
+ switch(versionChange){
8
+ case _versionChanges.BREAKING_VERSION_CHANGE:
9
+ version.bumpMajorNumber();
10
+ version.resetMinorNumber();
11
+ version.resetPatchNumber();
12
+ break;
13
+ case _versionChanges.ADDITIVE_VERSION_CHANGE:
14
+ version.bumpMinorNumber();
15
+ version.resetPatchNumber();
16
+ break;
17
+ case _versionChanges.COSMETIC_VERSION_CHANGE:
18
+ version.bumpPatchNumber();
19
+ break;
20
+ }
21
+ }
22
+ module.exports = {
23
+ updateVersion: updateVersion
24
+ };
25
+
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyc2lvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0UsIEFERElUSVZFX1ZFUlNJT05fQ0hBTkdFLCBDT1NNRVRJQ19WRVJTSU9OX0NIQU5HRSB9IGZyb20gXCIuLi92ZXJzaW9uQ2hhbmdlc1wiO1xuXG5mdW5jdGlvbiB1cGRhdGVWZXJzaW9uKHZlcnNpb24sIHZlcnNpb25DaGFuZ2UpIHtcbiAgc3dpdGNoICh2ZXJzaW9uQ2hhbmdlKSB7XG4gICAgY2FzZSBCUkVBS0lOR19WRVJTSU9OX0NIQU5HRTpcbiAgICAgIHZlcnNpb24uYnVtcE1ham9yTnVtYmVyKCk7XG4gICAgICB2ZXJzaW9uLnJlc2V0TWlub3JOdW1iZXIoKTtcbiAgICAgIHZlcnNpb24ucmVzZXRQYXRjaE51bWJlcigpO1xuXG4gICAgICBicmVhaztcblxuICAgIGNhc2UgQURESVRJVkVfVkVSU0lPTl9DSEFOR0U6XG4gICAgICB2ZXJzaW9uLmJ1bXBNaW5vck51bWJlcigpO1xuICAgICAgdmVyc2lvbi5yZXNldFBhdGNoTnVtYmVyKCk7XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBDT1NNRVRJQ19WRVJTSU9OX0NIQU5HRTpcbiAgICAgIHZlcnNpb24uYnVtcFBhdGNoTnVtYmVyKCk7XG5cbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB1cGRhdGVWZXJzaW9uXG59O1xuXG4iXSwibmFtZXMiOlsidXBkYXRlVmVyc2lvbiIsInZlcnNpb24iLCJ2ZXJzaW9uQ2hhbmdlIiwiQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0UiLCJidW1wTWFqb3JOdW1iZXIiLCJyZXNldE1pbm9yTnVtYmVyIiwicmVzZXRQYXRjaE51bWJlciIsIkFERElUSVZFX1ZFUlNJT05fQ0hBTkdFIiwiYnVtcE1pbm9yTnVtYmVyIiwiQ09TTUVUSUNfVkVSU0lPTl9DSEFOR0UiLCJidW1wUGF0Y2hOdW1iZXIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs4QkFFMEY7QUFFMUYsU0FBU0EsY0FBY0MsT0FBTyxFQUFFQyxhQUFhLEVBQUU7SUFDN0MsT0FBUUE7UUFDTixLQUFLQyx1Q0FBdUI7WUFDMUJGLFFBQVFHLGVBQWU7WUFDdkJILFFBQVFJLGdCQUFnQjtZQUN4QkosUUFBUUssZ0JBQWdCO1lBRXhCLEtBQU07UUFFUixLQUFLQyx1Q0FBdUI7WUFDMUJOLFFBQVFPLGVBQWU7WUFDdkJQLFFBQVFLLGdCQUFnQjtZQUV4QixLQUFNO1FBRVIsS0FBS0csdUNBQXVCO1lBQzFCUixRQUFRUyxlQUFlO1lBRXZCLEtBQU07SUFDVjtBQUNGO0FBRUFDLE9BQU9DLE9BQU8sR0FBRztJQUNmWixlQUFBQTtBQUNGIn0=
@@ -0,0 +1,26 @@
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
+ BREAKING_VERSION_CHANGE: function() {
13
+ return BREAKING_VERSION_CHANGE;
14
+ },
15
+ ADDITIVE_VERSION_CHANGE: function() {
16
+ return ADDITIVE_VERSION_CHANGE;
17
+ },
18
+ COSMETIC_VERSION_CHANGE: function() {
19
+ return COSMETIC_VERSION_CHANGE;
20
+ }
21
+ });
22
+ var BREAKING_VERSION_CHANGE = "breaking";
23
+ var ADDITIVE_VERSION_CHANGE = "additive";
24
+ var COSMETIC_VERSION_CHANGE = "cosmetic";
25
+
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uQ2hhbmdlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGNvbnN0IEJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFID0gXCJicmVha2luZ1wiO1xuZXhwb3J0IGNvbnN0IEFERElUSVZFX1ZFUlNJT05fQ0hBTkdFID0gXCJhZGRpdGl2ZVwiO1xuZXhwb3J0IGNvbnN0IENPU01FVElDX1ZFUlNJT05fQ0hBTkdFID0gXCJjb3NtZXRpY1wiO1xuIl0sIm5hbWVzIjpbIkJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFIiwiQURESVRJVkVfVkVSU0lPTl9DSEFOR0UiLCJDT1NNRVRJQ19WRVJTSU9OX0NIQU5HRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRWFBLHVCQUF1QjtlQUF2QkE7O0lBQ0FDLHVCQUF1QjtlQUF2QkE7O0lBQ0FDLHVCQUF1QjtlQUF2QkE7OztBQUZOLElBQU1GLDBCQUEwQjtBQUNoQyxJQUFNQywwQkFBMEI7QUFDaEMsSUFBTUMsMEJBQTBCIn0=
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.355",
4
+ "version": "0.0.358",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -14,7 +14,7 @@
14
14
  "necessary": "^11.1.11",
15
15
  "occam-custom-grammars": "^5.0.359",
16
16
  "occam-dom": "^3.0.171",
17
- "occam-file-system": "^5.0.71",
17
+ "occam-file-system": "^5.0.72",
18
18
  "occam-grammar-utilities": "^7.0.66"
19
19
  },
20
20
  "devDependencies": {
package/src/constants.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  export const COMMA = ',';
4
- export const EMPTY_STRING = "";
4
+ export const STRING = "string";
5
+ export const NUMBER = "number";
6
+ export const BOOLEAN = "boolean";
5
7
  export const LEFT_BRACKET = "(";
6
8
  export const RIGHT_BRACKET = ")";
7
9
  export const MAXIMUM_INDEXES_LENGTH = 10;
package/src/index.js CHANGED
@@ -3,5 +3,6 @@
3
3
  export { default as Callbacks } from "./callbacks";
4
4
  export { default as verifyRelease } from "./verify/release";
5
5
  export { default as ReleaseContext } from "./context/release";
6
-
6
+ export { default as versionChanges } from "./versionChanges";
7
+ export { default as versionUtilities } from "./utilities/version";
7
8
  export { default as releaseContextUtilities } from "./utilities/releaseContext";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ export const NULL_JSON_TYPE = "null";
4
+ export const ARRAY_JSON_TYPE = "array";
5
+ export const OBJECT_JSON_TYPE = "object";
6
+ export const PRIMITIVE_JSON_TYPE = "primitive";
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+
3
+ import { arrayUtilities } from "necessary";
4
+
5
+ import { STRING, NUMBER, BOOLEAN } from "../constants";
6
+ import { NULL_JSON_TYPE, ARRAY_JSON_TYPE, OBJECT_JSON_TYPE, PRIMITIVE_JSON_TYPE } from "../jsonTypes";
7
+ import { BREAKING_VERSION_CHANGE, ADDITIVE_VERSION_CHANGE, COSMETIC_VERSION_CHANGE } from "../versionChanges";
8
+
9
+ const { first } = arrayUtilities;
10
+
11
+ function compareJSON(jsonA, jsonB) {
12
+ let result = BREAKING_VERSION_CHANGE;
13
+
14
+ const jsonAType = typeOf(jsonA),
15
+ jsonBType = typeOf(jsonB);
16
+
17
+ if (jsonAType === jsonBType) {
18
+ const jsonType = jsonAType; ///
19
+
20
+ switch (jsonType) {
21
+ case ARRAY_JSON_TYPE: {
22
+ const arrayA = jsonA, ///
23
+ arrayB = jsonB; ///
24
+
25
+ result = compareArrays(arrayA, arrayB);
26
+
27
+ break;
28
+ }
29
+
30
+ case OBJECT_JSON_TYPE: {
31
+ const objectA = jsonA, ///
32
+ objectB = jsonB; ///
33
+
34
+ result = compareObjects(objectA, objectB);
35
+
36
+ break;
37
+ }
38
+
39
+ case PRIMITIVE_JSON_TYPE: {
40
+ const primitiveA = jsonA, ///
41
+ primitiveB = jsonB; ///
42
+
43
+ result = comparePrimitives(primitiveA, primitiveB);
44
+
45
+ break;
46
+ }
47
+ }
48
+ }
49
+
50
+ return result;
51
+ }
52
+
53
+ module.exports = {
54
+ compareJSON
55
+ };
56
+
57
+ function compareArrays(arrayA, arrayB) {
58
+ let result;
59
+
60
+ const arrayALength = arrayA.length,
61
+ arrayBLength = arrayB.length;
62
+
63
+ if (arrayALength === 0) {
64
+ if (arrayBLength === 0) {
65
+ result = COSMETIC_VERSION_CHANGE;
66
+ } else {
67
+ result = ADDITIVE_VERSION_CHANGE;
68
+ }
69
+ } else {
70
+ if (arrayBLength === 0) {
71
+ result = BREAKING_VERSION_CHANGE;
72
+ } else {
73
+ const firstElementA = first(arrayA), ///
74
+ elementA = firstElementA, ///
75
+ elementB = arrayB.find((elementB) => {
76
+ const jsonA = elementA, ///
77
+ jsonB = elementB, ///
78
+ result = compareJSON(jsonA, jsonB);
79
+
80
+ if (result === COSMETIC_VERSION_CHANGE) {
81
+ return true;
82
+ }
83
+ }) || null;
84
+
85
+ if (elementB !== null) {
86
+ arrayA = deleteElement(arrayA, elementA);
87
+
88
+ arrayB = deleteElement(arrayB, elementB);
89
+
90
+ result = compareArrays(arrayA, arrayB);
91
+ } else {
92
+ result = BREAKING_VERSION_CHANGE;
93
+ }
94
+ }
95
+ }
96
+
97
+ return result;
98
+ }
99
+
100
+ function compareObjects(objectA, objectB) {
101
+ let result;
102
+
103
+ const keysA = Object.keys(objectA),
104
+ keysB = Object.keys(objectB),
105
+ keysALength = keysA.length,
106
+ keysBLength = keysB.length;
107
+
108
+ if (keysALength === 0) {
109
+ if (keysBLength === 0) {
110
+ result = COSMETIC_VERSION_CHANGE;
111
+ } else {
112
+ result = ADDITIVE_VERSION_CHANGE;
113
+ }
114
+ } else {
115
+ if (keysBLength === 0) {
116
+ result = BREAKING_VERSION_CHANGE;
117
+ } else {
118
+ const firstKeyA = first(keysA), ///
119
+ keyA = firstKeyA, ///
120
+ keyB = keysB.find((keyB, index) => {
121
+ if (keyA === keyB) {
122
+ const valueA = objectA[keyA],
123
+ valueB = objectB[keyB],
124
+ jsonA = valueA, ///
125
+ jsonB = valueB, ///
126
+ result = compareJSON(jsonA, jsonB);
127
+
128
+ if (result === COSMETIC_VERSION_CHANGE) { ///
129
+ return true;
130
+ }
131
+ }
132
+ }) || null;
133
+
134
+ if (keyB !== null) {
135
+ objectA = deleteKey(objectA, keyA);
136
+
137
+ objectB = deleteKey(objectB, keyB);
138
+
139
+ result = compareObjects(objectA, objectB);
140
+ } else {
141
+ result = BREAKING_VERSION_CHANGE;
142
+ }
143
+ }
144
+ }
145
+
146
+ return result;
147
+ }
148
+
149
+ function comparePrimitives(primitiveA, primitiveB) {
150
+ let result = BREAKING_VERSION_CHANGE;
151
+
152
+ if (primitiveA === primitiveB) {
153
+ result = COSMETIC_VERSION_CHANGE;
154
+ }
155
+
156
+ return result;
157
+ }
158
+
159
+ function typeOf(json) {
160
+ let type;
161
+
162
+ const _null = isNull(json),
163
+ array = isArray(json),
164
+ object = isObject(json),
165
+ primitive = isPrimitive(json);
166
+
167
+ if (_null) {
168
+ type = NULL_JSON_TYPE;
169
+ }
170
+
171
+ if (array) {
172
+ type = ARRAY_JSON_TYPE;
173
+ }
174
+
175
+ if (object) {
176
+ type = OBJECT_JSON_TYPE;
177
+ }
178
+
179
+ if (primitive) {
180
+ type = PRIMITIVE_JSON_TYPE;
181
+ }
182
+
183
+ return type;
184
+ }
185
+
186
+ function isNull(json) {
187
+ const _null = (json === null);
188
+
189
+ return _null;
190
+ }
191
+
192
+ function isArray(json) {
193
+ const array = Array.isArray(json);
194
+
195
+ return array;
196
+ }
197
+
198
+ function isObject(json) {
199
+ const array = isArray(json),
200
+ primitive = isPrimitive(json),
201
+ object = (!array && !primitive);
202
+
203
+ return object;
204
+ }
205
+
206
+ function isString(json) {
207
+ const string = ((typeof json) === STRING);
208
+
209
+ return string;
210
+ }
211
+
212
+ function isNumber(json) {
213
+ const number = ((typeof json) === NUMBER);
214
+
215
+ return number;
216
+ }
217
+
218
+ function isBoolean(json) {
219
+ const boolean = ((typeof json) === BOOLEAN);
220
+
221
+ return boolean;
222
+ }
223
+
224
+ function isPrimitive(json) {
225
+ const _null = isNull(json),
226
+ string = isString(json),
227
+ number = isNumber(json),
228
+ boolean = isBoolean(json),
229
+ primitive = (_null || string || number || boolean);
230
+
231
+ return primitive;
232
+ }
233
+
234
+ function deleteElement(array, element) {
235
+ const deletedElement = element; ///
236
+
237
+ array = array.reduce((array, element) => { ///
238
+ if (element !== deletedElement) {
239
+ array.push(element);
240
+ }
241
+
242
+ return array;
243
+ }, []);
244
+
245
+ return array;
246
+ }
247
+
248
+ function deleteKey(object, key) {
249
+ const deletedKey = key, ///
250
+ keys = Object.keys(object),
251
+ values = Object.values(object);
252
+
253
+ object = keys.reduce((object, key, index) => { ///
254
+ if (key !== deletedKey) {
255
+ const value = values[index];
256
+
257
+ object[key] = value;
258
+ }
259
+
260
+ return object;
261
+ }, {});
262
+
263
+ return object;
264
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ import { BREAKING_VERSION_CHANGE, ADDITIVE_VERSION_CHANGE, COSMETIC_VERSION_CHANGE } from "../versionChanges";
4
+
5
+ function updateVersion(version, versionChange) {
6
+ switch (versionChange) {
7
+ case BREAKING_VERSION_CHANGE:
8
+ version.bumpMajorNumber();
9
+ version.resetMinorNumber();
10
+ version.resetPatchNumber();
11
+
12
+ break;
13
+
14
+ case ADDITIVE_VERSION_CHANGE:
15
+ version.bumpMinorNumber();
16
+ version.resetPatchNumber();
17
+
18
+ break;
19
+
20
+ case COSMETIC_VERSION_CHANGE:
21
+ version.bumpPatchNumber();
22
+
23
+ break;
24
+ }
25
+ }
26
+
27
+ module.exports = {
28
+ updateVersion
29
+ };
30
+
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export const BREAKING_VERSION_CHANGE = "breaking";
4
+ export const ADDITIVE_VERSION_CHANGE = "additive";
5
+ export const COSMETIC_VERSION_CHANGE = "cosmetic";