API
Tutorials
Resources
Policies
Modules
Plugins
Shop
Support
Home
API
Tutorials
Resources
Policies
Modules
Plugins
Shop
Support
Tutorials
Getting Started
Express Migration
Authentication
Caching
Cookies
Logging
Plugins
Routing
Server Methods
Serving Static Files
Testing
Validation
Views
Resources
Changelog
Module Status
List
Policies
Code of Conduct
Contributing
License
Security
Sponsors
Style Guide
Support
Modules
accept
Home
API
Changelog
ammo
Home
API
Changelog
b64
Home
API
Changelog
basic
Home
API
Changelog
bell
Home
Providers
Examples
API
Changelog
boom
Home
API
Changelog
bossy
Home
API
Changelog
bounce
Home
API
Changelog
bourne
Home
API
Changelog
call
Home
API
Changelog
catbox
Home
API
Changelog
catbox-memcached
Home
API
Changelog
catbox-memory
Home
API
Changelog
catbox-object
Home
API
Changelog
catbox-redis
Home
API
Changelog
code
Home
API
Changelog
content
Home
API
Changelog
cookie
Home
API
Changelog
crumb
Home
API
Changelog
cryptiles
Home
API
Changelog
eslint-plugin
Home
API
Changelog
file
Home
API
Changelog
glue
Home
API
Changelog
h2o2
Home
API
Changelog
heavy
Home
Changelog
hoek
Home
API
Changelog
inert
Home
API
Changelog
iron
Home
API
Changelog
jwt
Home
API
Changelog
lab
Home
API
Changelog
log
Home
API
Changelog
mimos
Home
API
Changelog
nes
Home
API
Changelog
nigel
Home
Changelog
oppsy
Home
API
Changelog
pez
Home
Changelog
podium
Home
API
Changelog
scooter
Home
API
Changelog
shot
Home
API
Changelog
somever
Home
Changelog
statehood
Home
Changelog
subtext
Home
API
Changelog
teamwork
Home
Changelog
topo
Home
API
Changelog
vise
Home
Changelog
vision
Home
API
Changelog
wreck
Home
API
Changelog
yar
Home
API
Changelog
hoek
Installation
Status
API
Changelog
Changelog
11.0.6
#399
Fix Error clone() when structuredClone uses bad prototype
11.0.5
#398
fix: missing stack starting from node 21+
#396
Fix default values for `merge.Options` interface
#395
Incorrect default documented for `mergeArrays` option
11.0.4
#389
fix: provide reference to TS types for export map
#385
Missing types in typescript with module resolution nodenext
11.0.3
#392
Support the URL type
11.0.2
#384
chore: add individual module types
11.0.1
breaking changes
#380
Explicitly export modules
11.0.0
breaking changes
#382
Refactor AssertError
10.0.1
#383
Updates assert() type to declare condition to be true
#379
Fix version range
10.0.0
breaking changes
#377
Support node v18 and drop node v12
9.3.0
#373
Handle very long timeouts in Hoek.wait()
#372
Cleanup
9.2.1
#371
Fix reachTemplate() regex timing
9.2.0
#368
Support named imports when using node esm loader
9.1.1
#367
applyToDefaults: respect nullOverride when shallow is used
#365
Fix applyToDefaults to work better with non-object source values
#361
upgrade lab to v24 and devDependency of typescript
9.1.0
#360
Always call base class methods to inspect Map and Set
#359
Add returnValue option to wait()
#357
deepEqual() can fail on subclassed map
9.0.4
#351
Fix 'compare is not a function'
9.0.3
#352
Prevent prototype poisoning in clone()
9.0.2
#350
Clone fails to copy override array prototype
9.0.1
#349
Fix shallow defaults clone
9.0.0
breaking changes
#347
Support only node 12
#343
Safer and faster shallow handling
8.5.1
#353
Prevent prototype poisoning in clone() (v8)
8.5.0
#346
Add isPromise()
8.4.0
#345
Add ts.XOR<>
8.3.2
#344
Improve clone() performance
8.3.1
#342
contain() part option allows no matches
8.3.0
#341
Block once in contain() when subject is an object
#340
Error.captureStackTrace can't be used in Joi's browser build
8.2.5
#338
Export interfaces
#337
deepEqual with skip seems to ignore missing properties
8.2.4
#330
Remove deep limit on contain with object
8.2.3
#329
deepEqual() fails to compare errors when prototype is false
#327
contain() passes with extra values with only and not once
8.2.1
#324
Fix empty ref bug in contain when only is true
#323
contain() is always true for empty ref with only and not once
8.2.0
#322
Break methods for deep require
#321
Handle no Buffer support
8.1.0
#319
skip and deepFunction options for deepEqual()
8.0.2
#317
Restore ability to assert with pre-made error
8.0.1
#316
Make assert() generate a named Error so bounce can identify
8.0.0
additional information
breaking changes
#315
v8.0.0 Release Notes
#314
Change assert() AssertionError to Error
#313
Remove uniqueFilename()
7.2.1
#312
Minor performance
7.2.0
#311
Support reach into Set and Map objects
7.1.0
#308
Shallow clone of entire object
7.0.0
additional information
breaking changes
#306
v7.0.0 Release Notes
#305
Support symbols in merge()
#304
Replace applyToDefaultsWithShallow() with applyToDefaults(..., { shallow })
#303
Replace cloneWithShallow() with clone(value, { shallow })
#285
Change all individual option arguments to { options } object
#284
Default handling of symbols to true by default
6.2.6
#328
deepEqual() skip fails when number of keys is diff
6.2.4
#302
Fix clone of subclassed Set and Map
#301
Fix: Add map and set to seen map
#300
Stack overflow in clone in v6.2.3
#298
Typescript enhancements
6.2.3
breaking changes
#299
Set deepEqual() prototype option to true by default, not just when no options are passed
#297
Clone Map and Set
#228
Hoek.clone() issues
6.2.2
#295
Bootstrap types from @types
#294
Handle promises in deepEqual()
6.2.1
#291
Update deps
6.2.0
#289
Change module namespace
6.1.3
#290
Fix clone without prototype
6.1.2
#283
Revert cloning of symbols to false by default
6.1.1
#282
Ignore symbols by default in deepEqual()
#281
Symbol support
6.0.4
#278
Hoek.clone() defineProperty issue
6.0.3
#277
Don't apply part option to contain() by default
6.0.2
#276
Fix contain() with duplicates and only
6.0.1
#274
Remove engines
6.0.0
breaking changes
#268
API deprecations
#260
deepEqual does not check both sides in full
#254
Add Map and Set support to deepEqual()
#242
Rework deepEqual()
#238
deepEqual and array properties
#236
Hoek.deepEqual false positive
5.0.4
#269
Try object ref comparison first in deepClone()
5.0.3
#227
Don't use deprecated new Buffer() api
5.0.2
#221
Update deps
#220
Throw instances of AssertionError on asserts
5.0.1
breaking changes
#218
base64urlDecode() should throw, not return errors
5.0.0
breaking changes
#212
Remove nextTick()
#211
Remove Timer
#210
Require node v8
#206
Add a wait() method
4.3.0
#288
Commercial version for 4.x branch
4.2.0
#204
Add escape json
4.1.1
#203
Fix isInteger for unsafe integers
4.1.0
#197
Enhancement: Make contain see non-enumerable's
4.0.2
#195
npmignore
4.0.1
#191
update to code 3.x.x
#190
Use map for cloning memoizer
4.0.0
breaking changes
#186
update lab
#185
improve .unique to make use of es6 `Set` performance
#184
improve .unique performance
#183
Fix for issue #177
#181
removed isAbsolutePath method
#180
refactor(merge): use !== rather than ^
#179
isAbsolutePath obsolete?
#177
Assert when value is not a string
#124
transform method does not respect separator option
3.0.4
#152
Hoek.reach and non standard JS objects
3.0.3
#164
Hoek.deepEqual providing false positive result
3.0.2
#173
fix linting error
#171
fix mapToObject documentation
3.0.1
#169
Lint errors. Closes #168
#168
ES6 lint errors
3.0.0
breaking changes
#167
Es6
#166
ES6 style, node v4
#165
es6 updates WIP
2.16.3
#162
Hoek.clone on process.env
2.16.2
#161
hoek.reach should allow empty keys
2.16.1
#160
cleanup loop from #148
2.16.0
#159
Allow reach to work with falsy values (empty str)
2.15.0
#148
generalize Hoek.transform to accept an array of objects
2.14.0
#147
Reach template
#146
Add reachTemplate() to apply reach() functionality to a templatized string
#139
Clone fails on objects with null prototypes
2.13.1
#145
options for deepEqual don't pass on to recursive calls in arrays
#134
Allow for deep partial contain
2.13.0
#140
Add isNullOverride to applyToDefaults
2.12.0
#133
Added option parameter to deepEqual.
2.11.1
#131
Clone even non-enumerable properties.
#130
Hoek.deepEqual({a: 'foo'}, {a: 'foo', b: 'bar'}) return true
#128
Fix deepEqual on empty objects. Fixes #127.
#127
deepEqual behaving unexpectedly with empty object
2.11.0
#117
Throw error directly if it is the only thing passed in as the message
#116
Hoek.assert - throw error that is passed in as message
#115
Adds ability to do Hoek.reach with negative index
2.10.0
#110
enhance withShallow methods to support nested keys. Closes #109
#109
Enhance shallow clone methods to support nested keys
2.9.1
#108
Fix applyToDefaultsWithShallow default clone. Closes #107
#107
applyToDefaultsWithShallow() fail to retain defaults shallow key
2.9.0
#106
Clone, shallow, and stringify
#105
Move shallow and stringify from hapi
#104
Clone fails to copy object property if only setter used
2.8.1
#103
avoid hasOwnProperty so plain objects work
#102
Plain objects can't be compared.
2.8.0
#99
assert() adds whitespace even when arguments are empty
#97
Add contain()
#96
Add contain() comparison function for strings, objects, and arrays
#95
deepEqual() fails to compare arrays with non literal members
2.7.0
#94
deepEqual
2.6.0
#93
dont execute getters when cloning
#91
Added util.format
#89
Don't clone properties with getter by executing the getter
2.5.1
#88
Allow falsey values to be used as default value in Hoek.reach()
2.5.0
#84
Replaced __proto__ with Object.create()
#82
uniqueFilename
#79
Update to lab 4.x
#76
Close #75, properly preform test
#75
Test 43 case for applyToDefaults not accurately testing
2.4.1
#71
Allow assert to be optimized
2.4.0
#72
Rename spumko to hapijs
#70
Protect against null prototypes
#68
Transform Function
#66
Default Value for Reach
#62
Cannot read property 'isImmutable' of null
2.2.0
#59
merge() shallow copies array members when merging
#58
Shallow copy objects with prototype.isImmutable flag
#57
clone() creates multiple copies of the same date, regex, or buffer object
2.1.1
#54
Detect [[Class]] instead of using instanceof
2.1.0
#51
Add isInteger()
#49
match() -> test()
2.0.0
breaking changes
#48
Bring coverage back to 100% after lab logical statement support
#47
Add isAbsolutePath for unix and windows when using node <0.11
#46
Cleanup API and remove/move unused functions
1.5.2
#45
Rename should throw an error for invalid property .
1.5.1
#44
Bring coverage back to 100% after lab fix