occam-verify-cli 0.0.356 → 0.0.359
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 +12 -4
- package/lib/index.js +13 -1
- package/lib/jsonTypes.js +30 -0
- package/lib/utilities/json.js +181 -0
- package/lib/utilities/version.js +26 -0
- package/lib/versionChanges.js +26 -0
- package/package.json +1 -1
- package/src/constants.js +3 -1
- package/src/index.js +3 -1
- package/src/jsonTypes.js +6 -0
- package/src/utilities/json.js +264 -0
- package/src/utilities/version.js +30 -0
- package/src/versionChanges.js +5 -0
package/lib/constants.js
CHANGED
|
@@ -12,8 +12,14 @@ _export(exports, {
|
|
|
12
12
|
COMMA: function() {
|
|
13
13
|
return COMMA;
|
|
14
14
|
},
|
|
15
|
-
|
|
16
|
-
return
|
|
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
|
|
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,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBDT01NQSA9ICcsJztcbmV4cG9ydCBjb25zdCBTVFJJTkcgPSBcInN0cmluZ1wiO1xuZXhwb3J0IGNvbnN0IE5VTUJFUiA9IFwibnVtYmVyXCI7XG5leHBvcnQgY29uc3QgQk9PTEVBTiA9IFwiYm9vbGVhblwiO1xuZXhwb3J0IGNvbnN0IExFRlRfQlJBQ0tFVCA9IFwiKFwiO1xuZXhwb3J0IGNvbnN0IFJJR0hUX0JSQUNLRVQgPSBcIilcIjtcbmV4cG9ydCBjb25zdCBNQVhJTVVNX0lOREVYRVNfTEVOR1RIID0gMTA7XG5leHBvcnQgY29uc3QgTUFYSU1VTV9QRVJNVVRBVElPTl9MRU5HVEggPSA1O1xuZXhwb3J0IGNvbnN0IEJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0NISUxEX05PREVTX0xFTkdUSCA9IDM7XG4iXSwibmFtZXMiOlsiQ09NTUEiLCJTVFJJTkciLCJOVU1CRVIiLCJCT09MRUFOIiwiTEVGVF9CUkFDS0VUIiwiUklHSFRfQlJBQ0tFVCIsIk1BWElNVU1fSU5ERVhFU19MRU5HVEgiLCJNQVhJTVVNX1BFUk1VVEFUSU9OX0xFTkdUSCIsIkJSQUNLRVRFRF9NRVRBU1RBVEVNRU5UX0NISUxEX05PREVTX0xFTkdUSCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRWFBLEtBQUs7ZUFBTEE7O0lBQ0FDLE1BQU07ZUFBTkE7O0lBQ0FDLE1BQU07ZUFBTkE7O0lBQ0FDLE9BQU87ZUFBUEE7O0lBQ0FDLFlBQVk7ZUFBWkE7O0lBQ0FDLGFBQWE7ZUFBYkE7O0lBQ0FDLHNCQUFzQjtlQUF0QkE7O0lBQ0FDLDBCQUEwQjtlQUExQkE7O0lBQ0FDLDBDQUEwQztlQUExQ0E7OztBQVJOLElBQU1SLFFBQVE7QUFDZCxJQUFNQyxTQUFTO0FBQ2YsSUFBTUMsU0FBUztBQUNmLElBQU1DLFVBQVU7QUFDaEIsSUFBTUMsZUFBZTtBQUNyQixJQUFNQyxnQkFBZ0I7QUFDdEIsSUFBTUMseUJBQXlCO0FBQy9CLElBQU1DLDZCQUE2QjtBQUNuQyxJQUFNQyw2Q0FBNkMifQ==
|
package/lib/index.js
CHANGED
|
@@ -12,19 +12,31 @@ _export(exports, {
|
|
|
12
12
|
Callbacks: function() {
|
|
13
13
|
return _callbacks.default;
|
|
14
14
|
},
|
|
15
|
+
jsonUtilities: function() {
|
|
16
|
+
return _json.default;
|
|
17
|
+
},
|
|
15
18
|
verifyRelease: function() {
|
|
16
19
|
return _release.default;
|
|
17
20
|
},
|
|
18
21
|
ReleaseContext: function() {
|
|
19
22
|
return _release1.default;
|
|
20
23
|
},
|
|
24
|
+
versionChanges: function() {
|
|
25
|
+
return _versionChanges.default;
|
|
26
|
+
},
|
|
27
|
+
versionUtilities: function() {
|
|
28
|
+
return _version.default;
|
|
29
|
+
},
|
|
21
30
|
releaseContextUtilities: function() {
|
|
22
31
|
return _releaseContext.default;
|
|
23
32
|
}
|
|
24
33
|
});
|
|
25
34
|
var _callbacks = /*#__PURE__*/ _interopRequireDefault(require("./callbacks"));
|
|
35
|
+
var _json = /*#__PURE__*/ _interopRequireDefault(require("./utilities/json"));
|
|
26
36
|
var _release = /*#__PURE__*/ _interopRequireDefault(require("./verify/release"));
|
|
27
37
|
var _release1 = /*#__PURE__*/ _interopRequireDefault(require("./context/release"));
|
|
38
|
+
var _versionChanges = /*#__PURE__*/ _interopRequireDefault(require("./versionChanges"));
|
|
39
|
+
var _version = /*#__PURE__*/ _interopRequireDefault(require("./utilities/version"));
|
|
28
40
|
var _releaseContext = /*#__PURE__*/ _interopRequireDefault(require("./utilities/releaseContext"));
|
|
29
41
|
function _interopRequireDefault(obj) {
|
|
30
42
|
return obj && obj.__esModule ? obj : {
|
|
@@ -32,4 +44,4 @@ function _interopRequireDefault(obj) {
|
|
|
32
44
|
};
|
|
33
45
|
}
|
|
34
46
|
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBDYWxsYmFja3MgfSBmcm9tIFwiLi9jYWxsYmFja3NcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMganNvblV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9qc29uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHZlcmlmeVJlbGVhc2UgfSBmcm9tIFwiLi92ZXJpZnkvcmVsZWFzZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSZWxlYXNlQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHQvcmVsZWFzZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJzaW9uQ2hhbmdlcyB9IGZyb20gXCIuL3ZlcnNpb25DaGFuZ2VzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHZlcnNpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVyc2lvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWxlYXNlQ29udGV4dFV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9yZWxlYXNlQ29udGV4dFwiO1xuIl0sIm5hbWVzIjpbIkNhbGxiYWNrcyIsImpzb25VdGlsaXRpZXMiLCJ2ZXJpZnlSZWxlYXNlIiwiUmVsZWFzZUNvbnRleHQiLCJ2ZXJzaW9uQ2hhbmdlcyIsInZlcnNpb25VdGlsaXRpZXMiLCJyZWxlYXNlQ29udGV4dFV0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRW9CQSxTQUFTO2VBQVRBLGtCQUFTOztJQUNUQyxhQUFhO2VBQWJBLGFBQWE7O0lBQ2JDLGFBQWE7ZUFBYkEsZ0JBQWE7O0lBQ2JDLGNBQWM7ZUFBZEEsaUJBQWM7O0lBQ2RDLGNBQWM7ZUFBZEEsdUJBQWM7O0lBQ2RDLGdCQUFnQjtlQUFoQkEsZ0JBQWdCOztJQUNoQkMsdUJBQXVCO2VBQXZCQSx1QkFBdUI7Ozs4REFOTjt5REFDSTs0REFDQTs2REFDQzttRUFDQTs0REFDRTttRUFDTyJ9
|
package/lib/jsonTypes.js
ADDED
|
@@ -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+IHtcbiAgICAgICAgICAgICAgY29uc3QganNvbkEgPSBlbGVtZW50QSwgLy8vXG4gICAgICAgICAgICAgICAgICAgIGpzb25CID0gZWxlbWVudEIsIC8vL1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlSlNPTihqc29uQSwganNvbkIpO1xuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IENPU01FVElDX1ZFUlNJT05fQ0hBTkdFKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICAgIGlmIChlbGVtZW50QiAhPT0gbnVsbCkge1xuICAgICAgICBhcnJheUEgPSBkZWxldGVFbGVtZW50KGFycmF5QSwgZWxlbWVudEEpO1xuXG4gICAgICAgIGFycmF5QiA9IGRlbGV0ZUVsZW1lbnQoYXJyYXlCLCBlbGVtZW50Qik7XG5cbiAgICAgICAgcmVzdWx0ID0gY29tcGFyZUFycmF5cyhhcnJheUEsIGFycmF5Qik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBCUkVBS0lOR19WRVJTSU9OX0NIQU5HRTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0cyhvYmplY3RBLCBvYmplY3RCKSB7XG4gIGxldCByZXN1bHQ7XG5cbiAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhvYmplY3RBKSxcbiAgICAgICAga2V5c0IgPSBPYmplY3Qua2V5cyhvYmplY3RCKSxcbiAgICAgICAga2V5c0FMZW5ndGggPSBrZXlzQS5sZW5ndGgsXG4gICAgICAgIGtleXNCTGVuZ3RoID0ga2V5c0IubGVuZ3RoO1xuXG4gIGlmIChrZXlzQUxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChrZXlzQkxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVzdWx0ID0gQ09TTUVUSUNfVkVSU0lPTl9DSEFOR0U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IEFERElUSVZFX1ZFUlNJT05fQ0hBTkdFO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoa2V5c0JMZW5ndGggPT09IDApIHtcbiAgICAgIHJlc3VsdCA9IEJSRUFLSU5HX1ZFUlNJT05fQ0hBTkdFO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaXJzdEtleUEgPSBmaXJzdChrZXlzQSksICAvLy9cbiAgICAgICAgICAgIGtleUEgPSBmaXJzdEtleUEsIC8vL1xuICAgICAgICAgICAga2V5QiA9IGtleXNCLmZpbmQoKGtleUIsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChrZXlBID09PSBrZXlCKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVBID0gb2JqZWN0QVtrZXlBXSxcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUIgPSBvYmplY3RCW2tleUJdLFxuICAgICAgICAgICAgICAgICAgICAgIGpzb25BID0gdmFsdWVBLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgICBqc29uQiA9IHZhbHVlQiwgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUpTT04oanNvbkEsIGpzb25CKTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IENPU01FVElDX1ZFUlNJT05fQ0hBTkdFKSB7ICAvLy9cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgICAgaWYgKGtleUIgIT09IG51bGwpIHtcbiAgICAgICAgb2JqZWN0QSA9IGRlbGV0ZUtleShvYmplY3RBLCBrZXlBKTtcblxuICAgICAgICBvYmplY3RCID0gZGVsZXRlS2V5KG9iamVjdEIsIGtleUIpO1xuXG4gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVPYmplY3RzKG9iamVjdEEsIG9iamVjdEIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29tcGFyZVByaW1pdGl2ZXMocHJpbWl0aXZlQSwgcHJpbWl0aXZlQikge1xuICBsZXQgcmVzdWx0ID0gQlJFQUtJTkdfVkVSU0lPTl9DSEFOR0U7XG5cbiAgaWYgKHByaW1pdGl2ZUEgPT09IHByaW1pdGl2ZUIpIHtcbiAgICByZXN1bHQgPSBDT1NNRVRJQ19WRVJTSU9OX0NIQU5HRTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZihqc29uKSB7XG4gIGxldCB0eXBlO1xuXG4gIGNvbnN0IF9udWxsID0gaXNOdWxsKGpzb24pLFxuICAgICAgICBhcnJheSA9IGlzQXJyYXkoanNvbiksXG4gICAgICAgIG9iamVjdCA9IGlzT2JqZWN0KGpzb24pLFxuICAgICAgICBwcmltaXRpdmUgPSBpc1ByaW1pdGl2ZShqc29uKTtcblxuICBpZiAoX251bGwpIHtcbiAgICB0eXBlID0gTlVMTF9KU09OX1RZUEU7XG4gIH1cblxuICBpZiAoYXJyYXkpIHtcbiAgICB0eXBlID0gQVJSQVlfSlNPTl9UWVBFO1xuICB9XG5cbiAgaWYgKG9iamVjdCkge1xuICAgIHR5cGUgPSBPQkpFQ1RfSlNPTl9UWVBFO1xuICB9XG5cbiAgaWYgKHByaW1pdGl2ZSkge1xuICAgIHR5cGUgPSBQUklNSVRJVkVfSlNPTl9UWVBFO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbChqc29uKSB7XG4gIGNvbnN0IF9udWxsID0gKGpzb24gPT09IG51bGwpO1xuXG4gIHJldHVybiBfbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNBcnJheShqc29uKSB7XG4gIGNvbnN0IGFycmF5ID0gQXJyYXkuaXNBcnJheShqc29uKTtcblxuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGpzb24pIHtcbiAgY29uc3QgYXJyYXkgPSBpc0FycmF5KGpzb24pLFxuICAgICAgICBwcmltaXRpdmUgPSBpc1ByaW1pdGl2ZShqc29uKSxcbiAgICAgICAgb2JqZWN0ID0gKCFhcnJheSAmJiAhcHJpbWl0aXZlKTtcblxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBpc1N0cmluZyhqc29uKSB7XG4gIGNvbnN0IHN0cmluZyA9ICgodHlwZW9mIGpzb24pID09PSBTVFJJTkcpO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGpzb24pIHtcbiAgY29uc3QgbnVtYmVyID0gKCh0eXBlb2YganNvbikgPT09IE5VTUJFUik7XG5cbiAgcmV0dXJuIG51bWJlcjtcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKGpzb24pIHtcbiAgY29uc3QgYm9vbGVhbiA9ICgodHlwZW9mIGpzb24pID09PSBCT09MRUFOKTtcblxuICByZXR1cm4gYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gaXNQcmltaXRpdmUoanNvbikge1xuICBjb25zdCBfbnVsbCA9IGlzTnVsbChqc29uKSxcbiAgICAgICAgc3RyaW5nID0gaXNTdHJpbmcoanNvbiksXG4gICAgICAgIG51bWJlciA9IGlzTnVtYmVyKGpzb24pLFxuICAgICAgICBib29sZWFuID0gaXNCb29sZWFuKGpzb24pLFxuICAgICAgICBwcmltaXRpdmUgPSAoX251bGwgfHwgc3RyaW5nIHx8IG51bWJlciB8fCBib29sZWFuKTtcblxuICByZXR1cm4gcHJpbWl0aXZlO1xufVxuXG5mdW5jdGlvbiBkZWxldGVFbGVtZW50KGFycmF5LCBlbGVtZW50KSB7XG4gIGNvbnN0IGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgYXJyYXkgPSBhcnJheS5yZWR1Y2UoKGFycmF5LCBlbGVtZW50KSA9PiB7ICAvLy9cbiAgICBpZiAoZWxlbWVudCAhPT0gZGVsZXRlZEVsZW1lbnQpIHtcbiAgICAgIGFycmF5LnB1c2goZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycmF5O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBkZWxldGVLZXkob2JqZWN0LCBrZXkpIHtcbiAgY29uc3QgZGVsZXRlZEtleSA9IGtleSwgLy8vXG4gICAgICAgIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgICAgICB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKG9iamVjdCk7XG5cbiAgb2JqZWN0ID0ga2V5cy5yZWR1Y2UoKG9iamVjdCwga2V5LCBpbmRleCkgPT4geyAgLy8vXG4gICAgaWYgKGtleSAhPT0gZGVsZXRlZEtleSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbaW5kZXhdO1xuXG4gICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0sIHt9KTtcblxuICByZXR1cm4gb2JqZWN0O1xufVxuIl0sIm5hbWVzIjpbImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJjb21wYXJlSlNPTiIsImpzb25BIiwianNvbkIiLCJyZXN1bHQiLCJCUkVBS0lOR19WRVJTSU9OX0NIQU5HRSIsImpzb25BVHlwZSIsInR5cGVPZiIsImpzb25CVHlwZSIsImpzb25UeXBlIiwiQVJSQVlfSlNPTl9UWVBFIiwiYXJyYXlBIiwiYXJyYXlCIiwiY29tcGFyZUFycmF5cyIsIk9CSkVDVF9KU09OX1RZUEUiLCJvYmplY3RBIiwib2JqZWN0QiIsImNvbXBhcmVPYmplY3RzIiwiUFJJTUlUSVZFX0pTT05fVFlQRSIsInByaW1pdGl2ZUEiLCJwcmltaXRpdmVCIiwiY29tcGFyZVByaW1pdGl2ZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXJyYXlBTGVuZ3RoIiwibGVuZ3RoIiwiYXJyYXlCTGVuZ3RoIiwiQ09TTUVUSUNfVkVSU0lPTl9DSEFOR0UiLCJBRERJVElWRV9WRVJTSU9OX0NIQU5HRSIsImZpcnN0RWxlbWVudEEiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiZmluZCIsImRlbGV0ZUVsZW1lbnQiLCJrZXlzQSIsIk9iamVjdCIsImtleXMiLCJrZXlzQiIsImtleXNBTGVuZ3RoIiwia2V5c0JMZW5ndGgiLCJmaXJzdEtleUEiLCJrZXlBIiwia2V5QiIsImluZGV4IiwidmFsdWVBIiwidmFsdWVCIiwiZGVsZXRlS2V5IiwianNvbiIsInR5cGUiLCJfbnVsbCIsImlzTnVsbCIsImFycmF5IiwiaXNBcnJheSIsIm9iamVjdCIsImlzT2JqZWN0IiwicHJpbWl0aXZlIiwiaXNQcmltaXRpdmUiLCJOVUxMX0pTT05fVFlQRSIsIkFycmF5IiwiaXNTdHJpbmciLCJzdHJpbmciLCJTVFJJTkciLCJpc051bWJlciIsIm51bWJlciIsIk5VTUJFUiIsImlzQm9vbGVhbiIsImJvb2xlYW4iLCJCT09MRUFOIiwiZWxlbWVudCIsImRlbGV0ZWRFbGVtZW50IiwicmVkdWNlIiwicHVzaCIsImtleSIsImRlbGV0ZWRLZXkiLCJ2YWx1ZXMiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7eUJBRStCO3lCQUVTO3lCQUMrQzs4QkFDRzs7Ozs7QUFFMUYsSUFBTSxBQUFFQSxRQUFVQyx5QkFBYyxDQUF4QkQ7QUFFUixTQUFTRSxZQUFZQyxLQUFLLEVBQUVDLEtBQUssRUFBRTtJQUNqQyxJQUFJQyxTQUFTQyx1Q0FBdUI7SUFFcEMsSUFBTUMsWUFBWUMsT0FBT0wsUUFDbkJNLFlBQVlELE9BQU9KO0lBRXpCLElBQUlHLGNBQWNFLFdBQVc7UUFDM0IsSUFBTUMsV0FBV0gsV0FBVyxHQUFHO1FBRS9CLE9BQVFHO1lBQ04sS0FBS0MsMEJBQWU7Z0JBQUU7b0JBQ3BCLElBQU1DLFNBQVNULE9BQ1RVLFNBQVNULE9BQU8sR0FBRztvQkFFekJDLFNBQVNTLGNBQWNGLFFBQVFDO29CQUUvQixLQUFNO2dCQUNSO1lBRUEsS0FBS0UsMkJBQWdCO2dCQUFFO29CQUNyQixJQUFNQyxVQUFVYixPQUNWYyxVQUFVYixPQUFPLEdBQUc7b0JBRTFCQyxTQUFTYSxlQUFlRixTQUFTQztvQkFFakMsS0FBTTtnQkFDUjtZQUVBLEtBQUtFLDhCQUFtQjtnQkFBRTtvQkFDeEIsSUFBTUMsYUFBYWpCLE9BQ2JrQixhQUFhakIsT0FBTyxHQUFHO29CQUU3QkMsU0FBU2lCLGtCQUFrQkYsWUFBWUM7b0JBRXZDLEtBQU07Z0JBQ1I7UUFDRjtJQUNGLENBQUM7SUFFRCxPQUFPaEI7QUFDVDtBQUVBa0IsT0FBT0MsT0FBTyxHQUFHO0lBQ2Z0QixhQUFBQTtBQUNGO0FBRUEsU0FBU1ksY0FBY0YsTUFBTSxFQUFFQyxNQUFNLEVBQUU7SUFDckMsSUFBSVI7SUFFSixJQUFNb0IsZUFBZWIsT0FBT2MsTUFBTSxFQUM1QkMsZUFBZWQsT0FBT2EsTUFBTTtJQUVsQyxJQUFJRCxpQkFBaUIsR0FBRztRQUN0QixJQUFJRSxpQkFBaUIsR0FBRztZQUN0QnRCLFNBQVN1Qix1Q0FBdUI7UUFDbEMsT0FBTztZQUNMdkIsU0FBU3dCLHVDQUF1QjtRQUNsQyxDQUFDO0lBQ0gsT0FBTztRQUNMLElBQUlGLGlCQUFpQixHQUFHO1lBQ3RCdEIsU0FBU0MsdUNBQXVCO1FBQ2xDLE9BQU87WUFDTCxJQUFNd0IsZ0JBQWdCOUIsTUFBTVksU0FDdEJtQixXQUFXRCxlQUNYRSxXQUFXbkIsT0FBT29CLElBQUksQ0FBQyxTQUFDRCxVQUFhO2dCQUNuQyxJQUFNN0IsUUFBUTRCLFVBQ1IzQixRQUFRNEIsVUFDUjNCLFNBQVNILFlBQVlDLE9BQU9DO2dCQUVsQyxJQUFJQyxXQUFXdUIsdUNBQXVCLEVBQUU7b0JBQ3RDLE9BQU8sSUFBSTtnQkFDYixDQUFDO1lBQ0gsTUFBTSxJQUFJO1lBRWhCLElBQUlJLGFBQWEsSUFBSSxFQUFFO2dCQUNyQnBCLFNBQVNzQixjQUFjdEIsUUFBUW1CO2dCQUUvQmxCLFNBQVNxQixjQUFjckIsUUFBUW1CO2dCQUUvQjNCLFNBQVNTLGNBQWNGLFFBQVFDO1lBQ2pDLE9BQU87Z0JBQ0xSLFNBQVNDLHVDQUF1QjtZQUNsQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPRDtBQUNUO0FBRUEsU0FBU2EsZUFBZUYsT0FBTyxFQUFFQyxPQUFPLEVBQUU7SUFDeEMsSUFBSVo7SUFFSixJQUFNOEIsUUFBUUMsT0FBT0MsSUFBSSxDQUFDckIsVUFDcEJzQixRQUFRRixPQUFPQyxJQUFJLENBQUNwQixVQUNwQnNCLGNBQWNKLE1BQU1ULE1BQU0sRUFDMUJjLGNBQWNGLE1BQU1aLE1BQU07SUFFaEMsSUFBSWEsZ0JBQWdCLEdBQUc7UUFDckIsSUFBSUMsZ0JBQWdCLEdBQUc7WUFDckJuQyxTQUFTdUIsdUNBQXVCO1FBQ2xDLE9BQU87WUFDTHZCLFNBQVN3Qix1Q0FBdUI7UUFDbEMsQ0FBQztJQUNILE9BQU87UUFDTCxJQUFJVyxnQkFBZ0IsR0FBRztZQUNyQm5DLFNBQVNDLHVDQUF1QjtRQUNsQyxPQUFPO1lBQ0wsSUFBTW1DLFlBQVl6QyxNQUFNbUMsUUFDbEJPLE9BQU9ELFdBQ1BFLE9BQU9MLE1BQU1MLElBQUksQ0FBQyxTQUFDVSxNQUFNQyxPQUFVO2dCQUNqQyxJQUFJRixTQUFTQyxNQUFNO29CQUNqQixJQUFNRSxTQUFTN0IsT0FBTyxDQUFDMEIsS0FBSyxFQUN0QkksU0FBUzdCLE9BQU8sQ0FBQzBCLEtBQUssRUFDdEJ4QyxRQUFRMEMsUUFDUnpDLFFBQVEwQyxRQUNSekMsU0FBU0gsWUFBWUMsT0FBT0M7b0JBRWxDLElBQUlDLFdBQVd1Qix1Q0FBdUIsRUFBRTt3QkFDdEMsT0FBTyxJQUFJO29CQUNiLENBQUM7Z0JBQ0gsQ0FBQztZQUNILE1BQU0sSUFBSTtZQUVoQixJQUFJZSxTQUFTLElBQUksRUFBRTtnQkFDakIzQixVQUFVK0IsVUFBVS9CLFNBQVMwQjtnQkFFN0J6QixVQUFVOEIsVUFBVTlCLFNBQVMwQjtnQkFFN0J0QyxTQUFTYSxlQUFlRixTQUFTQztZQUNuQyxPQUFPO2dCQUNMWixTQUFTQyx1Q0FBdUI7WUFDbEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT0Q7QUFDVDtBQUVBLFNBQVNpQixrQkFBa0JGLFVBQVUsRUFBRUMsVUFBVSxFQUFFO0lBQ2pELElBQUloQixTQUFTQyx1Q0FBdUI7SUFFcEMsSUFBSWMsZUFBZUMsWUFBWTtRQUM3QmhCLFNBQVN1Qix1Q0FBdUI7SUFDbEMsQ0FBQztJQUVELE9BQU92QjtBQUNUO0FBRUEsU0FBU0csT0FBT3dDLElBQUksRUFBRTtJQUNwQixJQUFJQztJQUVKLElBQU1DLFFBQVFDLE9BQU9ILE9BQ2ZJLFFBQVFDLFFBQVFMLE9BQ2hCTSxTQUFTQyxTQUFTUCxPQUNsQlEsWUFBWUMsWUFBWVQ7SUFFOUIsSUFBSUUsT0FBTztRQUNURCxPQUFPUyx5QkFBYztJQUN2QixDQUFDO0lBRUQsSUFBSU4sT0FBTztRQUNUSCxPQUFPdEMsMEJBQWU7SUFDeEIsQ0FBQztJQUVELElBQUkyQyxRQUFRO1FBQ1ZMLE9BQU9sQywyQkFBZ0I7SUFDekIsQ0FBQztJQUVELElBQUl5QyxXQUFXO1FBQ2JQLE9BQU85Qiw4QkFBbUI7SUFDNUIsQ0FBQztJQUVELE9BQU84QjtBQUNUO0FBRUEsU0FBU0UsT0FBT0gsSUFBSSxFQUFFO0lBQ3BCLElBQU1FLFFBQVNGLFNBQVMsSUFBSTtJQUU1QixPQUFPRTtBQUNUO0FBRUEsU0FBU0csUUFBUUwsSUFBSSxFQUFFO0lBQ3JCLElBQU1JLFFBQVFPLE1BQU1OLE9BQU8sQ0FBQ0w7SUFFNUIsT0FBT0k7QUFDVDtBQUVBLFNBQVNHLFNBQVNQLElBQUksRUFBRTtJQUN0QixJQUFNSSxRQUFRQyxRQUFRTCxPQUNoQlEsWUFBWUMsWUFBWVQsT0FDeEJNLFNBQVUsQ0FBQ0YsU0FBUyxDQUFDSTtJQUUzQixPQUFPRjtBQUNUO0FBRUEsU0FBU00sU0FBU1osSUFBSSxFQUFFO0lBQ3RCLElBQU1hLFNBQVUsQUFBQyxDQUFBLE9BQU9iLHFDQUFQLFFBQU9BLEtBQUksQUFBRCxNQUFPYyxpQkFBTTtJQUV4QyxPQUFPRDtBQUNUO0FBRUEsU0FBU0UsU0FBU2YsSUFBSSxFQUFFO0lBQ3RCLElBQU1nQixTQUFVLEFBQUMsQ0FBQSxPQUFPaEIscUNBQVAsUUFBT0EsS0FBSSxBQUFELE1BQU9pQixpQkFBTTtJQUV4QyxPQUFPRDtBQUNUO0FBRUEsU0FBU0UsVUFBVWxCLElBQUksRUFBRTtJQUN2QixJQUFNbUIsVUFBVyxBQUFDLENBQUEsT0FBT25CLHFDQUFQLFFBQU9BLEtBQUksQUFBRCxNQUFPb0Isa0JBQU87SUFFMUMsT0FBT0Q7QUFDVDtBQUVBLFNBQVNWLFlBQVlULElBQUksRUFBRTtJQUN6QixJQUFNRSxRQUFRQyxPQUFPSCxPQUNmYSxTQUFTRCxTQUFTWixPQUNsQmdCLFNBQVNELFNBQVNmLE9BQ2xCbUIsVUFBVUQsVUFBVWxCLE9BQ3BCUSxZQUFhTixTQUFTVyxVQUFVRyxVQUFVRztJQUVoRCxPQUFPWDtBQUNUO0FBRUEsU0FBU3RCLGNBQWNrQixLQUFLLEVBQUVpQixPQUFPLEVBQUU7SUFDckMsSUFBTUMsaUJBQWlCRCxTQUFTLEdBQUc7SUFFbkNqQixRQUFRQSxNQUFNbUIsTUFBTSxDQUFDLFNBQUNuQixPQUFPaUIsU0FBWTtRQUN2QyxJQUFJQSxZQUFZQyxnQkFBZ0I7WUFDOUJsQixNQUFNb0IsSUFBSSxDQUFDSDtRQUNiLENBQUM7UUFFRCxPQUFPakI7SUFDVCxHQUFHLEVBQUU7SUFFTCxPQUFPQTtBQUNUO0FBRUEsU0FBU0wsVUFBVU8sTUFBTSxFQUFFbUIsR0FBRyxFQUFFO0lBQzlCLElBQU1DLGFBQWFELEtBQ2JwQyxPQUFPRCxPQUFPQyxJQUFJLENBQUNpQixTQUNuQnFCLFNBQVN2QyxPQUFPdUMsTUFBTSxDQUFDckI7SUFFN0JBLFNBQVNqQixLQUFLa0MsTUFBTSxDQUFDLFNBQUNqQixRQUFRbUIsS0FBSzdCLE9BQVU7UUFDM0MsSUFBSTZCLFFBQVFDLFlBQVk7WUFDdEIsSUFBTUUsUUFBUUQsTUFBTSxDQUFDL0IsTUFBTTtZQUUzQlUsTUFBTSxDQUFDbUIsSUFBSSxHQUFHRztRQUNoQixDQUFDO1FBRUQsT0FBT3RCO0lBQ1QsR0FBRyxDQUFDO0lBRUosT0FBT0E7QUFDVCJ9
|
|
@@ -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
package/src/constants.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
export const COMMA = ',';
|
|
4
|
-
export const
|
|
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
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
export { default as Callbacks } from "./callbacks";
|
|
4
|
+
export { default as jsonUtilities } from "./utilities/json";
|
|
4
5
|
export { default as verifyRelease } from "./verify/release";
|
|
5
6
|
export { default as ReleaseContext } from "./context/release";
|
|
6
|
-
|
|
7
|
+
export { default as versionChanges } from "./versionChanges";
|
|
8
|
+
export { default as versionUtilities } from "./utilities/version";
|
|
7
9
|
export { default as releaseContextUtilities } from "./utilities/releaseContext";
|
package/src/jsonTypes.js
ADDED
|
@@ -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
|
+
|