typescript-dotnet-core
Version:
A the core classes and utilities of a JavaScript-Friendly .NET Based TypeScript Library.
7 lines (6 loc) • 1.43 kB
JavaScript
/*!
* @author electricessence / https://github.com/electricessence/
* Licensing: MIT https://github.com/electricessence/TypeScript.NET-Core/blob/master/LICENSE.md
*/Object.defineProperty(exports,"__esModule",{value:!0});var Types_1=require("./Types"),isTrueNaN=Types_1.default.isTrueNaN,VOID0=void 0;function areEqual(e,r,a){return void 0===a&&(a=!0),e===r||!a&&e==r||isTrueNaN(e)&&isTrueNaN(r)}exports.areEqual=areEqual;var COMPARE_TO="compareTo";function compare(e,r,a){return void 0===a&&(a=!0),areEqual(e,r,a)?0:e&&Types_1.default.hasMember(e,COMPARE_TO)?e.compareTo(r):r&&Types_1.default.hasMember(r,COMPARE_TO)?-r.compareTo(e):r<e||a&&(0===e&&0==r||null===e&&r===VOID0)?1:e<r||a&&(0===r&&0==e||null===r&&e===VOID0)?-1:NaN}function areEquivalent(e,r,a,t){if(void 0===a&&(a=!0),void 0===t&&(t=0),areEqual(e,r,!0))return!0;if(null==e||null==r)return!!a&&(Types_1.default.isObject(e)?!Object.keys(e).length:Types_1.default.isObject(r)?!Object.keys(r).length:null==e&&null==r);if(Types_1.default.isObject(e)&&Types_1.default.isObject(r)){var u=Object.keys(e),l=Object.keys(r),s=u.length;if(s!=l.length)return!1;u.sort(),l.sort();for(var n=0;n<s;n++){if((f=u[n])!==l[n]||!areEqual(e[f],r[f],!0))return!1}if(0<t)for(var i=0,o=u;i<o.length;i++){var f;if(!areEquivalent(e[f=o[i]],r[f],a,t-1))return!1}return!0}return!1}exports.compare=compare,exports.areEquivalent=areEquivalent;
//# sourceMappingURL=Compare.js.map
;