feat: docker compose maybe
This commit is contained in:
		
							
								
								
									
										86
									
								
								node_modules/dequal/dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								node_modules/dequal/dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,86 @@
 | 
			
		||||
var has = Object.prototype.hasOwnProperty;
 | 
			
		||||
 | 
			
		||||
function find(iter, tar, key) {
 | 
			
		||||
	for (key of iter.keys()) {
 | 
			
		||||
		if (dequal(key, tar)) return key;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function dequal(foo, bar) {
 | 
			
		||||
	var ctor, len, tmp;
 | 
			
		||||
	if (foo === bar) return true;
 | 
			
		||||
 | 
			
		||||
	if (foo && bar && (ctor=foo.constructor) === bar.constructor) {
 | 
			
		||||
		if (ctor === Date) return foo.getTime() === bar.getTime();
 | 
			
		||||
		if (ctor === RegExp) return foo.toString() === bar.toString();
 | 
			
		||||
 | 
			
		||||
		if (ctor === Array) {
 | 
			
		||||
			if ((len=foo.length) === bar.length) {
 | 
			
		||||
				while (len-- && dequal(foo[len], bar[len]));
 | 
			
		||||
			}
 | 
			
		||||
			return len === -1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (ctor === Set) {
 | 
			
		||||
			if (foo.size !== bar.size) {
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			for (len of foo) {
 | 
			
		||||
				tmp = len;
 | 
			
		||||
				if (tmp && typeof tmp === 'object') {
 | 
			
		||||
					tmp = find(bar, tmp);
 | 
			
		||||
					if (!tmp) return false;
 | 
			
		||||
				}
 | 
			
		||||
				if (!bar.has(tmp)) return false;
 | 
			
		||||
			}
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (ctor === Map) {
 | 
			
		||||
			if (foo.size !== bar.size) {
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			for (len of foo) {
 | 
			
		||||
				tmp = len[0];
 | 
			
		||||
				if (tmp && typeof tmp === 'object') {
 | 
			
		||||
					tmp = find(bar, tmp);
 | 
			
		||||
					if (!tmp) return false;
 | 
			
		||||
				}
 | 
			
		||||
				if (!dequal(len[1], bar.get(tmp))) {
 | 
			
		||||
					return false;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (ctor === ArrayBuffer) {
 | 
			
		||||
			foo = new Uint8Array(foo);
 | 
			
		||||
			bar = new Uint8Array(bar);
 | 
			
		||||
		} else if (ctor === DataView) {
 | 
			
		||||
			if ((len=foo.byteLength) === bar.byteLength) {
 | 
			
		||||
				while (len-- && foo.getInt8(len) === bar.getInt8(len));
 | 
			
		||||
			}
 | 
			
		||||
			return len === -1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (ArrayBuffer.isView(foo)) {
 | 
			
		||||
			if ((len=foo.byteLength) === bar.byteLength) {
 | 
			
		||||
				while (len-- && foo[len] === bar[len]);
 | 
			
		||||
			}
 | 
			
		||||
			return len === -1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!ctor || typeof foo === 'object') {
 | 
			
		||||
			len = 0;
 | 
			
		||||
			for (ctor in foo) {
 | 
			
		||||
				if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
 | 
			
		||||
				if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
 | 
			
		||||
			}
 | 
			
		||||
			return Object.keys(bar).length === len;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return foo !== foo && bar !== bar;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
exports.dequal = dequal;
 | 
			
		||||
							
								
								
									
										1
									
								
								node_modules/dequal/dist/index.min.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/dequal/dist/index.min.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.dequal={})}(this,(function(e){var t=Object.prototype.hasOwnProperty;function r(e,t,r){for(r of e.keys())if(n(r,t))return r}function n(e,f){var i,o,u;if(e===f)return!0;if(e&&f&&(i=e.constructor)===f.constructor){if(i===Date)return e.getTime()===f.getTime();if(i===RegExp)return e.toString()===f.toString();if(i===Array){if((o=e.length)===f.length)for(;o--&&n(e[o],f[o]););return-1===o}if(i===Set){if(e.size!==f.size)return!1;for(o of e){if((u=o)&&"object"==typeof u&&!(u=r(f,u)))return!1;if(!f.has(u))return!1}return!0}if(i===Map){if(e.size!==f.size)return!1;for(o of e){if((u=o[0])&&"object"==typeof u&&!(u=r(f,u)))return!1;if(!n(o[1],f.get(u)))return!1}return!0}if(i===ArrayBuffer)e=new Uint8Array(e),f=new Uint8Array(f);else if(i===DataView){if((o=e.byteLength)===f.byteLength)for(;o--&&e.getInt8(o)===f.getInt8(o););return-1===o}if(ArrayBuffer.isView(e)){if((o=e.byteLength)===f.byteLength)for(;o--&&e[o]===f[o];);return-1===o}if(!i||"object"==typeof e){for(i in o=0,e){if(t.call(e,i)&&++o&&!t.call(f,i))return!1;if(!(i in f)||!n(e[i],f[i]))return!1}return Object.keys(f).length===o}}return e!=e&&f!=f}e.dequal=n}));
 | 
			
		||||
							
								
								
									
										84
									
								
								node_modules/dequal/dist/index.mjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								node_modules/dequal/dist/index.mjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,84 @@
 | 
			
		||||
var has = Object.prototype.hasOwnProperty;
 | 
			
		||||
 | 
			
		||||
function find(iter, tar, key) {
 | 
			
		||||
	for (key of iter.keys()) {
 | 
			
		||||
		if (dequal(key, tar)) return key;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function dequal(foo, bar) {
 | 
			
		||||
	var ctor, len, tmp;
 | 
			
		||||
	if (foo === bar) return true;
 | 
			
		||||
 | 
			
		||||
	if (foo && bar && (ctor=foo.constructor) === bar.constructor) {
 | 
			
		||||
		if (ctor === Date) return foo.getTime() === bar.getTime();
 | 
			
		||||
		if (ctor === RegExp) return foo.toString() === bar.toString();
 | 
			
		||||
 | 
			
		||||
		if (ctor === Array) {
 | 
			
		||||
			if ((len=foo.length) === bar.length) {
 | 
			
		||||
				while (len-- && dequal(foo[len], bar[len]));
 | 
			
		||||
			}
 | 
			
		||||
			return len === -1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (ctor === Set) {
 | 
			
		||||
			if (foo.size !== bar.size) {
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			for (len of foo) {
 | 
			
		||||
				tmp = len;
 | 
			
		||||
				if (tmp && typeof tmp === 'object') {
 | 
			
		||||
					tmp = find(bar, tmp);
 | 
			
		||||
					if (!tmp) return false;
 | 
			
		||||
				}
 | 
			
		||||
				if (!bar.has(tmp)) return false;
 | 
			
		||||
			}
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (ctor === Map) {
 | 
			
		||||
			if (foo.size !== bar.size) {
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			for (len of foo) {
 | 
			
		||||
				tmp = len[0];
 | 
			
		||||
				if (tmp && typeof tmp === 'object') {
 | 
			
		||||
					tmp = find(bar, tmp);
 | 
			
		||||
					if (!tmp) return false;
 | 
			
		||||
				}
 | 
			
		||||
				if (!dequal(len[1], bar.get(tmp))) {
 | 
			
		||||
					return false;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (ctor === ArrayBuffer) {
 | 
			
		||||
			foo = new Uint8Array(foo);
 | 
			
		||||
			bar = new Uint8Array(bar);
 | 
			
		||||
		} else if (ctor === DataView) {
 | 
			
		||||
			if ((len=foo.byteLength) === bar.byteLength) {
 | 
			
		||||
				while (len-- && foo.getInt8(len) === bar.getInt8(len));
 | 
			
		||||
			}
 | 
			
		||||
			return len === -1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (ArrayBuffer.isView(foo)) {
 | 
			
		||||
			if ((len=foo.byteLength) === bar.byteLength) {
 | 
			
		||||
				while (len-- && foo[len] === bar[len]);
 | 
			
		||||
			}
 | 
			
		||||
			return len === -1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!ctor || typeof foo === 'object') {
 | 
			
		||||
			len = 0;
 | 
			
		||||
			for (ctor in foo) {
 | 
			
		||||
				if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
 | 
			
		||||
				if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
 | 
			
		||||
			}
 | 
			
		||||
			return Object.keys(bar).length === len;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return foo !== foo && bar !== bar;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								node_modules/dequal/index.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/dequal/index.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
export function dequal(foo: any, bar: any): boolean;
 | 
			
		||||
							
								
								
									
										21
									
								
								node_modules/dequal/license
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								node_modules/dequal/license
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
The MIT License (MIT)
 | 
			
		||||
 | 
			
		||||
Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in
 | 
			
		||||
all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
THE SOFTWARE.
 | 
			
		||||
							
								
								
									
										1
									
								
								node_modules/dequal/lite/index.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/dequal/lite/index.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
export function dequal(foo: any, bar: any): boolean;
 | 
			
		||||
							
								
								
									
										31
									
								
								node_modules/dequal/lite/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								node_modules/dequal/lite/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
var has = Object.prototype.hasOwnProperty;
 | 
			
		||||
 | 
			
		||||
function dequal(foo, bar) {
 | 
			
		||||
	var ctor, len;
 | 
			
		||||
	if (foo === bar) return true;
 | 
			
		||||
 | 
			
		||||
	if (foo && bar && (ctor=foo.constructor) === bar.constructor) {
 | 
			
		||||
		if (ctor === Date) return foo.getTime() === bar.getTime();
 | 
			
		||||
		if (ctor === RegExp) return foo.toString() === bar.toString();
 | 
			
		||||
 | 
			
		||||
		if (ctor === Array) {
 | 
			
		||||
			if ((len=foo.length) === bar.length) {
 | 
			
		||||
				while (len-- && dequal(foo[len], bar[len]));
 | 
			
		||||
			}
 | 
			
		||||
			return len === -1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!ctor || typeof foo === 'object') {
 | 
			
		||||
			len = 0;
 | 
			
		||||
			for (ctor in foo) {
 | 
			
		||||
				if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
 | 
			
		||||
				if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
 | 
			
		||||
			}
 | 
			
		||||
			return Object.keys(bar).length === len;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return foo !== foo && bar !== bar;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
exports.dequal = dequal;
 | 
			
		||||
							
								
								
									
										1
									
								
								node_modules/dequal/lite/index.min.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/dequal/lite/index.min.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.dequal={})}(this,(function(e){var t=Object.prototype.hasOwnProperty;e.dequal=function e(r,n){var o,i;if(r===n)return!0;if(r&&n&&(o=r.constructor)===n.constructor){if(o===Date)return r.getTime()===n.getTime();if(o===RegExp)return r.toString()===n.toString();if(o===Array){if((i=r.length)===n.length)for(;i--&&e(r[i],n[i]););return-1===i}if(!o||"object"==typeof r){for(o in i=0,r){if(t.call(r,o)&&++i&&!t.call(n,o))return!1;if(!(o in n)||!e(r[o],n[o]))return!1}return Object.keys(n).length===i}}return r!=r&&n!=n}}));
 | 
			
		||||
							
								
								
									
										29
									
								
								node_modules/dequal/lite/index.mjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								node_modules/dequal/lite/index.mjs
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
var has = Object.prototype.hasOwnProperty;
 | 
			
		||||
 | 
			
		||||
export function dequal(foo, bar) {
 | 
			
		||||
	var ctor, len;
 | 
			
		||||
	if (foo === bar) return true;
 | 
			
		||||
 | 
			
		||||
	if (foo && bar && (ctor=foo.constructor) === bar.constructor) {
 | 
			
		||||
		if (ctor === Date) return foo.getTime() === bar.getTime();
 | 
			
		||||
		if (ctor === RegExp) return foo.toString() === bar.toString();
 | 
			
		||||
 | 
			
		||||
		if (ctor === Array) {
 | 
			
		||||
			if ((len=foo.length) === bar.length) {
 | 
			
		||||
				while (len-- && dequal(foo[len], bar[len]));
 | 
			
		||||
			}
 | 
			
		||||
			return len === -1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!ctor || typeof foo === 'object') {
 | 
			
		||||
			len = 0;
 | 
			
		||||
			for (ctor in foo) {
 | 
			
		||||
				if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
 | 
			
		||||
				if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
 | 
			
		||||
			}
 | 
			
		||||
			return Object.keys(bar).length === len;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return foo !== foo && bar !== bar;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										57
									
								
								node_modules/dequal/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								node_modules/dequal/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "dequal",
 | 
			
		||||
  "version": "2.0.3",
 | 
			
		||||
  "repository": "lukeed/dequal",
 | 
			
		||||
  "description": "A tiny (304B to 489B) utility for check for deep equality",
 | 
			
		||||
  "unpkg": "dist/index.min.js",
 | 
			
		||||
  "module": "dist/index.mjs",
 | 
			
		||||
  "main": "dist/index.js",
 | 
			
		||||
  "types": "index.d.ts",
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "Luke Edwards",
 | 
			
		||||
    "email": "luke.edwards05@gmail.com",
 | 
			
		||||
    "url": "https://lukeed.com"
 | 
			
		||||
  },
 | 
			
		||||
  "engines": {
 | 
			
		||||
    "node": ">=6"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "build": "bundt",
 | 
			
		||||
    "pretest": "npm run build",
 | 
			
		||||
    "postbuild": "echo \"lite\" | xargs -n1 cp -v index.d.ts",
 | 
			
		||||
    "test": "uvu -r esm test"
 | 
			
		||||
  },
 | 
			
		||||
  "files": [
 | 
			
		||||
    "*.d.ts",
 | 
			
		||||
    "dist",
 | 
			
		||||
    "lite"
 | 
			
		||||
  ],
 | 
			
		||||
  "exports": {
 | 
			
		||||
    ".": {
 | 
			
		||||
      "types": "./index.d.ts",
 | 
			
		||||
      "import": "./dist/index.mjs",
 | 
			
		||||
      "require": "./dist/index.js"
 | 
			
		||||
    },
 | 
			
		||||
    "./lite": {
 | 
			
		||||
      "types": "./index.d.ts",
 | 
			
		||||
      "import": "./lite/index.mjs",
 | 
			
		||||
      "require": "./lite/index.js"
 | 
			
		||||
    },
 | 
			
		||||
    "./package.json": "./package.json"
 | 
			
		||||
  },
 | 
			
		||||
  "modes": {
 | 
			
		||||
    "lite": "src/lite.js",
 | 
			
		||||
    "default": "src/index.js"
 | 
			
		||||
  },
 | 
			
		||||
  "keywords": [
 | 
			
		||||
    "deep",
 | 
			
		||||
    "deep-equal",
 | 
			
		||||
    "equality"
 | 
			
		||||
  ],
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "bundt": "1.0.2",
 | 
			
		||||
    "esm": "3.2.25",
 | 
			
		||||
    "uvu": "0.3.2"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										112
									
								
								node_modules/dequal/readme.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								node_modules/dequal/readme.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,112 @@
 | 
			
		||||
# 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)
 | 
			
		||||
		Reference in New Issue
	
	Block a user