forked from FINAKON/HelpProject
1. Initial Commit - a boiler plate code and POC to realize the concept of context sensitive help 2. Frontend code written in ReactJS 3. Backend code written in Java, Spring Boot Framework 4. Frontend Start: pre-requisites : node, npm npm run dev ==> to start the frontend vite server 5. Backend Start: pre-requisites : java, mvn mvn spring-boot:run ==> to start the backend server 6. Visit http://localhost:5173/ for basic demo of help, press F1 in textboxes 7. Visit http://localhost:5173/editor and enter "admin123" to add/modify texts. Happy Coding !!! Thank you, Bhargava.
113 lines
4.4 KiB
Markdown
113 lines
4.4 KiB
Markdown
# dequal [](https://github.com/lukeed/dequal/actions)
|
||
|
||
> A tiny (304B to 489B) utility to check for deep equality
|
||
|
||
This module supports comparison of all types, including `Function`, `RegExp`, `Date`, `Set`, `Map`, `TypedArray`s, `DataView`, `null`, `undefined`, and `NaN` values. Complex values (eg, Objects, Arrays, Sets, Maps, etc) are traversed recursively.
|
||
|
||
> **Important:**
|
||
> * key order **within Objects** does not matter
|
||
> * value order **within Arrays** _does_ matter
|
||
> * values **within Sets and Maps** use value equality
|
||
> * keys **within Maps** use value equality
|
||
|
||
|
||
## Install
|
||
|
||
```
|
||
$ npm install --save dequal
|
||
```
|
||
|
||
## Modes
|
||
|
||
There are two "versions" of `dequal` available:
|
||
|
||
#### `dequal`
|
||
> **Size (gzip):** 489 bytes<br>
|
||
> **Availability:** [CommonJS](https://unpkg.com/dequal/dist/index.js), [ES Module](https://unpkg.com/dequal/dist/index.mjs), [UMD](https://unpkg.com/dequal/dist/index.min.js)
|
||
|
||
#### `dequal/lite`
|
||
> **Size (gzip):** 304 bytes<br>
|
||
> **Availability:** [CommonJS](https://unpkg.com/dequal/lite/index.js), [ES Module](https://unpkg.com/dequal/lite/index.mjs)
|
||
|
||
| | IE9+ | Number | String | Date | RegExp | Object | Array | Class | Set | Map | ArrayBuffer | [TypedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects) | [DataView](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView) |
|
||
|-|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|
||
| `dequal` | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
||
| `dequal/lite` | :+1: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: | :x: |
|
||
|
||
> <sup>**Note:** Table scrolls horizontally!</sup>
|
||
|
||
## Usage
|
||
|
||
```js
|
||
import { dequal } from 'dequal';
|
||
|
||
dequal(1, 1); //=> true
|
||
dequal({}, {}); //=> true
|
||
dequal('foo', 'foo'); //=> true
|
||
dequal([1, 2, 3], [1, 2, 3]); //=> true
|
||
dequal(dequal, dequal); //=> true
|
||
dequal(/foo/, /foo/); //=> true
|
||
dequal(null, null); //=> true
|
||
dequal(NaN, NaN); //=> true
|
||
dequal([], []); //=> true
|
||
dequal(
|
||
[{ a:1 }, [{ b:{ c:[1] } }]],
|
||
[{ a:1 }, [{ b:{ c:[1] } }]]
|
||
); //=> true
|
||
|
||
dequal(1, '1'); //=> false
|
||
dequal(null, undefined); //=> false
|
||
dequal({ a:1, b:[2,3] }, { a:1, b:[2,5] }); //=> false
|
||
dequal(/foo/i, /bar/g); //=> false
|
||
```
|
||
|
||
## API
|
||
|
||
### dequal(foo, bar)
|
||
Returns: `Boolean`
|
||
|
||
Both `foo` and `bar` can be of any type.<br>
|
||
A `Boolean` is returned indicating if the two were deeply equal.
|
||
|
||
|
||
## Benchmarks
|
||
|
||
> Running Node v10.13.0
|
||
|
||
The benchmarks can be found in the [`/bench`](/bench) directory. They are separated into two categories:
|
||
|
||
* `basic` – compares an object comprised of `String`, `Number`, `Date`, `Array`, and `Object` values.
|
||
* `complex` – like `basic`, but adds `RegExp`, `Map`, `Set`, and `Uint8Array` values.
|
||
|
||
> **Note:** Only candidates that pass validation step(s) are listed. <br>For example, `fast-deep-equal/es6` handles `Set` and `Map` values, but uses _referential equality_ while those listed use _value equality_.
|
||
|
||
```
|
||
Load times:
|
||
assert 0.109ms
|
||
util 0.006ms
|
||
fast-deep-equal 0.479ms
|
||
lodash/isequal 22.826ms
|
||
nano-equal 0.417ms
|
||
dequal 0.396ms
|
||
dequal/lite 0.264ms
|
||
|
||
Benchmark :: basic
|
||
assert.deepStrictEqual x 325,262 ops/sec ±0.57% (94 runs sampled)
|
||
util.isDeepStrictEqual x 318,812 ops/sec ±0.87% (94 runs sampled)
|
||
fast-deep-equal x 1,332,393 ops/sec ±0.36% (93 runs sampled)
|
||
lodash.isEqual x 269,129 ops/sec ±0.59% (95 runs sampled)
|
||
nano-equal x 1,122,053 ops/sec ±0.36% (96 runs sampled)
|
||
dequal/lite x 1,700,972 ops/sec ±0.31% (94 runs sampled)
|
||
dequal x 1,698,972 ops/sec ±0.63% (97 runs sampled)
|
||
|
||
Benchmark :: complex
|
||
assert.deepStrictEqual x 124,518 ops/sec ±0.64% (96 runs sampled)
|
||
util.isDeepStrictEqual x 125,113 ops/sec ±0.24% (96 runs sampled)
|
||
lodash.isEqual x 58,677 ops/sec ±0.49% (96 runs sampled)
|
||
dequal x 345,386 ops/sec ±0.27% (96 runs sampled)
|
||
```
|
||
|
||
## License
|
||
|
||
MIT © [Luke Edwards](https://lukeed.com)
|