#2088 Always perform deep equal on valid() and invalid()
#2087 Fix comparison of array values (literals and references)
#2086 Preference to change label to path edge instead of full path
#2085 Default assert() to include stack
#2084 Shared schemas in links
#2083 Add a browser build to the github repo and npm package
#2082 Fix error thrown in the browser build. Closes #2081
#2081 The browser build (produced by webpack) throws an error when loading
#2079 Support `no` in when()
#2078 Default `is` to Joi.invalid(null, false, 0, '').required()
#2077 Compile valid values into valid+override
#2076 Allow/disallow list override
#2075 Log when() partials
#2074 Compile function into Joi.custom()
#2073 When object.pattern() matches option is not an array(), apply to each item
#2072 Custom function error shortcut
#2068 schema.describe() does not work, when default value is assigned to array in schema
#2065 Change alternatives to be consistent with other spread arguments
#2064 Throw on invalid schema during validation
#2062 Support chained when()
#2061 Keep switch as single condition on when() and conditional()
#2060 object.assert() ref should be relative to parent, not self
#2059 Support multiple usage of same schema with id
#2056 Schema test coverage
#2054 Rename alternatives.when() to alternatives.conditional()
#2051 Support for combine schema: allOf, oneOf, anyOf
#2049 Compile literals into any type with exact literal
#2048 Replace marker with Symbol.for()
#2046 Cast multi values of into a single type with valid()
#2041 Exclude error stack trace by default
#2040 Replace boolean.insensitive() with sensitive() and not apply to allow()
#2039 Allow mapping flags to rule methods with a different name
#2038 Stop matching object patterns once a match is found
#2037 v16.0.0 Release Notes
#2036 { result, error } changed to error undefined instead of null
#2035 Skip error rendering preference
#2034 Consolidate date format errors
#2033 msg() template function to access other messages
#2032 Support custom sync functions for rules
#2031 Remove object and array string coerce
#2030 string.isoDate() fails on allow() and convert:false
#2027 Support templates as object.assert() subject
#2026 Change object.assert error context and rule argument name
#2024 Remove binary and string encoding support from the browser
#2023 Rule arguments validation
#2022 Support reverse order coerce
#2019 Consolidate refs with args
#2018 Support joi schema in refs assert
#2016 Consolidate refs assert's message/code
#2015 Ensure all levels of coerce are only called on non-undefined values
#2014 Change all _methods used on schema to use definition
#2013 Expose all internal extend() options externally
#2012 Rename func to function
#2007 Change Infinity errors from any.invalid to number.infinity
#2006 Change error code any.empty to string.empty
#2005 Merging of two empty() should allow '' if it was explicitly defined
#2002 Remove prefs schema validation
#2001 Remove joi.defaults()
#1999 Fix outdated use of Joi.func().ref()
#1998 Split validate() to sync and async versions
#1995 Replace strip flag with result flag
#1994 Joi.string().uri() accepts 'http:/' as valid URL
#1987 Extension build() support
#1986 Improve schema description validation
#1983 Change any.notes() to any.note() and require separate arguments
#1982 Change any.tags() to any.tag() and require separate arguments
#1981 Change any.example() to append by default
#1980 Rename string.regex() to string.pattern()
#1979 Link to root (regardless of depth)
#1978 Change only() to flag instead of alias of valid()
#1977 Replace date multiple and timestamp flag with format
#1976 Rename object.allowUnknown error to object.unknown
#1975 Remove description for `default()` function
#1974 Deep clone all values returned in describe()
#1973 Behavior of .concat() with tests redefinition
#1972 Applying `raw` after successful validation
#1968 Repalce lazy with link
#1965 How to properly detect domains?
#1962 Don't require pre function to take 3 arguments
#1961 Lazy once ignored when using with when()
#1960 Fix object peer dependencies error path
#1957 Feature: Marking options as deprecated
#1956 Extension messages override base
#1954 Schema specialization
#1952 Support fork into array and alternatives
#1951 Remove requiredKeys(), optionalKeys(), and forbiddenKeys()
#1949 Replace Joi.reach() with schema.extract()
#1948 Cannot read property 'ancestors' of null
#1946 Remove applyFunctionToChildren()
#1945 Throw when Joi.reach() is reaching into non-object
#1944 Remove any._getLabel()
#1943 Rename any.schemaType to any.type
#1942 Rename object.type() to object.instance()
#1941 Remove root.validate() and root.describe()
#1940 Array validation with .error()
#1939 Replace attempt() with assert() alias
#1938 Remove callback support
#1937 Support post-validation async operations
#1935 Rename var to expression and x
#1932 Support base parameters in extend()
#1930 Template calculations
#1929 Cast date and boolean to number
#1924 Move dateFormat pref out of errors
#1922 Support ref into Set and Map cast values
#1921 Replace raw flag with result flag in description
#1920 Remove support for raw(false)
#1919 Cannot combine function rules with object keys
#1917 Complex conditional validation
#1914 A way to cast the result of a array to Set and object to Map
#1913 Prevent mixing different versions of joi schema types
#1912 Identify blocked schema (valid + invalid = no valid options)
#1911 Unknown object keys ignore abortEarly flag
#1907 Support ref in prefs.errors.language
#1906 Precompile prefs.messages and extensions
#1905 Move error related prefs to `errors`
#1904 Remove ability to change template for implicit label prefix in error messages
#1903 Remove implicit label prefix for error messages
#1902 Rename `language` preference to `messages`
#1901 Rename messages.wrapArrays with wrapArrays
#1898 Change object.rename() from description to { regex } when using from pattern
#1896 Support `{.}` in error for value
#1895 Remove isJoi from Errors.Report
#1894 Pre-compile error messages
#1893 Language format requires # prefix for error context
#1892 Change "context:" ref prefix in errors to "ref:global:"
#1891 Replace ref.type description to ref.ref
#1890 Replace {{!var}} notation with {var}
#1889 Replace escapeHtml with escapeErrors
#1888 Joi.ref() is not a function
#1887 Remove object.rename.regex.multiple and object.rename.regex.override errors
#1886 Change object.rename() override option to not delete existing if nothing match
#1885 array().sort([{ order, by }])
#1884 Fix: Exponential decimal #1876
#1878 Flatten language object
#1876 Joi.number() throws error for "0.00000095" string.
#1875 Labels only used on path edge
#1874 Remove flags argument from createError()
#1873 Add object.schema() type support
#1872 Replace alternatives.child with alternatives.match error code
#1870 New alternatives.types error code
#1869 Remove support for string or array or errors return value from error() function
#1867 Bidirectional describe() <-> build()
#1866 Support multiple languages at the same time
#1865 Joi.ref() map option
#1864 Merge positive and negative number rules into single sign rule
#1862 Consistently use Utils.assertOptions() in all rules with options
#1860 when() switch statement
#1859 Remove any.createOverrideError()
#1858 Remove this from error() function
#1857 Remove self option from error()
#1856 Remove automatic example validation
#1854 .rename() causes errors when nothing has to be renamed
#1851 Remove byteAligned flag
#1850 Remove precision flag
#1849 Error on unreachable when() statement
#1848 Forbid chaining when() calls when the first was not on alternatives type
#1847 any.error() fails to clear self option in override call
#1846 Skip type check if valids fail
#1843 Change object and array errors to use path instead of nested errors
#1842 String multiple email address
#1840 Limit array.single() to only non-array items
#1839 Remove Hoek.reach() options from Ref
#1838 Unique tests duplicated on concat()
#1837 Perform base type conversions before extension pre
#1836 Apply array.single() regardless of options.convert
#1835 Run extension coerce only if options.convert is true
#1834 Remove isJoi from schema
#1833 Array items using references to array peers are ignored in order of processing
#1832 Change reference view in array item rules
#1831 Move func().ref() to object().ref()
#1830 Change Ref to class
#1828 Remove isRegExp from object.rename description
#1827 string min/max/length description missing encoding
#1826 string.truncate() doesn't account for max with ref
#1825 Apply only last min/max/length rules
#1824 string methods change provided options
#1823 Description changes
#1822 Inconsistent reference error reporting
#1812 Multiple email address validation
#1807 Ability to perform custom calculations on referenced fields
#1806 Number validation fails with a valid number (".30")
#1796 fix: copy object including Symbols
#1778 Make certain rules (min/max/length) override themselves revisited
#1770 Don't delete object key when it equals the rename.to in a rename with regex
#1762 Customize formatting for dates in error messages of min/max/greater/less (with ISO default)
#1746 Validate base64 URI safe strings
#1737 Translate validation messages based on header request
#1736 truthy() / falsy() values apply when convert is false
#1732 Joi.string().uri() accepts "https://" as a valid url
#1730 Continue array validation even if items() fails
#1727 Caching for strings / numbers / booleans
#1723 Allow validate options to be passed through assert/attempt #1722
#1722 Check all errors on joi.assert and joi.attempt
#1705 Validate URI domain
#1702 Ref inside top-level array items/ordered
#1696 Joi should not strip non-enumerable properties of an object
#1695 Support schema keys with '.' (without forcing path reach)
#1687 Validation fails with valid UUID 3
#1652 Throw typed ValidationErrors
#1651 Reference above parent. Closes #1650
#1650 Support references above the parent
#1648 Move object rename to own function
#1646 Remove flatten arguments. Closes #1644
#1645 Support self references. Closes #1569
#1644 Remove all arguments flattening
#1623 Check for valid/invalid values after conversion only
#1613 Support ISO 8601 duration as a string validator
#1612 Validate ISO Duration string
#1606 schema.describe minor issues and feature suggestions
#1569 Allow self references
#1535 failover() support for default on errors
#1457 Specify required matches for .pattern()
#1403 Support regexp capture group for rename
#1264 Override rule message with any.message() rule
#667 Validate a number, which depends on other validate numbers