/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * Jasmine asymmetric matcher that compares a given object ensuring that it matches deep * with the other while also respecting the order of keys. This is useful when comparing * the NodeJS `package.json` `exports` field where order matters. */ export function matchesObjectWithOrder(expected: any): jasmine.AsymmetricMatcher { return { asymmetricMatch(actual: any): boolean { // Use JSON stringify to compare the object with respect to the order of keys // in the object, and its nested objects. return JSON.stringify(actual) === JSON.stringify(expected); }, jasmineToString(prettyPrint: (value: any) => string): string { return prettyPrint(expected); }, }; }