diff options
author | Florian Dold <florian@dold.me> | 2021-02-24 17:33:07 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-02-24 17:33:07 +0100 |
commit | 564e4f8710388ab2ae40c959c497f2e0260199ed (patch) | |
tree | 1d9f1b835bf6580977158f5eee133f8fa39f67d4 /packages/idb-bridge/src/util/deepEquals.ts | |
parent | bc7956c2ba685e459c94204ca30f85eef881d0ac (diff) | |
download | wallet-core-564e4f8710388ab2ae40c959c497f2e0260199ed.tar.xz |
idb: encapsulate non-JSON data correctly
Diffstat (limited to 'packages/idb-bridge/src/util/deepEquals.ts')
-rw-r--r-- | packages/idb-bridge/src/util/deepEquals.ts | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/packages/idb-bridge/src/util/deepEquals.ts b/packages/idb-bridge/src/util/deepEquals.ts deleted file mode 100644 index bb7c0269c..000000000 --- a/packages/idb-bridge/src/util/deepEquals.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* -Copyright (c) 2017 Evgeny Poberezkin - -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. -*/ - -const isArray = Array.isArray; -const keyList = Object.keys; -const hasProp = Object.prototype.hasOwnProperty; - -export function deepEquals(a: any, b: any): boolean { - if (a === b) return true; - - if (a && b && typeof a == "object" && typeof b == "object") { - const arrA = isArray(a); - const arrB = isArray(b); - let i; - let length; - let key; - - if (arrA && arrB) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0; ) if (!deepEquals(a[i], b[i])) return false; - return true; - } - - if (arrA != arrB) return false; - - const dateA = a instanceof Date; - const dateB = b instanceof Date; - if (dateA != dateB) return false; - if (dateA && dateB) return a.getTime() == b.getTime(); - - const regexpA = a instanceof RegExp; - const regexpB = b instanceof RegExp; - if (regexpA != regexpB) return false; - if (regexpA && regexpB) return a.toString() == b.toString(); - - const keys = keyList(a); - length = keys.length; - - if (length !== keyList(b).length) return false; - - for (i = length; i-- !== 0; ) if (!hasProp.call(b, keys[i])) return false; - - for (i = length; i-- !== 0; ) { - key = keys[i]; - if (!deepEquals(a[key], b[key])) return false; - } - - return true; - } - - return a !== a && b !== b; -} |