UNPKG

@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
"use strict"; 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;