PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/sinon/lib/sinon/util/core

Просмотр файла: deep-equal.js

"use strict";

var arrayProto = require("@sinonjs/commons").prototypes.array;
var toString = require("@sinonjs/commons").prototypes.object.toString;
var samsam = require("@sinonjs/samsam");

var every = arrayProto.every;
var join = arrayProto.join;
var sort = arrayProto.sort;

function isReallyNaN(val) {
    return val !== val;
}

var deepEqual = module.exports = function deepEqual(a, b, matcher) {
    if (a === null && b === null) {
        return true;
    }

    if (typeof a !== "object" || typeof b !== "object") {
        return isReallyNaN(a) && isReallyNaN(b) || a === b;
    }

    if (a instanceof Error && b instanceof Error) {
        return a === b;
    }

    if (toString(a) !== toString(b)) {
        return false;
    }

    if (join(sort(Object.keys(a))) !== join(sort(Object.keys(b)))) {
        return false;
    }

    if (samsam.deepEqual(a, b)) {
        return true;
    }

    if (matcher) {
        var keys = Object.keys(a);
        var allKeysMatch = every(keys, function (key) {
            return matcher(a[key], b[key]);
        });

        return keys.length > 0 && allKeysMatch;
    }

    return false;
};

deepEqual.use = function (match) {
    return function deepEqual$matcher(a, b) {
        // If both are matchers they must be the same instance in order to be considered equal
        // If we didn't do that we would end up running one matcher against the other
        if (match.isMatcher(a)) {
            if (match.isMatcher(b)) {
                return a === b;
            }
            return a.test(b);
        }


        return deepEqual(a, b, deepEqual$matcher);
    };
};

Выполнить команду


Для локальной разработки. Не используйте в интернете!