2.1.78 • Published 10 months ago

@thi.ng/equiv v2.1.78

Weekly downloads
3,442
License
Apache-2.0
Repository
github
Last release
10 months ago

equiv

npm version npm downloads Twitter Follow

This project is part of the @thi.ng/umbrella monorepo.

About

Extensible deep value equivalence checking for any data types.

Supports:

  • JS primitives
  • Arrays
  • Plain objects
  • ES6 Sets / Maps
  • Date
  • RegExp
  • Types with IEquiv implementation

Status

STABLE - used in production

Search or submit any issues for this package

Installation

yarn add @thi.ng/equiv

ES module import:

<script type="module" src="https://cdn.skypack.dev/@thi.ng/equiv"></script>

Skypack documentation

For Node.js REPL:

# with flag only for < v16
node --experimental-repl-await

> const equiv = await import("@thi.ng/equiv");

Package sizes (gzipped, pre-treeshake): ESM: 487 bytes

Dependencies

None

API

Generated API docs

import { equiv } from "@thi.ng/equiv";

equiv(
    { a: { b: [1, 2] } },
    { a: { b: [1, 2] } }
);
// true

Implement IEquiv interface

This is useful & required for custom types to take part in equiv checks, by default only plain objects & array are traversed deeply.

Furthermore, by implementing this interface we can better control which internal values / criteria are required to establish equivalence. In this example we exclude the meta property and only check for same type & children equality.

import { IEquiv } from "@thi.ng/api";
import { equiv } from "@thi.ng/equiv";

class Node implements IEquiv {

    meta: any;
    children: any[];

    constructor(children: any[], meta?: any) {
        this.children = children;
        this.meta = meta;
    }

    equiv(o: any) {
        return o instanceof Node && equiv(this.children, o.children);
    }
}

equiv(new Node([1,2,3], "foo"), new Node([1,2,3], "bar"));
// true

Authors

Karsten Schmidt

If this project contributes to an academic publication, please cite it as:

@misc{thing-equiv,
  title = "@thi.ng/equiv",
  author = "Karsten Schmidt",
  note = "https://thi.ng/equiv",
  year = 2016
}

License

© 2016 - 2021 Karsten Schmidt // Apache Software License 2.0

2.1.78

10 months ago

2.1.76

11 months ago

2.1.77

10 months ago

2.1.74

11 months ago

2.1.75

11 months ago

2.1.73

11 months ago

2.1.72

12 months ago

2.1.71

12 months ago

2.1.70

1 year ago

2.1.69

1 year ago

2.1.68

1 year ago

2.1.59

2 years ago

2.1.67

1 year ago

2.1.65

1 year ago

2.1.66

1 year ago

2.1.63

1 year ago

2.1.64

1 year ago

2.1.61

1 year ago

2.1.62

1 year ago

2.1.60

1 year ago

2.1.58

2 years ago

2.1.57

2 years ago

2.1.56

2 years ago

2.1.55

2 years ago

2.1.54

2 years ago

2.1.53

2 years ago

2.1.52

2 years ago

2.1.51

2 years ago

2.1.50

2 years ago

2.1.49

2 years ago

2.1.48

2 years ago

2.1.47

2 years ago

2.1.45

2 years ago

2.1.46

2 years ago

2.1.43

2 years ago

2.1.44

2 years ago

2.1.42

2 years ago

2.1.41

2 years ago

2.1.40

2 years ago

2.1.38

2 years ago

2.1.39

2 years ago

2.1.37

2 years ago

2.1.36

2 years ago

2.1.35

2 years ago

2.1.27

2 years ago

2.1.28

2 years ago

2.1.25

2 years ago

2.1.26

2 years ago

2.1.29

2 years ago

2.1.34

2 years ago

2.1.32

2 years ago

2.1.33

2 years ago

2.1.30

2 years ago

2.1.31

2 years ago

2.1.24

3 years ago

2.1.23

3 years ago

2.1.21

3 years ago

2.1.22

3 years ago

2.1.20

3 years ago

2.1.18

3 years ago

2.1.19

3 years ago

2.1.16

3 years ago

2.1.17

3 years ago

2.1.15

3 years ago

2.1.14

3 years ago

2.1.12

3 years ago

2.1.13

3 years ago

2.1.11

3 years ago

2.1.10

3 years ago

2.1.9

3 years ago

2.1.8

3 years ago

2.1.6

4 years ago

2.1.7

4 years ago

2.1.5

4 years ago

2.1.4

4 years ago

2.0.7

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.3

4 years ago

2.1.0

4 years ago

2.0.4

4 years ago

2.0.6

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.44

4 years ago

1.0.45

4 years ago

1.0.43

4 years ago

1.0.42

5 years ago

1.0.41

5 years ago

1.0.37

5 years ago

1.0.39

5 years ago

1.0.38

5 years ago

1.0.40

5 years ago

1.0.36

5 years ago

1.0.35

5 years ago

1.0.34

5 years ago

1.0.33

5 years ago

1.0.32

5 years ago

1.0.31

5 years ago

1.0.30

5 years ago

1.0.29

5 years ago

1.0.28

5 years ago

1.0.27

5 years ago

1.0.26

5 years ago

1.0.25

5 years ago

1.0.24

6 years ago

1.0.23

6 years ago

1.0.22

6 years ago

1.0.21

6 years ago

1.0.20

6 years ago

1.0.19

6 years ago

1.0.18

6 years ago

1.0.17

6 years ago

1.0.16

6 years ago

1.0.15

6 years ago

1.0.14

6 years ago

1.0.13

6 years ago

1.0.12

6 years ago

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.1.15

7 years ago

0.1.14

7 years ago

0.1.13

7 years ago

0.1.12

7 years ago

0.1.11

7 years ago

0.1.10

7 years ago

0.1.9

7 years ago

0.1.8

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

8 years ago

0.1.4

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago

0.0.1

8 years ago