@open-rpc/schema-utils-js
Version:
<center> <span> <img alt="CircleCI branch" src="https://img.shields.io/circleci/project/github/open-rpc/schema-utils-js/master.svg"> <img src="https://codecov.io/gh/open-rpc/schema-utils-js/branch/master/graph/badge.svg" /> <img alt="npm" sr
95 lines (94 loc) • 2.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.rpcDocIsEqual = exports.find = exports.compact = exports.findIndex = void 0;
/**
* finds array index of array object which matches predicate
* @param array {Array}
* @param predicate {Function}
* @returns {number} || {undefined}
*/
var findIndex = function (array, predicate) {
var length = array == null ? 0 : array.length;
if (!length) {
return -1;
}
var index = -1;
while (++index < length) {
if (predicate(array[index])) {
return index;
}
}
return -1;
};
exports.findIndex = findIndex;
/**
* Removes false and null values from array
* @param array {Array}
* @returns {Array}
*/
var compact = function (array) {
var index = 0;
var result = [];
for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
var value = array_1[_i];
if (value) {
result[index++] = value;
}
}
return result;
};
exports.compact = compact;
/**
* finds an array elements which matches the predicate
* @param array {Array}
* @param predicate {Function}
* @returns {any} || {undefined}
*/
var find = function (array, predicate) {
var length = array == null ? 0 : array.length;
if (!length) {
return undefined;
}
var index = -1;
while (++index < length) {
if (predicate(array[index])) {
return array[index];
}
}
return undefined;
};
exports.find = find;
/**
* compares OpenrpcDocuments
*
* @param doc1 {OpenrpcDocument}
* @param doc2 {OpenrpcDocument}
* @returns {boolean}
*/
var rpcDocIsEqual = function (doc1, doc2) {
var doc1Keys = Object.keys(doc1);
var doc2Keys = Object.keys(doc2);
var doc1Len = doc1Keys.length;
var doc2Len = doc2Keys.length;
if (doc1Len != doc2Len) {
return false;
}
var key;
var index = doc1Len;
while (index--) {
key = doc1Keys[index];
if (!(key in doc2)) {
return false;
}
else if (typeof doc1[key] === "object" && typeof doc2[key] === "object") {
if (!(0, exports.rpcDocIsEqual)(doc1[key], doc2[key])) {
return false;
}
}
else if (doc1[key] != doc2[key]) {
return false;
}
}
return true;
};
exports.rpcDocIsEqual = rpcDocIsEqual;
;