Shallow equal check object that support TypeScript.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src fix(lib): fix typo Dec 12, 2017
test feat: Add debug mode Nov 29, 2017
.gitignore Initial Commit Apr 8, 2017
.travis.yml Initial Commit Apr 8, 2017
LICENSE Initial Commit Apr 8, 2017
README.md Update README Nov 29, 2017
package.json 1.1.1 Dec 12, 2017
tsconfig.json Initial Commit Apr 8, 2017
yarn.lock feat: Add debug mode Nov 29, 2017

README.md

shallow-equal-object Build Status

Shallow equality check for objects.

Feature

  • Custom equal function
  • Debug mode
    • Why it is not equal?

Install

Install with npm:

npm install shallow-equal-object

Usage

const { shallowEqual } = require("shallow-equal-object");
shallowEqual({ a: 1, b: 2 }, { a: 1, b: 2 }); // => true
shallowEqual({ a: 1, b: 2 }, { a: 1, b: 42 }); // => false
shallowEqual({ a: 1, b: 2 }, { }); // => false

Options

You can pass option object as 3rd arguments.

customEqual: (a:any, b:any) => boolean

assert.ok(shallowEqual(base, { a: 1, b: 2 }, {
    customEqual: (a, b) => {
        return typeof a === "number" && typeof b === "number";
    }
}));
assert.equal(shallowEqual({ a: "string" }, { a: "string" }, {
    customEqual: (a, b) => {
        return typeof a === "number" && typeof b === "number";
    }
}), false);

debug: boolean

Enable debug mode if { debug: true }

Debug mode show helpful log that why that result is false.

it("objectA is not object", () => {
    shallowEqual(null, {}, {
        debug: true,
        console: consoleMock
    });
    assert.strictEqual(logCalls[0], "objectA is not object.");
});
it("objectB is not object", () => {
    shallowEqual({}, null, {
        debug: true,
        console: consoleMock
    });
    assert.strictEqual(logCalls[0], "objectB is not object.");
});
it("object key length is not same", () => {
    shallowEqual({}, { a: 1 }, {
        debug: true,
        console: consoleMock
    });
    assert.strictEqual(logCalls[0], "object key length is not same");
});
it("object value is not equal", () => {
    shallowEqual({ a: 1 }, { a: 2 }, {
        debug: true,
        console: consoleMock
    });
    assert.strictEqual(logCalls[0], "key:a is not equals between A and B.");
});

You can pass console object to { debug: true, console: ConsoleAPI }

Related

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm i -d && npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu