diff options
Diffstat (limited to 'node_modules/concordance/README.md')
| -rw-r--r-- | node_modules/concordance/README.md | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/node_modules/concordance/README.md b/node_modules/concordance/README.md deleted file mode 100644 index cb66b3af7..000000000 --- a/node_modules/concordance/README.md +++ /dev/null @@ -1,73 +0,0 @@ -# concordance - -Compare, format, diff and serialize any JavaScript value. Built for Node.js 4 -and above. - -## Behavior - -Concordance recursively describes JavaScript values, whether they're booleans or -complex object structures. It recurses through all enumerable properties, list -items (e.g. arrays) and iterator entries. - -The same algorithm is used when comparing, formatting or diffing values. This -means Concordance's behavior is consistent, no matter how you use it. - -### Comparison details - -* [Object wrappers](https://github.com/getify/You-Dont-Know-JS/blob/master/types%20%26%20grammar/ch3.md#boxing-wrappers) - are compared both as objects and unwrapped values. Thus Concordance always - treats `Object(1)` as different from `1`. -* `-0` is distinct from `0`. -* `NaN` equals `NaN`. -* The `Argument` values can be compared to a regular array. -* `Error` names and messages are always compared, even if these are not - enumerable properties. -* `Function` values are compared by identity only. Names are always formatted - and serialized, with Concordance handling implementation differences between - Node.js 4 and 6. -* `Global` objects are considered equal. -* `Map` keys and `Set` items are compared in-order. -* `Object` string properties are compared according to the [traversal order](http://2ality.com/2015/10/property-traversal-order-es6.html). - Symbol properties are compared by identity. -* `Promise` values are compared by identity only. -* `Symbol` values are compared by identity only. -* Recursion stops whenever a circular reference is encountered. If the same - cycle is present in the actual and expected values they're considered equal, - but they're unequal otherwise. - -### Formatting details - -Concordance strives to format every aspect of a value that is used for -comparisons. Formatting is optimized for human legibility. - -Strings enjoy special formatting: - -* When used as keys, line break characters are escaped -* Otherwise, multi-line strings are formatted using backticks, and line break - characters are replaced by [control pictures](http://graphemica.com/blocks/control-pictures). - -Similarly, line breaks in symbol descriptions are escaped. - -### Diffing details - -Concordance tries to minimize diff lines. This is difficult with object values, -which may have similar properties but a different constructor. Multi-line -strings are compared line-by-line. - -### Serialization details - -Concordance can serialize any value for later use. Deserialized values can be -compared to each other or to regular JavaScript values. The deserialized -value should be passed as the **actual** value to the comparison and diffing -methods. Certain value comparisons behave differently when the **actual** value -is deserialized: - -* `Argument` values can only be compared to other `Argument` values. -* `Function` values are compared by name, taking into account whether - serialization and / or comparison is done using Node.js 4, which has less - reliable support for function names. -* `Promise` values are compared by their constructor and additional enumerable - properties, but not by identity. -* `Symbol` values are compared by their string serialization. [Registered](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Shared_symbols_in_the_global_symbol_registry) - and [well-known symbols](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Well-known_symbols) - will never equal symbols with similar descriptions. |
