fsevents 1.1.1 → 1.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1078) hide show
  1. package/.travis.yml +13 -13
  2. package/binding.gyp +1 -9
  3. package/fsevents.cc +18 -32
  4. package/fsevents.js +1 -3
  5. package/install.js +13 -7
  6. package/package.json +7 -21
  7. package/src/async.cc +2 -2
  8. package/src/constants.cc +20 -20
  9. package/src/methods.cc +9 -7
  10. package/src/thread.cc +5 -6
  11. package/.npmignore +0 -1
  12. package/build/.target.mk +0 -49
  13. package/build/Makefile +0 -352
  14. package/build/action_after_build.target.mk +0 -32
  15. package/build/binding.Makefile +0 -6
  16. package/build/fse.target.mk +0 -169
  17. package/build/gyp-mac-tool +0 -612
  18. package/lib/binding/Release/node-v11-darwin-x64/fse.node +0 -0
  19. package/lib/binding/Release/node-v46-darwin-x64/fse.node +0 -0
  20. package/lib/binding/Release/node-v47-darwin-x64/fse.node +0 -0
  21. package/lib/binding/Release/node-v48-darwin-x64/fse.node +0 -0
  22. package/node_modules/abbrev/LICENSE +0 -15
  23. package/node_modules/abbrev/README.md +0 -23
  24. package/node_modules/abbrev/abbrev.js +0 -61
  25. package/node_modules/abbrev/package.json +0 -93
  26. package/node_modules/ansi-regex/index.js +0 -4
  27. package/node_modules/ansi-regex/license +0 -21
  28. package/node_modules/ansi-regex/package.json +0 -132
  29. package/node_modules/ansi-regex/readme.md +0 -39
  30. package/node_modules/ansi-styles/index.js +0 -65
  31. package/node_modules/ansi-styles/license +0 -21
  32. package/node_modules/ansi-styles/package.json +0 -114
  33. package/node_modules/ansi-styles/readme.md +0 -86
  34. package/node_modules/aproba/LICENSE +0 -14
  35. package/node_modules/aproba/README.md +0 -89
  36. package/node_modules/aproba/index.js +0 -103
  37. package/node_modules/aproba/package.json +0 -96
  38. package/node_modules/are-we-there-yet/.npmignore +0 -5
  39. package/node_modules/are-we-there-yet/CHANGES.md +0 -19
  40. package/node_modules/are-we-there-yet/LICENSE +0 -5
  41. package/node_modules/are-we-there-yet/README.md +0 -194
  42. package/node_modules/are-we-there-yet/index.js +0 -4
  43. package/node_modules/are-we-there-yet/package.json +0 -90
  44. package/node_modules/are-we-there-yet/test/lib/test-event.js +0 -29
  45. package/node_modules/are-we-there-yet/test/tracker.js +0 -57
  46. package/node_modules/are-we-there-yet/test/trackergroup.js +0 -96
  47. package/node_modules/are-we-there-yet/test/trackerstream.js +0 -51
  48. package/node_modules/are-we-there-yet/tracker-base.js +0 -11
  49. package/node_modules/are-we-there-yet/tracker-group.js +0 -107
  50. package/node_modules/are-we-there-yet/tracker-stream.js +0 -35
  51. package/node_modules/are-we-there-yet/tracker.js +0 -30
  52. package/node_modules/asn1/.npmignore +0 -2
  53. package/node_modules/asn1/.travis.yml +0 -4
  54. package/node_modules/asn1/LICENSE +0 -19
  55. package/node_modules/asn1/README.md +0 -50
  56. package/node_modules/asn1/lib/ber/errors.js +0 -13
  57. package/node_modules/asn1/lib/ber/index.js +0 -27
  58. package/node_modules/asn1/lib/ber/reader.js +0 -261
  59. package/node_modules/asn1/lib/ber/types.js +0 -36
  60. package/node_modules/asn1/lib/ber/writer.js +0 -316
  61. package/node_modules/asn1/lib/index.js +0 -20
  62. package/node_modules/asn1/package.json +0 -98
  63. package/node_modules/asn1/tst/ber/reader.test.js +0 -208
  64. package/node_modules/asn1/tst/ber/writer.test.js +0 -370
  65. package/node_modules/assert-plus/AUTHORS +0 -6
  66. package/node_modules/assert-plus/CHANGES.md +0 -8
  67. package/node_modules/assert-plus/README.md +0 -155
  68. package/node_modules/assert-plus/assert.js +0 -206
  69. package/node_modules/assert-plus/package.json +0 -115
  70. package/node_modules/asynckit/LICENSE +0 -21
  71. package/node_modules/asynckit/README.md +0 -233
  72. package/node_modules/asynckit/bench.js +0 -76
  73. package/node_modules/asynckit/index.js +0 -6
  74. package/node_modules/asynckit/lib/abort.js +0 -29
  75. package/node_modules/asynckit/lib/async.js +0 -34
  76. package/node_modules/asynckit/lib/defer.js +0 -26
  77. package/node_modules/asynckit/lib/iterate.js +0 -75
  78. package/node_modules/asynckit/lib/readable_asynckit.js +0 -91
  79. package/node_modules/asynckit/lib/readable_parallel.js +0 -25
  80. package/node_modules/asynckit/lib/readable_serial.js +0 -25
  81. package/node_modules/asynckit/lib/readable_serial_ordered.js +0 -29
  82. package/node_modules/asynckit/lib/state.js +0 -37
  83. package/node_modules/asynckit/lib/streamify.js +0 -141
  84. package/node_modules/asynckit/lib/terminator.js +0 -29
  85. package/node_modules/asynckit/package.json +0 -126
  86. package/node_modules/asynckit/parallel.js +0 -43
  87. package/node_modules/asynckit/serial.js +0 -17
  88. package/node_modules/asynckit/serialOrdered.js +0 -75
  89. package/node_modules/asynckit/stream.js +0 -21
  90. package/node_modules/aws-sign2/LICENSE +0 -55
  91. package/node_modules/aws-sign2/README.md +0 -4
  92. package/node_modules/aws-sign2/index.js +0 -212
  93. package/node_modules/aws-sign2/package.json +0 -81
  94. package/node_modules/aws4/.npmignore +0 -4
  95. package/node_modules/aws4/.tern-port +0 -1
  96. package/node_modules/aws4/.travis.yml +0 -5
  97. package/node_modules/aws4/LICENSE +0 -19
  98. package/node_modules/aws4/README.md +0 -523
  99. package/node_modules/aws4/aws4.js +0 -332
  100. package/node_modules/aws4/lru.js +0 -96
  101. package/node_modules/aws4/package.json +0 -140
  102. package/node_modules/balanced-match/.npmignore +0 -5
  103. package/node_modules/balanced-match/LICENSE.md +0 -21
  104. package/node_modules/balanced-match/README.md +0 -91
  105. package/node_modules/balanced-match/index.js +0 -58
  106. package/node_modules/balanced-match/package.json +0 -110
  107. package/node_modules/bcrypt-pbkdf/README.md +0 -39
  108. package/node_modules/bcrypt-pbkdf/index.js +0 -556
  109. package/node_modules/bcrypt-pbkdf/package.json +0 -84
  110. package/node_modules/block-stream/LICENCE +0 -25
  111. package/node_modules/block-stream/LICENSE +0 -15
  112. package/node_modules/block-stream/README.md +0 -14
  113. package/node_modules/block-stream/block-stream.js +0 -209
  114. package/node_modules/block-stream/package.json +0 -95
  115. package/node_modules/boom/.npmignore +0 -18
  116. package/node_modules/boom/.travis.yml +0 -8
  117. package/node_modules/boom/CONTRIBUTING.md +0 -1
  118. package/node_modules/boom/LICENSE +0 -28
  119. package/node_modules/boom/README.md +0 -652
  120. package/node_modules/boom/images/boom.png +0 -0
  121. package/node_modules/boom/lib/index.js +0 -318
  122. package/node_modules/boom/package.json +0 -98
  123. package/node_modules/boom/test/index.js +0 -654
  124. package/node_modules/brace-expansion/README.md +0 -122
  125. package/node_modules/brace-expansion/index.js +0 -201
  126. package/node_modules/brace-expansion/package.json +0 -112
  127. package/node_modules/buffer-shims/index.js +0 -108
  128. package/node_modules/buffer-shims/license.md +0 -19
  129. package/node_modules/buffer-shims/package.json +0 -86
  130. package/node_modules/buffer-shims/readme.md +0 -21
  131. package/node_modules/caseless/LICENSE +0 -28
  132. package/node_modules/caseless/README.md +0 -45
  133. package/node_modules/caseless/index.js +0 -66
  134. package/node_modules/caseless/package.json +0 -96
  135. package/node_modules/caseless/test.js +0 -40
  136. package/node_modules/chalk/index.js +0 -116
  137. package/node_modules/chalk/license +0 -21
  138. package/node_modules/chalk/package.json +0 -140
  139. package/node_modules/chalk/readme.md +0 -213
  140. package/node_modules/code-point-at/index.js +0 -32
  141. package/node_modules/code-point-at/license +0 -21
  142. package/node_modules/code-point-at/package.json +0 -106
  143. package/node_modules/code-point-at/readme.md +0 -32
  144. package/node_modules/combined-stream/License +0 -19
  145. package/node_modules/combined-stream/Readme.md +0 -138
  146. package/node_modules/combined-stream/lib/combined_stream.js +0 -188
  147. package/node_modules/combined-stream/package.json +0 -101
  148. package/node_modules/commander/History.md +0 -261
  149. package/node_modules/commander/LICENSE +0 -22
  150. package/node_modules/commander/Readme.md +0 -351
  151. package/node_modules/commander/index.js +0 -1110
  152. package/node_modules/commander/package.json +0 -104
  153. package/node_modules/concat-map/.travis.yml +0 -4
  154. package/node_modules/concat-map/LICENSE +0 -18
  155. package/node_modules/concat-map/README.markdown +0 -62
  156. package/node_modules/concat-map/example/map.js +0 -6
  157. package/node_modules/concat-map/index.js +0 -13
  158. package/node_modules/concat-map/package.json +0 -117
  159. package/node_modules/concat-map/test/map.js +0 -39
  160. package/node_modules/console-control-strings/LICENSE +0 -13
  161. package/node_modules/console-control-strings/README.md +0 -145
  162. package/node_modules/console-control-strings/README.md~ +0 -140
  163. package/node_modules/console-control-strings/index.js +0 -125
  164. package/node_modules/console-control-strings/package.json +0 -96
  165. package/node_modules/core-util-is/LICENSE +0 -19
  166. package/node_modules/core-util-is/README.md +0 -3
  167. package/node_modules/core-util-is/float.patch +0 -604
  168. package/node_modules/core-util-is/lib/util.js +0 -107
  169. package/node_modules/core-util-is/package.json +0 -95
  170. package/node_modules/core-util-is/test.js +0 -68
  171. package/node_modules/cryptiles/.npmignore +0 -18
  172. package/node_modules/cryptiles/.travis.yml +0 -8
  173. package/node_modules/cryptiles/LICENSE +0 -28
  174. package/node_modules/cryptiles/README.md +0 -16
  175. package/node_modules/cryptiles/lib/index.js +0 -68
  176. package/node_modules/cryptiles/package.json +0 -94
  177. package/node_modules/cryptiles/test/index.js +0 -102
  178. package/node_modules/dashdash/CHANGES.md +0 -364
  179. package/node_modules/dashdash/LICENSE.txt +0 -24
  180. package/node_modules/dashdash/README.md +0 -574
  181. package/node_modules/dashdash/etc/dashdash.bash_completion.in +0 -389
  182. package/node_modules/dashdash/lib/dashdash.js +0 -1055
  183. package/node_modules/dashdash/node_modules/assert-plus/AUTHORS +0 -6
  184. package/node_modules/dashdash/node_modules/assert-plus/CHANGES.md +0 -14
  185. package/node_modules/dashdash/node_modules/assert-plus/README.md +0 -162
  186. package/node_modules/dashdash/node_modules/assert-plus/assert.js +0 -211
  187. package/node_modules/dashdash/node_modules/assert-plus/package.json +0 -115
  188. package/node_modules/dashdash/package.json +0 -125
  189. package/node_modules/debug/.jshintrc +0 -3
  190. package/node_modules/debug/.npmignore +0 -6
  191. package/node_modules/debug/History.md +0 -195
  192. package/node_modules/debug/Makefile +0 -36
  193. package/node_modules/debug/Readme.md +0 -188
  194. package/node_modules/debug/bower.json +0 -28
  195. package/node_modules/debug/browser.js +0 -168
  196. package/node_modules/debug/component.json +0 -19
  197. package/node_modules/debug/debug.js +0 -197
  198. package/node_modules/debug/node.js +0 -209
  199. package/node_modules/debug/package.json +0 -106
  200. package/node_modules/deep-extend/CHANGELOG.md +0 -21
  201. package/node_modules/deep-extend/LICENSE +0 -20
  202. package/node_modules/deep-extend/README.md +0 -90
  203. package/node_modules/deep-extend/index.js +0 -1
  204. package/node_modules/deep-extend/lib/deep-extend.js +0 -144
  205. package/node_modules/deep-extend/package.json +0 -120
  206. package/node_modules/delayed-stream/.npmignore +0 -1
  207. package/node_modules/delayed-stream/License +0 -19
  208. package/node_modules/delayed-stream/Makefile +0 -7
  209. package/node_modules/delayed-stream/Readme.md +0 -141
  210. package/node_modules/delayed-stream/lib/delayed_stream.js +0 -107
  211. package/node_modules/delayed-stream/package.json +0 -97
  212. package/node_modules/delegates/.npmignore +0 -1
  213. package/node_modules/delegates/History.md +0 -22
  214. package/node_modules/delegates/License +0 -20
  215. package/node_modules/delegates/Makefile +0 -8
  216. package/node_modules/delegates/Readme.md +0 -94
  217. package/node_modules/delegates/index.js +0 -121
  218. package/node_modules/delegates/package.json +0 -84
  219. package/node_modules/delegates/test/index.js +0 -94
  220. package/node_modules/ecc-jsbn/.npmignore +0 -15
  221. package/node_modules/ecc-jsbn/LICENSE +0 -21
  222. package/node_modules/ecc-jsbn/README.md +0 -8
  223. package/node_modules/ecc-jsbn/index.js +0 -57
  224. package/node_modules/ecc-jsbn/lib/LICENSE-jsbn +0 -40
  225. package/node_modules/ecc-jsbn/lib/ec.js +0 -561
  226. package/node_modules/ecc-jsbn/lib/sec.js +0 -170
  227. package/node_modules/ecc-jsbn/package.json +0 -90
  228. package/node_modules/ecc-jsbn/test.js +0 -14
  229. package/node_modules/escape-string-regexp/index.js +0 -11
  230. package/node_modules/escape-string-regexp/license +0 -21
  231. package/node_modules/escape-string-regexp/package.json +0 -109
  232. package/node_modules/escape-string-regexp/readme.md +0 -27
  233. package/node_modules/extend/.eslintrc +0 -192
  234. package/node_modules/extend/.jscs.json +0 -104
  235. package/node_modules/extend/.npmignore +0 -1
  236. package/node_modules/extend/.travis.yml +0 -44
  237. package/node_modules/extend/CHANGELOG.md +0 -69
  238. package/node_modules/extend/LICENSE +0 -23
  239. package/node_modules/extend/README.md +0 -62
  240. package/node_modules/extend/component.json +0 -32
  241. package/node_modules/extend/index.js +0 -86
  242. package/node_modules/extend/package.json +0 -106
  243. package/node_modules/extsprintf/.gitmodules +0 -6
  244. package/node_modules/extsprintf/LICENSE +0 -19
  245. package/node_modules/extsprintf/Makefile +0 -23
  246. package/node_modules/extsprintf/Makefile.deps +0 -39
  247. package/node_modules/extsprintf/Makefile.targ +0 -285
  248. package/node_modules/extsprintf/README.md +0 -39
  249. package/node_modules/extsprintf/examples/simple.js +0 -2
  250. package/node_modules/extsprintf/jsl.node.conf +0 -137
  251. package/node_modules/extsprintf/lib/extsprintf.js +0 -166
  252. package/node_modules/extsprintf/package.json +0 -74
  253. package/node_modules/forever-agent/LICENSE +0 -55
  254. package/node_modules/forever-agent/README.md +0 -4
  255. package/node_modules/forever-agent/index.js +0 -138
  256. package/node_modules/forever-agent/package.json +0 -88
  257. package/node_modules/form-data/License +0 -19
  258. package/node_modules/form-data/README.md +0 -217
  259. package/node_modules/form-data/lib/browser.js +0 -2
  260. package/node_modules/form-data/lib/form_data.js +0 -440
  261. package/node_modules/form-data/lib/populate.js +0 -10
  262. package/node_modules/form-data/package.json +0 -145
  263. package/node_modules/fs.realpath/LICENSE +0 -43
  264. package/node_modules/fs.realpath/README.md +0 -33
  265. package/node_modules/fs.realpath/index.js +0 -66
  266. package/node_modules/fs.realpath/old.js +0 -303
  267. package/node_modules/fs.realpath/package.json +0 -94
  268. package/node_modules/fstream/.npmignore +0 -5
  269. package/node_modules/fstream/.travis.yml +0 -9
  270. package/node_modules/fstream/LICENSE +0 -15
  271. package/node_modules/fstream/README.md +0 -76
  272. package/node_modules/fstream/examples/filter-pipe.js +0 -134
  273. package/node_modules/fstream/examples/pipe.js +0 -118
  274. package/node_modules/fstream/examples/reader.js +0 -68
  275. package/node_modules/fstream/examples/symlink-write.js +0 -27
  276. package/node_modules/fstream/fstream.js +0 -35
  277. package/node_modules/fstream/lib/abstract.js +0 -85
  278. package/node_modules/fstream/lib/collect.js +0 -70
  279. package/node_modules/fstream/lib/dir-reader.js +0 -252
  280. package/node_modules/fstream/lib/dir-writer.js +0 -174
  281. package/node_modules/fstream/lib/file-reader.js +0 -150
  282. package/node_modules/fstream/lib/file-writer.js +0 -107
  283. package/node_modules/fstream/lib/get-type.js +0 -33
  284. package/node_modules/fstream/lib/link-reader.js +0 -53
  285. package/node_modules/fstream/lib/link-writer.js +0 -95
  286. package/node_modules/fstream/lib/proxy-reader.js +0 -95
  287. package/node_modules/fstream/lib/proxy-writer.js +0 -111
  288. package/node_modules/fstream/lib/reader.js +0 -255
  289. package/node_modules/fstream/lib/socket-reader.js +0 -36
  290. package/node_modules/fstream/lib/writer.js +0 -390
  291. package/node_modules/fstream/package.json +0 -110
  292. package/node_modules/fstream-ignore/LICENSE +0 -15
  293. package/node_modules/fstream-ignore/README.md +0 -22
  294. package/node_modules/fstream-ignore/ignore.js +0 -275
  295. package/node_modules/fstream-ignore/package.json +0 -104
  296. package/node_modules/gauge/CHANGELOG.md +0 -155
  297. package/node_modules/gauge/LICENSE +0 -13
  298. package/node_modules/gauge/README.md +0 -399
  299. package/node_modules/gauge/base-theme.js +0 -14
  300. package/node_modules/gauge/error.js +0 -24
  301. package/node_modules/gauge/has-color.js +0 -12
  302. package/node_modules/gauge/index.js +0 -233
  303. package/node_modules/gauge/package.json +0 -126
  304. package/node_modules/gauge/plumbing.js +0 -47
  305. package/node_modules/gauge/process.js +0 -3
  306. package/node_modules/gauge/progress-bar.js +0 -35
  307. package/node_modules/gauge/render-template.js +0 -181
  308. package/node_modules/gauge/set-immediate.js +0 -7
  309. package/node_modules/gauge/set-interval.js +0 -3
  310. package/node_modules/gauge/spin.js +0 -5
  311. package/node_modules/gauge/template-item.js +0 -73
  312. package/node_modules/gauge/theme-set.js +0 -115
  313. package/node_modules/gauge/themes.js +0 -54
  314. package/node_modules/gauge/wide-truncate.js +0 -25
  315. package/node_modules/generate-function/.npmignore +0 -1
  316. package/node_modules/generate-function/.travis.yml +0 -3
  317. package/node_modules/generate-function/README.md +0 -72
  318. package/node_modules/generate-function/example.js +0 -27
  319. package/node_modules/generate-function/index.js +0 -61
  320. package/node_modules/generate-function/package.json +0 -87
  321. package/node_modules/generate-function/test.js +0 -33
  322. package/node_modules/generate-object-property/.npmignore +0 -1
  323. package/node_modules/generate-object-property/.travis.yml +0 -3
  324. package/node_modules/generate-object-property/LICENSE +0 -21
  325. package/node_modules/generate-object-property/README.md +0 -19
  326. package/node_modules/generate-object-property/index.js +0 -12
  327. package/node_modules/generate-object-property/package.json +0 -84
  328. package/node_modules/generate-object-property/test.js +0 -12
  329. package/node_modules/getpass/.npmignore +0 -8
  330. package/node_modules/getpass/.travis.yml +0 -9
  331. package/node_modules/getpass/LICENSE +0 -18
  332. package/node_modules/getpass/README.md +0 -32
  333. package/node_modules/getpass/lib/index.js +0 -123
  334. package/node_modules/getpass/node_modules/assert-plus/AUTHORS +0 -6
  335. package/node_modules/getpass/node_modules/assert-plus/CHANGES.md +0 -14
  336. package/node_modules/getpass/node_modules/assert-plus/README.md +0 -162
  337. package/node_modules/getpass/node_modules/assert-plus/assert.js +0 -211
  338. package/node_modules/getpass/node_modules/assert-plus/package.json +0 -115
  339. package/node_modules/getpass/package.json +0 -90
  340. package/node_modules/glob/LICENSE +0 -15
  341. package/node_modules/glob/README.md +0 -368
  342. package/node_modules/glob/changelog.md +0 -67
  343. package/node_modules/glob/common.js +0 -240
  344. package/node_modules/glob/glob.js +0 -792
  345. package/node_modules/glob/package.json +0 -111
  346. package/node_modules/glob/sync.js +0 -486
  347. package/node_modules/graceful-fs/LICENSE +0 -15
  348. package/node_modules/graceful-fs/README.md +0 -133
  349. package/node_modules/graceful-fs/fs.js +0 -21
  350. package/node_modules/graceful-fs/graceful-fs.js +0 -262
  351. package/node_modules/graceful-fs/legacy-streams.js +0 -118
  352. package/node_modules/graceful-fs/package.json +0 -111
  353. package/node_modules/graceful-fs/polyfills.js +0 -330
  354. package/node_modules/graceful-readlink/.npmignore +0 -3
  355. package/node_modules/graceful-readlink/.travis.yml +0 -5
  356. package/node_modules/graceful-readlink/LICENSE +0 -22
  357. package/node_modules/graceful-readlink/README.md +0 -17
  358. package/node_modules/graceful-readlink/index.js +0 -12
  359. package/node_modules/graceful-readlink/package.json +0 -83
  360. package/node_modules/har-validator/LICENSE +0 -13
  361. package/node_modules/har-validator/README.md +0 -309
  362. package/node_modules/har-validator/bin/har-validator +0 -56
  363. package/node_modules/har-validator/lib/async.js +0 -14
  364. package/node_modules/har-validator/lib/error.js +0 -10
  365. package/node_modules/har-validator/lib/index.js +0 -22
  366. package/node_modules/har-validator/lib/runner.js +0 -29
  367. package/node_modules/har-validator/lib/schemas/cache.json +0 -13
  368. package/node_modules/har-validator/lib/schemas/cacheEntry.json +0 -31
  369. package/node_modules/har-validator/lib/schemas/content.json +0 -27
  370. package/node_modules/har-validator/lib/schemas/cookie.json +0 -34
  371. package/node_modules/har-validator/lib/schemas/creator.json +0 -18
  372. package/node_modules/har-validator/lib/schemas/entry.json +0 -51
  373. package/node_modules/har-validator/lib/schemas/har.json +0 -11
  374. package/node_modules/har-validator/lib/schemas/index.js +0 -49
  375. package/node_modules/har-validator/lib/schemas/log.json +0 -34
  376. package/node_modules/har-validator/lib/schemas/page.json +0 -30
  377. package/node_modules/har-validator/lib/schemas/pageTimings.json +0 -16
  378. package/node_modules/har-validator/lib/schemas/postData.json +0 -41
  379. package/node_modules/har-validator/lib/schemas/record.json +0 -18
  380. package/node_modules/har-validator/lib/schemas/request.json +0 -55
  381. package/node_modules/har-validator/lib/schemas/response.json +0 -52
  382. package/node_modules/har-validator/lib/schemas/timings.json +0 -40
  383. package/node_modules/har-validator/package.json +0 -120
  384. package/node_modules/has-ansi/index.js +0 -4
  385. package/node_modules/has-ansi/license +0 -21
  386. package/node_modules/has-ansi/package.json +0 -118
  387. package/node_modules/has-ansi/readme.md +0 -36
  388. package/node_modules/has-unicode/LICENSE +0 -14
  389. package/node_modules/has-unicode/README.md +0 -43
  390. package/node_modules/has-unicode/index.js +0 -16
  391. package/node_modules/has-unicode/package.json +0 -94
  392. package/node_modules/hawk/.npmignore +0 -20
  393. package/node_modules/hawk/.travis.yml +0 -5
  394. package/node_modules/hawk/LICENSE +0 -28
  395. package/node_modules/hawk/README.md +0 -634
  396. package/node_modules/hawk/bower.json +0 -24
  397. package/node_modules/hawk/component.json +0 -19
  398. package/node_modules/hawk/dist/client.js +0 -343
  399. package/node_modules/hawk/example/usage.js +0 -78
  400. package/node_modules/hawk/images/hawk.png +0 -0
  401. package/node_modules/hawk/images/logo.png +0 -0
  402. package/node_modules/hawk/lib/browser.js +0 -637
  403. package/node_modules/hawk/lib/client.js +0 -369
  404. package/node_modules/hawk/lib/crypto.js +0 -126
  405. package/node_modules/hawk/lib/index.js +0 -15
  406. package/node_modules/hawk/lib/server.js +0 -548
  407. package/node_modules/hawk/lib/utils.js +0 -184
  408. package/node_modules/hawk/package.json +0 -101
  409. package/node_modules/hawk/test/browser.js +0 -1492
  410. package/node_modules/hawk/test/client.js +0 -440
  411. package/node_modules/hawk/test/crypto.js +0 -70
  412. package/node_modules/hawk/test/index.js +0 -378
  413. package/node_modules/hawk/test/readme.js +0 -95
  414. package/node_modules/hawk/test/server.js +0 -1329
  415. package/node_modules/hawk/test/uri.js +0 -838
  416. package/node_modules/hawk/test/utils.js +0 -149
  417. package/node_modules/hoek/.npmignore +0 -18
  418. package/node_modules/hoek/.travis.yml +0 -7
  419. package/node_modules/hoek/CONTRIBUTING.md +0 -1
  420. package/node_modules/hoek/LICENSE +0 -31
  421. package/node_modules/hoek/README.md +0 -584
  422. package/node_modules/hoek/images/hoek.png +0 -0
  423. package/node_modules/hoek/lib/escape.js +0 -132
  424. package/node_modules/hoek/lib/index.js +0 -993
  425. package/node_modules/hoek/package.json +0 -96
  426. package/node_modules/hoek/test/escaper.js +0 -88
  427. package/node_modules/hoek/test/index.js +0 -2513
  428. package/node_modules/hoek/test/modules/ignore.txt +0 -0
  429. package/node_modules/hoek/test/modules/test1.js +0 -1
  430. package/node_modules/hoek/test/modules/test2.js +0 -1
  431. package/node_modules/hoek/test/modules/test3.js +0 -1
  432. package/node_modules/http-signature/.dir-locals.el +0 -6
  433. package/node_modules/http-signature/.npmignore +0 -7
  434. package/node_modules/http-signature/CHANGES.md +0 -46
  435. package/node_modules/http-signature/LICENSE +0 -18
  436. package/node_modules/http-signature/README.md +0 -79
  437. package/node_modules/http-signature/http_signing.md +0 -363
  438. package/node_modules/http-signature/lib/index.js +0 -29
  439. package/node_modules/http-signature/lib/parser.js +0 -318
  440. package/node_modules/http-signature/lib/signer.js +0 -399
  441. package/node_modules/http-signature/lib/utils.js +0 -112
  442. package/node_modules/http-signature/lib/verify.js +0 -88
  443. package/node_modules/http-signature/package.json +0 -116
  444. package/node_modules/inflight/LICENSE +0 -15
  445. package/node_modules/inflight/README.md +0 -37
  446. package/node_modules/inflight/inflight.js +0 -54
  447. package/node_modules/inflight/package.json +0 -105
  448. package/node_modules/inherits/LICENSE +0 -16
  449. package/node_modules/inherits/README.md +0 -42
  450. package/node_modules/inherits/inherits.js +0 -7
  451. package/node_modules/inherits/inherits_browser.js +0 -23
  452. package/node_modules/inherits/package.json +0 -105
  453. package/node_modules/ini/LICENSE +0 -15
  454. package/node_modules/ini/README.md +0 -102
  455. package/node_modules/ini/ini.js +0 -190
  456. package/node_modules/ini/package.json +0 -89
  457. package/node_modules/is-fullwidth-code-point/index.js +0 -46
  458. package/node_modules/is-fullwidth-code-point/license +0 -21
  459. package/node_modules/is-fullwidth-code-point/package.json +0 -108
  460. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  461. package/node_modules/is-my-json-valid/.npmignore +0 -2
  462. package/node_modules/is-my-json-valid/.travis.yml +0 -3
  463. package/node_modules/is-my-json-valid/LICENSE +0 -21
  464. package/node_modules/is-my-json-valid/README.md +0 -173
  465. package/node_modules/is-my-json-valid/example.js +0 -18
  466. package/node_modules/is-my-json-valid/formats.js +0 -14
  467. package/node_modules/is-my-json-valid/index.js +0 -594
  468. package/node_modules/is-my-json-valid/package.json +0 -116
  469. package/node_modules/is-my-json-valid/require.js +0 -12
  470. package/node_modules/is-my-json-valid/test/fixtures/cosmic.js +0 -84
  471. package/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json +0 -82
  472. package/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json +0 -88
  473. package/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json +0 -112
  474. package/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json +0 -68
  475. package/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json +0 -107
  476. package/node_modules/is-my-json-valid/test/json-schema-draft4/default.json +0 -49
  477. package/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json +0 -32
  478. package/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json +0 -113
  479. package/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json +0 -72
  480. package/node_modules/is-my-json-valid/test/json-schema-draft4/format.json +0 -143
  481. package/node_modules/is-my-json-valid/test/json-schema-draft4/items.json +0 -46
  482. package/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json +0 -28
  483. package/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json +0 -28
  484. package/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json +0 -28
  485. package/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json +0 -42
  486. package/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json +0 -28
  487. package/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json +0 -28
  488. package/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json +0 -28
  489. package/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json +0 -42
  490. package/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json +0 -96
  491. package/node_modules/is-my-json-valid/test/json-schema-draft4/not.json +0 -96
  492. package/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json +0 -18
  493. package/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json +0 -18
  494. package/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json +0 -68
  495. package/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json +0 -23
  496. package/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json +0 -110
  497. package/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json +0 -92
  498. package/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json +0 -128
  499. package/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json +0 -74
  500. package/node_modules/is-my-json-valid/test/json-schema-draft4/required.json +0 -39
  501. package/node_modules/is-my-json-valid/test/json-schema-draft4/type.json +0 -330
  502. package/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json +0 -79
  503. package/node_modules/is-my-json-valid/test/json-schema.js +0 -23
  504. package/node_modules/is-my-json-valid/test/misc.js +0 -471
  505. package/node_modules/is-property/.npmignore +0 -17
  506. package/node_modules/is-property/LICENSE +0 -22
  507. package/node_modules/is-property/README.md +0 -28
  508. package/node_modules/is-property/is-property.js +0 -5
  509. package/node_modules/is-property/package.json +0 -92
  510. package/node_modules/is-typedarray/LICENSE.md +0 -18
  511. package/node_modules/is-typedarray/README.md +0 -16
  512. package/node_modules/is-typedarray/index.js +0 -41
  513. package/node_modules/is-typedarray/package.json +0 -90
  514. package/node_modules/is-typedarray/test.js +0 -34
  515. package/node_modules/isarray/.npmignore +0 -1
  516. package/node_modules/isarray/.travis.yml +0 -4
  517. package/node_modules/isarray/Makefile +0 -6
  518. package/node_modules/isarray/README.md +0 -60
  519. package/node_modules/isarray/component.json +0 -19
  520. package/node_modules/isarray/index.js +0 -5
  521. package/node_modules/isarray/package.json +0 -105
  522. package/node_modules/isarray/test.js +0 -20
  523. package/node_modules/isstream/.jshintrc +0 -59
  524. package/node_modules/isstream/.npmignore +0 -1
  525. package/node_modules/isstream/.travis.yml +0 -12
  526. package/node_modules/isstream/LICENSE.md +0 -11
  527. package/node_modules/isstream/README.md +0 -66
  528. package/node_modules/isstream/isstream.js +0 -27
  529. package/node_modules/isstream/package.json +0 -93
  530. package/node_modules/isstream/test.js +0 -168
  531. package/node_modules/jodid25519/.npmignore +0 -11
  532. package/node_modules/jodid25519/.travis.yml +0 -7
  533. package/node_modules/jodid25519/AUTHORS.md +0 -3
  534. package/node_modules/jodid25519/LICENSE +0 -23
  535. package/node_modules/jodid25519/README.md +0 -51
  536. package/node_modules/jodid25519/almond.0 +0 -42
  537. package/node_modules/jodid25519/almond.1 +0 -13
  538. package/node_modules/jodid25519/index.js +0 -35
  539. package/node_modules/jodid25519/jsdoc.json +0 -19
  540. package/node_modules/jodid25519/lib/core.js +0 -481
  541. package/node_modules/jodid25519/lib/curve255.js +0 -221
  542. package/node_modules/jodid25519/lib/dh.js +0 -111
  543. package/node_modules/jodid25519/lib/eddsa.js +0 -573
  544. package/node_modules/jodid25519/lib/utils.js +0 -198
  545. package/node_modules/jodid25519/package.json +0 -104
  546. package/node_modules/jsbn/.npmignore +0 -2
  547. package/node_modules/jsbn/LICENSE +0 -40
  548. package/node_modules/jsbn/README.md +0 -175
  549. package/node_modules/jsbn/example.html +0 -12
  550. package/node_modules/jsbn/example.js +0 -3
  551. package/node_modules/jsbn/index.js +0 -1357
  552. package/node_modules/jsbn/package.json +0 -91
  553. package/node_modules/json-schema/README.md +0 -5
  554. package/node_modules/json-schema/draft-00/hyper-schema +0 -68
  555. package/node_modules/json-schema/draft-00/json-ref +0 -26
  556. package/node_modules/json-schema/draft-00/links +0 -33
  557. package/node_modules/json-schema/draft-00/schema +0 -155
  558. package/node_modules/json-schema/draft-01/hyper-schema +0 -68
  559. package/node_modules/json-schema/draft-01/json-ref +0 -26
  560. package/node_modules/json-schema/draft-01/links +0 -33
  561. package/node_modules/json-schema/draft-01/schema +0 -155
  562. package/node_modules/json-schema/draft-02/hyper-schema +0 -68
  563. package/node_modules/json-schema/draft-02/json-ref +0 -26
  564. package/node_modules/json-schema/draft-02/links +0 -35
  565. package/node_modules/json-schema/draft-02/schema +0 -166
  566. package/node_modules/json-schema/draft-03/examples/address +0 -20
  567. package/node_modules/json-schema/draft-03/examples/calendar +0 -53
  568. package/node_modules/json-schema/draft-03/examples/card +0 -105
  569. package/node_modules/json-schema/draft-03/examples/geo +0 -8
  570. package/node_modules/json-schema/draft-03/examples/interfaces +0 -23
  571. package/node_modules/json-schema/draft-03/hyper-schema +0 -60
  572. package/node_modules/json-schema/draft-03/json-ref +0 -26
  573. package/node_modules/json-schema/draft-03/links +0 -35
  574. package/node_modules/json-schema/draft-03/schema +0 -174
  575. package/node_modules/json-schema/draft-04/hyper-schema +0 -60
  576. package/node_modules/json-schema/draft-04/links +0 -41
  577. package/node_modules/json-schema/draft-04/schema +0 -189
  578. package/node_modules/json-schema/draft-zyp-json-schema-03.xml +0 -1120
  579. package/node_modules/json-schema/draft-zyp-json-schema-04.xml +0 -1072
  580. package/node_modules/json-schema/lib/links.js +0 -66
  581. package/node_modules/json-schema/lib/validate.js +0 -273
  582. package/node_modules/json-schema/package.json +0 -100
  583. package/node_modules/json-schema/test/tests.js +0 -95
  584. package/node_modules/json-stringify-safe/.npmignore +0 -1
  585. package/node_modules/json-stringify-safe/CHANGELOG.md +0 -14
  586. package/node_modules/json-stringify-safe/LICENSE +0 -15
  587. package/node_modules/json-stringify-safe/Makefile +0 -35
  588. package/node_modules/json-stringify-safe/README.md +0 -52
  589. package/node_modules/json-stringify-safe/package.json +0 -102
  590. package/node_modules/json-stringify-safe/stringify.js +0 -27
  591. package/node_modules/json-stringify-safe/test/mocha.opts +0 -2
  592. package/node_modules/json-stringify-safe/test/stringify_test.js +0 -246
  593. package/node_modules/jsonpointer/LICENSE.md +0 -21
  594. package/node_modules/jsonpointer/README.md +0 -39
  595. package/node_modules/jsonpointer/jsonpointer.js +0 -93
  596. package/node_modules/jsonpointer/package.json +0 -112
  597. package/node_modules/jsprim/CHANGES.md +0 -39
  598. package/node_modules/jsprim/LICENSE +0 -19
  599. package/node_modules/jsprim/README.md +0 -237
  600. package/node_modules/jsprim/lib/jsprim.js +0 -488
  601. package/node_modules/jsprim/package.json +0 -85
  602. package/node_modules/mime-db/HISTORY.md +0 -391
  603. package/node_modules/mime-db/LICENSE +0 -22
  604. package/node_modules/mime-db/README.md +0 -82
  605. package/node_modules/mime-db/db.json +0 -6751
  606. package/node_modules/mime-db/index.js +0 -11
  607. package/node_modules/mime-db/package.json +0 -138
  608. package/node_modules/mime-types/HISTORY.md +0 -216
  609. package/node_modules/mime-types/LICENSE +0 -23
  610. package/node_modules/mime-types/README.md +0 -103
  611. package/node_modules/mime-types/index.js +0 -188
  612. package/node_modules/mime-types/package.json +0 -128
  613. package/node_modules/minimatch/LICENSE +0 -15
  614. package/node_modules/minimatch/README.md +0 -209
  615. package/node_modules/minimatch/minimatch.js +0 -923
  616. package/node_modules/minimatch/package.json +0 -98
  617. package/node_modules/minimist/.travis.yml +0 -4
  618. package/node_modules/minimist/LICENSE +0 -18
  619. package/node_modules/minimist/example/parse.js +0 -2
  620. package/node_modules/minimist/index.js +0 -187
  621. package/node_modules/minimist/package.json +0 -101
  622. package/node_modules/minimist/readme.markdown +0 -73
  623. package/node_modules/minimist/test/dash.js +0 -24
  624. package/node_modules/minimist/test/default_bool.js +0 -20
  625. package/node_modules/minimist/test/dotted.js +0 -16
  626. package/node_modules/minimist/test/long.js +0 -31
  627. package/node_modules/minimist/test/parse.js +0 -318
  628. package/node_modules/minimist/test/parse_modified.js +0 -9
  629. package/node_modules/minimist/test/short.js +0 -67
  630. package/node_modules/minimist/test/whitespace.js +0 -8
  631. package/node_modules/mkdirp/.travis.yml +0 -8
  632. package/node_modules/mkdirp/LICENSE +0 -21
  633. package/node_modules/mkdirp/bin/cmd.js +0 -33
  634. package/node_modules/mkdirp/bin/usage.txt +0 -12
  635. package/node_modules/mkdirp/examples/pow.js +0 -6
  636. package/node_modules/mkdirp/index.js +0 -98
  637. package/node_modules/mkdirp/package.json +0 -95
  638. package/node_modules/mkdirp/readme.markdown +0 -100
  639. package/node_modules/mkdirp/test/chmod.js +0 -41
  640. package/node_modules/mkdirp/test/clobber.js +0 -38
  641. package/node_modules/mkdirp/test/mkdirp.js +0 -28
  642. package/node_modules/mkdirp/test/opts_fs.js +0 -29
  643. package/node_modules/mkdirp/test/opts_fs_sync.js +0 -27
  644. package/node_modules/mkdirp/test/perm.js +0 -32
  645. package/node_modules/mkdirp/test/perm_sync.js +0 -36
  646. package/node_modules/mkdirp/test/race.js +0 -37
  647. package/node_modules/mkdirp/test/rel.js +0 -32
  648. package/node_modules/mkdirp/test/return.js +0 -25
  649. package/node_modules/mkdirp/test/return_sync.js +0 -24
  650. package/node_modules/mkdirp/test/root.js +0 -19
  651. package/node_modules/mkdirp/test/sync.js +0 -32
  652. package/node_modules/mkdirp/test/umask.js +0 -28
  653. package/node_modules/mkdirp/test/umask_sync.js +0 -32
  654. package/node_modules/ms/.npmignore +0 -5
  655. package/node_modules/ms/History.md +0 -66
  656. package/node_modules/ms/LICENSE +0 -20
  657. package/node_modules/ms/README.md +0 -35
  658. package/node_modules/ms/index.js +0 -125
  659. package/node_modules/ms/package.json +0 -82
  660. package/node_modules/node-pre-gyp/CHANGELOG.md +0 -343
  661. package/node_modules/node-pre-gyp/LICENSE +0 -27
  662. package/node_modules/node-pre-gyp/README.md +0 -574
  663. package/node_modules/node-pre-gyp/appveyor.yml +0 -40
  664. package/node_modules/node-pre-gyp/bin/node-pre-gyp +0 -131
  665. package/node_modules/node-pre-gyp/bin/node-pre-gyp.cmd +0 -2
  666. package/node_modules/node-pre-gyp/lib/build.js +0 -43
  667. package/node_modules/node-pre-gyp/lib/clean.js +0 -23
  668. package/node_modules/node-pre-gyp/lib/configure.js +0 -48
  669. package/node_modules/node-pre-gyp/lib/info.js +0 -40
  670. package/node_modules/node-pre-gyp/lib/install.js +0 -239
  671. package/node_modules/node-pre-gyp/lib/node-pre-gyp.js +0 -194
  672. package/node_modules/node-pre-gyp/lib/package.js +0 -46
  673. package/node_modules/node-pre-gyp/lib/pre-binding.js +0 -25
  674. package/node_modules/node-pre-gyp/lib/publish.js +0 -77
  675. package/node_modules/node-pre-gyp/lib/rebuild.js +0 -13
  676. package/node_modules/node-pre-gyp/lib/reinstall.js +0 -13
  677. package/node_modules/node-pre-gyp/lib/reveal.js +0 -31
  678. package/node_modules/node-pre-gyp/lib/testbinary.js +0 -73
  679. package/node_modules/node-pre-gyp/lib/testpackage.js +0 -49
  680. package/node_modules/node-pre-gyp/lib/unpublish.js +0 -41
  681. package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +0 -1414
  682. package/node_modules/node-pre-gyp/lib/util/compile.js +0 -87
  683. package/node_modules/node-pre-gyp/lib/util/handle_gyp_opts.js +0 -94
  684. package/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/index.html +0 -26
  685. package/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json +0 -9
  686. package/node_modules/node-pre-gyp/lib/util/s3_setup.js +0 -27
  687. package/node_modules/node-pre-gyp/lib/util/versioning.js +0 -308
  688. package/node_modules/node-pre-gyp/package.json +0 -133
  689. package/node_modules/nopt/.npmignore +0 -1
  690. package/node_modules/nopt/.travis.yml +0 -9
  691. package/node_modules/nopt/LICENSE +0 -15
  692. package/node_modules/nopt/README.md +0 -211
  693. package/node_modules/nopt/bin/nopt.js +0 -54
  694. package/node_modules/nopt/examples/my-program.js +0 -30
  695. package/node_modules/nopt/lib/nopt.js +0 -415
  696. package/node_modules/nopt/package.json +0 -96
  697. package/node_modules/nopt/test/basic.js +0 -273
  698. package/node_modules/npmlog/CHANGELOG.md +0 -45
  699. package/node_modules/npmlog/LICENSE +0 -15
  700. package/node_modules/npmlog/README.md +0 -216
  701. package/node_modules/npmlog/log.js +0 -302
  702. package/node_modules/npmlog/package.json +0 -108
  703. package/node_modules/number-is-nan/index.js +0 -4
  704. package/node_modules/number-is-nan/license +0 -21
  705. package/node_modules/number-is-nan/package.json +0 -103
  706. package/node_modules/number-is-nan/readme.md +0 -28
  707. package/node_modules/oauth-sign/LICENSE +0 -55
  708. package/node_modules/oauth-sign/README.md +0 -4
  709. package/node_modules/oauth-sign/index.js +0 -136
  710. package/node_modules/oauth-sign/package.json +0 -98
  711. package/node_modules/object-assign/index.js +0 -90
  712. package/node_modules/object-assign/license +0 -21
  713. package/node_modules/object-assign/package.json +0 -118
  714. package/node_modules/object-assign/readme.md +0 -61
  715. package/node_modules/once/LICENSE +0 -15
  716. package/node_modules/once/README.md +0 -79
  717. package/node_modules/once/once.js +0 -42
  718. package/node_modules/once/package.json +0 -101
  719. package/node_modules/path-is-absolute/index.js +0 -20
  720. package/node_modules/path-is-absolute/license +0 -21
  721. package/node_modules/path-is-absolute/package.json +0 -111
  722. package/node_modules/path-is-absolute/readme.md +0 -59
  723. package/node_modules/pinkie/index.js +0 -292
  724. package/node_modules/pinkie/license +0 -21
  725. package/node_modules/pinkie/package.json +0 -100
  726. package/node_modules/pinkie/readme.md +0 -83
  727. package/node_modules/pinkie-promise/index.js +0 -3
  728. package/node_modules/pinkie-promise/license +0 -21
  729. package/node_modules/pinkie-promise/package.json +0 -102
  730. package/node_modules/pinkie-promise/readme.md +0 -28
  731. package/node_modules/process-nextick-args/.travis.yml +0 -12
  732. package/node_modules/process-nextick-args/index.js +0 -43
  733. package/node_modules/process-nextick-args/license.md +0 -19
  734. package/node_modules/process-nextick-args/package.json +0 -84
  735. package/node_modules/process-nextick-args/readme.md +0 -18
  736. package/node_modules/process-nextick-args/test.js +0 -24
  737. package/node_modules/punycode/LICENSE-MIT.txt +0 -20
  738. package/node_modules/punycode/README.md +0 -176
  739. package/node_modules/punycode/package.json +0 -127
  740. package/node_modules/punycode/punycode.js +0 -533
  741. package/node_modules/qs/.eslintignore +0 -1
  742. package/node_modules/qs/.eslintrc +0 -19
  743. package/node_modules/qs/CHANGELOG.md +0 -156
  744. package/node_modules/qs/LICENSE +0 -28
  745. package/node_modules/qs/README.md +0 -431
  746. package/node_modules/qs/dist/qs.js +0 -587
  747. package/node_modules/qs/lib/formats.js +0 -18
  748. package/node_modules/qs/lib/index.js +0 -11
  749. package/node_modules/qs/lib/parse.js +0 -166
  750. package/node_modules/qs/lib/stringify.js +0 -200
  751. package/node_modules/qs/lib/utils.js +0 -180
  752. package/node_modules/qs/package.json +0 -121
  753. package/node_modules/qs/test/.eslintrc +0 -10
  754. package/node_modules/qs/test/index.js +0 -7
  755. package/node_modules/qs/test/parse.js +0 -484
  756. package/node_modules/qs/test/stringify.js +0 -538
  757. package/node_modules/qs/test/utils.js +0 -22
  758. package/node_modules/rc/.npmignore +0 -3
  759. package/node_modules/rc/LICENSE.APACHE2 +0 -15
  760. package/node_modules/rc/LICENSE.BSD +0 -26
  761. package/node_modules/rc/LICENSE.MIT +0 -24
  762. package/node_modules/rc/README.md +0 -149
  763. package/node_modules/rc/browser.js +0 -7
  764. package/node_modules/rc/index.js +0 -60
  765. package/node_modules/rc/lib/utils.js +0 -103
  766. package/node_modules/rc/node_modules/minimist/.travis.yml +0 -8
  767. package/node_modules/rc/node_modules/minimist/LICENSE +0 -18
  768. package/node_modules/rc/node_modules/minimist/example/parse.js +0 -2
  769. package/node_modules/rc/node_modules/minimist/index.js +0 -236
  770. package/node_modules/rc/node_modules/minimist/package.json +0 -105
  771. package/node_modules/rc/node_modules/minimist/readme.markdown +0 -91
  772. package/node_modules/rc/node_modules/minimist/test/all_bool.js +0 -32
  773. package/node_modules/rc/node_modules/minimist/test/bool.js +0 -166
  774. package/node_modules/rc/node_modules/minimist/test/dash.js +0 -31
  775. package/node_modules/rc/node_modules/minimist/test/default_bool.js +0 -35
  776. package/node_modules/rc/node_modules/minimist/test/dotted.js +0 -22
  777. package/node_modules/rc/node_modules/minimist/test/kv_short.js +0 -16
  778. package/node_modules/rc/node_modules/minimist/test/long.js +0 -31
  779. package/node_modules/rc/node_modules/minimist/test/num.js +0 -36
  780. package/node_modules/rc/node_modules/minimist/test/parse.js +0 -197
  781. package/node_modules/rc/node_modules/minimist/test/parse_modified.js +0 -9
  782. package/node_modules/rc/node_modules/minimist/test/short.js +0 -67
  783. package/node_modules/rc/node_modules/minimist/test/stop_early.js +0 -15
  784. package/node_modules/rc/node_modules/minimist/test/unknown.js +0 -102
  785. package/node_modules/rc/node_modules/minimist/test/whitespace.js +0 -8
  786. package/node_modules/rc/package.json +0 -100
  787. package/node_modules/rc/test/ini.js +0 -16
  788. package/node_modules/rc/test/nested-env-vars.js +0 -40
  789. package/node_modules/rc/test/test.js +0 -59
  790. package/node_modules/readable-stream/.npmignore +0 -9
  791. package/node_modules/readable-stream/.travis.yml +0 -49
  792. package/node_modules/readable-stream/LICENSE +0 -18
  793. package/node_modules/readable-stream/README.md +0 -40
  794. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  795. package/node_modules/readable-stream/duplex.js +0 -1
  796. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -75
  797. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -26
  798. package/node_modules/readable-stream/lib/_stream_readable.js +0 -941
  799. package/node_modules/readable-stream/lib/_stream_transform.js +0 -182
  800. package/node_modules/readable-stream/lib/_stream_writable.js +0 -554
  801. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -64
  802. package/node_modules/readable-stream/package.json +0 -126
  803. package/node_modules/readable-stream/passthrough.js +0 -1
  804. package/node_modules/readable-stream/readable.js +0 -16
  805. package/node_modules/readable-stream/transform.js +0 -1
  806. package/node_modules/readable-stream/writable.js +0 -1
  807. package/node_modules/request/CHANGELOG.md +0 -662
  808. package/node_modules/request/LICENSE +0 -55
  809. package/node_modules/request/README.md +0 -1098
  810. package/node_modules/request/index.js +0 -156
  811. package/node_modules/request/lib/auth.js +0 -168
  812. package/node_modules/request/lib/cookies.js +0 -39
  813. package/node_modules/request/lib/getProxyFromURI.js +0 -79
  814. package/node_modules/request/lib/har.js +0 -215
  815. package/node_modules/request/lib/helpers.js +0 -65
  816. package/node_modules/request/lib/multipart.js +0 -112
  817. package/node_modules/request/lib/oauth.js +0 -147
  818. package/node_modules/request/lib/querystring.js +0 -51
  819. package/node_modules/request/lib/redirect.js +0 -157
  820. package/node_modules/request/lib/tunnel.js +0 -176
  821. package/node_modules/request/package.json +0 -163
  822. package/node_modules/request/request.js +0 -1475
  823. package/node_modules/rimraf/LICENSE +0 -15
  824. package/node_modules/rimraf/README.md +0 -101
  825. package/node_modules/rimraf/bin.js +0 -40
  826. package/node_modules/rimraf/package.json +0 -101
  827. package/node_modules/rimraf/rimraf.js +0 -343
  828. package/node_modules/semver/LICENSE +0 -15
  829. package/node_modules/semver/README.md +0 -350
  830. package/node_modules/semver/bin/semver +0 -133
  831. package/node_modules/semver/package.json +0 -94
  832. package/node_modules/semver/range.bnf +0 -16
  833. package/node_modules/semver/semver.js +0 -1203
  834. package/node_modules/set-blocking/CHANGELOG.md +0 -26
  835. package/node_modules/set-blocking/LICENSE.txt +0 -14
  836. package/node_modules/set-blocking/README.md +0 -31
  837. package/node_modules/set-blocking/index.js +0 -7
  838. package/node_modules/set-blocking/package.json +0 -106
  839. package/node_modules/signal-exit/CHANGELOG.md +0 -27
  840. package/node_modules/signal-exit/LICENSE.txt +0 -16
  841. package/node_modules/signal-exit/README.md +0 -40
  842. package/node_modules/signal-exit/index.js +0 -157
  843. package/node_modules/signal-exit/package.json +0 -106
  844. package/node_modules/signal-exit/signals.js +0 -53
  845. package/node_modules/sntp/.npmignore +0 -18
  846. package/node_modules/sntp/.travis.yml +0 -5
  847. package/node_modules/sntp/LICENSE +0 -28
  848. package/node_modules/sntp/Makefile +0 -9
  849. package/node_modules/sntp/README.md +0 -68
  850. package/node_modules/sntp/examples/offset.js +0 -16
  851. package/node_modules/sntp/examples/time.js +0 -25
  852. package/node_modules/sntp/index.js +0 -1
  853. package/node_modules/sntp/lib/index.js +0 -412
  854. package/node_modules/sntp/package.json +0 -98
  855. package/node_modules/sntp/test/index.js +0 -435
  856. package/node_modules/sshpk/.npmignore +0 -9
  857. package/node_modules/sshpk/.travis.yml +0 -11
  858. package/node_modules/sshpk/LICENSE +0 -18
  859. package/node_modules/sshpk/README.md +0 -666
  860. package/node_modules/sshpk/bin/sshpk-conv +0 -201
  861. package/node_modules/sshpk/bin/sshpk-sign +0 -191
  862. package/node_modules/sshpk/bin/sshpk-verify +0 -166
  863. package/node_modules/sshpk/lib/algs.js +0 -168
  864. package/node_modules/sshpk/lib/certificate.js +0 -291
  865. package/node_modules/sshpk/lib/dhe.js +0 -311
  866. package/node_modules/sshpk/lib/ed-compat.js +0 -96
  867. package/node_modules/sshpk/lib/errors.js +0 -84
  868. package/node_modules/sshpk/lib/fingerprint.js +0 -161
  869. package/node_modules/sshpk/lib/formats/auto.js +0 -73
  870. package/node_modules/sshpk/lib/formats/openssh-cert.js +0 -289
  871. package/node_modules/sshpk/lib/formats/pem.js +0 -186
  872. package/node_modules/sshpk/lib/formats/pkcs1.js +0 -320
  873. package/node_modules/sshpk/lib/formats/pkcs8.js +0 -505
  874. package/node_modules/sshpk/lib/formats/rfc4253.js +0 -146
  875. package/node_modules/sshpk/lib/formats/ssh-private.js +0 -261
  876. package/node_modules/sshpk/lib/formats/ssh.js +0 -114
  877. package/node_modules/sshpk/lib/formats/x509-pem.js +0 -77
  878. package/node_modules/sshpk/lib/formats/x509.js +0 -484
  879. package/node_modules/sshpk/lib/identity.js +0 -277
  880. package/node_modules/sshpk/lib/index.js +0 -38
  881. package/node_modules/sshpk/lib/key.js +0 -270
  882. package/node_modules/sshpk/lib/private-key.js +0 -231
  883. package/node_modules/sshpk/lib/signature.js +0 -245
  884. package/node_modules/sshpk/lib/ssh-buffer.js +0 -148
  885. package/node_modules/sshpk/lib/utils.js +0 -288
  886. package/node_modules/sshpk/man/man1/sshpk-conv.1 +0 -135
  887. package/node_modules/sshpk/man/man1/sshpk-sign.1 +0 -81
  888. package/node_modules/sshpk/man/man1/sshpk-verify.1 +0 -68
  889. package/node_modules/sshpk/node_modules/assert-plus/AUTHORS +0 -6
  890. package/node_modules/sshpk/node_modules/assert-plus/CHANGES.md +0 -14
  891. package/node_modules/sshpk/node_modules/assert-plus/README.md +0 -162
  892. package/node_modules/sshpk/node_modules/assert-plus/assert.js +0 -211
  893. package/node_modules/sshpk/node_modules/assert-plus/package.json +0 -115
  894. package/node_modules/sshpk/package.json +0 -135
  895. package/node_modules/string-width/index.js +0 -37
  896. package/node_modules/string-width/license +0 -21
  897. package/node_modules/string-width/package.json +0 -124
  898. package/node_modules/string-width/readme.md +0 -42
  899. package/node_modules/string_decoder/.npmignore +0 -2
  900. package/node_modules/string_decoder/LICENSE +0 -20
  901. package/node_modules/string_decoder/README.md +0 -7
  902. package/node_modules/string_decoder/index.js +0 -221
  903. package/node_modules/string_decoder/package.json +0 -88
  904. package/node_modules/stringstream/.npmignore +0 -15
  905. package/node_modules/stringstream/.travis.yml +0 -4
  906. package/node_modules/stringstream/LICENSE.txt +0 -22
  907. package/node_modules/stringstream/README.md +0 -38
  908. package/node_modules/stringstream/example.js +0 -27
  909. package/node_modules/stringstream/package.json +0 -85
  910. package/node_modules/stringstream/stringstream.js +0 -102
  911. package/node_modules/strip-ansi/index.js +0 -6
  912. package/node_modules/strip-ansi/license +0 -21
  913. package/node_modules/strip-ansi/package.json +0 -125
  914. package/node_modules/strip-ansi/readme.md +0 -33
  915. package/node_modules/strip-json-comments/index.js +0 -70
  916. package/node_modules/strip-json-comments/license +0 -21
  917. package/node_modules/strip-json-comments/package.json +0 -110
  918. package/node_modules/strip-json-comments/readme.md +0 -64
  919. package/node_modules/supports-color/index.js +0 -50
  920. package/node_modules/supports-color/license +0 -21
  921. package/node_modules/supports-color/package.json +0 -113
  922. package/node_modules/supports-color/readme.md +0 -36
  923. package/node_modules/tar/.npmignore +0 -5
  924. package/node_modules/tar/.travis.yml +0 -4
  925. package/node_modules/tar/LICENSE +0 -12
  926. package/node_modules/tar/README.md +0 -50
  927. package/node_modules/tar/examples/extracter.js +0 -19
  928. package/node_modules/tar/examples/packer.js +0 -24
  929. package/node_modules/tar/examples/reader.js +0 -36
  930. package/node_modules/tar/lib/buffer-entry.js +0 -30
  931. package/node_modules/tar/lib/entry-writer.js +0 -169
  932. package/node_modules/tar/lib/entry.js +0 -220
  933. package/node_modules/tar/lib/extended-header-writer.js +0 -191
  934. package/node_modules/tar/lib/extended-header.js +0 -140
  935. package/node_modules/tar/lib/extract.js +0 -94
  936. package/node_modules/tar/lib/global-header-writer.js +0 -14
  937. package/node_modules/tar/lib/header.js +0 -385
  938. package/node_modules/tar/lib/pack.js +0 -236
  939. package/node_modules/tar/lib/parse.js +0 -275
  940. package/node_modules/tar/package.json +0 -103
  941. package/node_modules/tar/tar.js +0 -173
  942. package/node_modules/tar/test/00-setup-fixtures.js +0 -53
  943. package/node_modules/tar/test/cb-never-called-1.0.1.tgz +0 -0
  944. package/node_modules/tar/test/dir-normalization.js +0 -177
  945. package/node_modules/tar/test/dir-normalization.tar +0 -0
  946. package/node_modules/tar/test/error-on-broken.js +0 -33
  947. package/node_modules/tar/test/extract-move.js +0 -132
  948. package/node_modules/tar/test/extract.js +0 -367
  949. package/node_modules/tar/test/fixtures.tgz +0 -0
  950. package/node_modules/tar/test/header.js +0 -183
  951. package/node_modules/tar/test/pack-no-proprietary.js +0 -886
  952. package/node_modules/tar/test/pack.js +0 -952
  953. package/node_modules/tar/test/parse-discard.js +0 -29
  954. package/node_modules/tar/test/parse.js +0 -359
  955. package/node_modules/tar/test/zz-cleanup.js +0 -20
  956. package/node_modules/tar-pack/.npmignore +0 -14
  957. package/node_modules/tar-pack/.travis.yml +0 -7
  958. package/node_modules/tar-pack/LICENSE +0 -23
  959. package/node_modules/tar-pack/README.md +0 -84
  960. package/node_modules/tar-pack/index.js +0 -245
  961. package/node_modules/tar-pack/node_modules/once/LICENSE +0 -15
  962. package/node_modules/tar-pack/node_modules/once/README.md +0 -51
  963. package/node_modules/tar-pack/node_modules/once/once.js +0 -21
  964. package/node_modules/tar-pack/node_modules/once/package.json +0 -96
  965. package/node_modules/tar-pack/node_modules/readable-stream/.npmignore +0 -8
  966. package/node_modules/tar-pack/node_modules/readable-stream/.travis.yml +0 -49
  967. package/node_modules/tar-pack/node_modules/readable-stream/LICENSE +0 -18
  968. package/node_modules/tar-pack/node_modules/readable-stream/README.md +0 -36
  969. package/node_modules/tar-pack/node_modules/readable-stream/doc/stream.md +0 -2015
  970. package/node_modules/tar-pack/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  971. package/node_modules/tar-pack/node_modules/readable-stream/duplex.js +0 -1
  972. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js +0 -75
  973. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js +0 -26
  974. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js +0 -937
  975. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js +0 -180
  976. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js +0 -526
  977. package/node_modules/tar-pack/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -64
  978. package/node_modules/tar-pack/node_modules/readable-stream/package.json +0 -125
  979. package/node_modules/tar-pack/node_modules/readable-stream/passthrough.js +0 -1
  980. package/node_modules/tar-pack/node_modules/readable-stream/readable.js +0 -16
  981. package/node_modules/tar-pack/node_modules/readable-stream/transform.js +0 -1
  982. package/node_modules/tar-pack/node_modules/readable-stream/writable.js +0 -1
  983. package/node_modules/tar-pack/package.json +0 -109
  984. package/node_modules/tar-pack/test/fixtures/packed-file.txt +0 -1
  985. package/node_modules/tar-pack/test/fixtures/packed.tar +0 -0
  986. package/node_modules/tar-pack/test/fixtures/packed.tar.gz +0 -0
  987. package/node_modules/tar-pack/test/fixtures/to-pack/bar.txt +0 -1
  988. package/node_modules/tar-pack/test/fixtures/to-pack/foo.txt +0 -1
  989. package/node_modules/tar-pack/test/index.js +0 -109
  990. package/node_modules/tough-cookie/LICENSE +0 -27
  991. package/node_modules/tough-cookie/README.md +0 -506
  992. package/node_modules/tough-cookie/lib/cookie.js +0 -1336
  993. package/node_modules/tough-cookie/lib/memstore.js +0 -170
  994. package/node_modules/tough-cookie/lib/pathMatch.js +0 -61
  995. package/node_modules/tough-cookie/lib/permuteDomain.js +0 -56
  996. package/node_modules/tough-cookie/lib/pubsuffix.js +0 -98
  997. package/node_modules/tough-cookie/lib/store.js +0 -71
  998. package/node_modules/tough-cookie/package.json +0 -135
  999. package/node_modules/tunnel-agent/LICENSE +0 -55
  1000. package/node_modules/tunnel-agent/README.md +0 -4
  1001. package/node_modules/tunnel-agent/index.js +0 -243
  1002. package/node_modules/tunnel-agent/package.json +0 -100
  1003. package/node_modules/tweetnacl/.npmignore +0 -4
  1004. package/node_modules/tweetnacl/AUTHORS.md +0 -28
  1005. package/node_modules/tweetnacl/CHANGELOG.md +0 -221
  1006. package/node_modules/tweetnacl/LICENSE +0 -24
  1007. package/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md +0 -20
  1008. package/node_modules/tweetnacl/README.md +0 -459
  1009. package/node_modules/tweetnacl/nacl-fast.js +0 -2388
  1010. package/node_modules/tweetnacl/nacl-fast.min.js +0 -2
  1011. package/node_modules/tweetnacl/nacl.d.ts +0 -98
  1012. package/node_modules/tweetnacl/nacl.js +0 -1175
  1013. package/node_modules/tweetnacl/nacl.min.js +0 -1
  1014. package/node_modules/tweetnacl/package.json +0 -121
  1015. package/node_modules/uid-number/LICENSE +0 -15
  1016. package/node_modules/uid-number/README.md +0 -17
  1017. package/node_modules/uid-number/get-uid-gid.js +0 -24
  1018. package/node_modules/uid-number/package.json +0 -82
  1019. package/node_modules/uid-number/uid-number.js +0 -59
  1020. package/node_modules/util-deprecate/History.md +0 -16
  1021. package/node_modules/util-deprecate/LICENSE +0 -24
  1022. package/node_modules/util-deprecate/README.md +0 -53
  1023. package/node_modules/util-deprecate/browser.js +0 -67
  1024. package/node_modules/util-deprecate/node.js +0 -6
  1025. package/node_modules/util-deprecate/package.json +0 -90
  1026. package/node_modules/uuid/.npmignore +0 -8
  1027. package/node_modules/uuid/.travis.yml +0 -5
  1028. package/node_modules/uuid/AUTHORS +0 -5
  1029. package/node_modules/uuid/HISTORY.md +0 -28
  1030. package/node_modules/uuid/LICENSE.md +0 -21
  1031. package/node_modules/uuid/README.md +0 -132
  1032. package/node_modules/uuid/bin/uuid +0 -26
  1033. package/node_modules/uuid/index.js +0 -8
  1034. package/node_modules/uuid/lib/bytesToUuid.js +0 -23
  1035. package/node_modules/uuid/lib/rng-browser.js +0 -33
  1036. package/node_modules/uuid/lib/rng.js +0 -10
  1037. package/node_modules/uuid/package.json +0 -122
  1038. package/node_modules/uuid/test/mocha.opts +0 -3
  1039. package/node_modules/uuid/test/test.js +0 -96
  1040. package/node_modules/uuid/v1.js +0 -103
  1041. package/node_modules/uuid/v4.js +0 -29
  1042. package/node_modules/verror/.gitmodules +0 -0
  1043. package/node_modules/verror/.npmignore +0 -1
  1044. package/node_modules/verror/LICENSE +0 -19
  1045. package/node_modules/verror/Makefile +0 -35
  1046. package/node_modules/verror/Makefile.targ +0 -285
  1047. package/node_modules/verror/README.md +0 -120
  1048. package/node_modules/verror/examples/levels-verror.js +0 -36
  1049. package/node_modules/verror/examples/levels-werror.js +0 -34
  1050. package/node_modules/verror/examples/varargs.js +0 -6
  1051. package/node_modules/verror/examples/verror.js +0 -13
  1052. package/node_modules/verror/examples/werror.js +0 -14
  1053. package/node_modules/verror/jsl.node.conf +0 -139
  1054. package/node_modules/verror/lib/verror.js +0 -157
  1055. package/node_modules/verror/package.json +0 -78
  1056. package/node_modules/verror/tests/tst.inherit.js +0 -100
  1057. package/node_modules/verror/tests/tst.verror.js +0 -156
  1058. package/node_modules/verror/tests/tst.werror.js +0 -179
  1059. package/node_modules/wide-align/.npmignore +0 -5
  1060. package/node_modules/wide-align/LICENSE +0 -14
  1061. package/node_modules/wide-align/README.md +0 -47
  1062. package/node_modules/wide-align/align.js +0 -65
  1063. package/node_modules/wide-align/package.json +0 -93
  1064. package/node_modules/wide-align/test/align.js +0 -37
  1065. package/node_modules/wrappy/LICENSE +0 -15
  1066. package/node_modules/wrappy/README.md +0 -36
  1067. package/node_modules/wrappy/package.json +0 -98
  1068. package/node_modules/wrappy/wrappy.js +0 -33
  1069. package/node_modules/xtend/.jshintrc +0 -30
  1070. package/node_modules/xtend/.npmignore +0 -1
  1071. package/node_modules/xtend/LICENCE +0 -19
  1072. package/node_modules/xtend/Makefile +0 -4
  1073. package/node_modules/xtend/README.md +0 -32
  1074. package/node_modules/xtend/immutable.js +0 -19
  1075. package/node_modules/xtend/mutable.js +0 -17
  1076. package/node_modules/xtend/package.json +0 -117
  1077. package/node_modules/xtend/test.js +0 -83
  1078. package/src/locking.cc +0 -27
@@ -1,2513 +0,0 @@
1
- // Load modules
2
-
3
- var Fs = require('fs');
4
- var Path = require('path');
5
- var Code = require('code');
6
- var Hoek = require('../lib');
7
- var Lab = require('lab');
8
-
9
-
10
- // Declare internals
11
-
12
- var internals = {};
13
-
14
-
15
- // Test shortcuts
16
-
17
- var lab = exports.lab = Lab.script();
18
- var describe = lab.experiment;
19
- var it = lab.test;
20
- var expect = Code.expect;
21
-
22
-
23
- var nestedObj = {
24
- v: [7, 8, 9],
25
- w: /^something$/igm,
26
- x: {
27
- a: [1, 2, 3],
28
- b: 123456,
29
- c: new Date(),
30
- d: /hi/igm,
31
- e: /hello/
32
- },
33
- y: 'y',
34
- z: new Date(1378775452757)
35
- };
36
-
37
- var dupsArray = [nestedObj, { z: 'z' }, nestedObj];
38
- var reducedDupsArray = [nestedObj, { z: 'z' }];
39
-
40
- describe('clone()', function () {
41
-
42
- it('clones a nested object', function (done) {
43
-
44
- var a = nestedObj;
45
- var b = Hoek.clone(a);
46
-
47
- expect(a).to.deep.equal(b);
48
- expect(a.z.getTime()).to.equal(b.z.getTime());
49
- done();
50
- });
51
-
52
- it('clones a null object', function (done) {
53
-
54
- var b = Hoek.clone(null);
55
-
56
- expect(b).to.equal(null);
57
- done();
58
- });
59
-
60
- it('should not convert undefined properties to null', function (done) {
61
-
62
- var obj = { something: undefined };
63
- var b = Hoek.clone(obj);
64
-
65
- expect(typeof b.something).to.equal('undefined');
66
- done();
67
- });
68
-
69
- it('should not throw on circular reference', function (done) {
70
-
71
- var a = {};
72
- a.x = a;
73
-
74
- var test = function () {
75
-
76
- var b = Hoek.clone(a);
77
- };
78
-
79
- expect(test).to.not.throw();
80
- done();
81
- });
82
-
83
- it('clones circular reference', function (done) {
84
-
85
- var x = {
86
- 'z': new Date()
87
- };
88
- x.y = x;
89
-
90
- var b = Hoek.clone(x);
91
- expect(Object.keys(b.y)).to.deep.equal(Object.keys(x));
92
- expect(b.z).to.not.equal(x.z);
93
- expect(b.y).to.not.equal(x.y);
94
- expect(b.y.z).to.not.equal(x.y.z);
95
- expect(b.y).to.equal(b);
96
- expect(b.y.y.y.y).to.equal(b);
97
- done();
98
- });
99
-
100
- it('clones an object with a null prototype', function (done) {
101
-
102
- var obj = Object.create(null);
103
- var b = Hoek.clone(obj);
104
-
105
- expect(b).to.deep.equal(obj);
106
- done();
107
- });
108
-
109
- it('clones deeply nested object', function (done) {
110
-
111
- var a = {
112
- x: {
113
- y: {
114
- a: [1, 2, 3],
115
- b: 123456,
116
- c: new Date(),
117
- d: /hi/igm,
118
- e: /hello/
119
- }
120
- }
121
- };
122
-
123
- var b = Hoek.clone(a);
124
-
125
- expect(a).to.deep.equal(b);
126
- expect(a.x.y.c.getTime()).to.equal(b.x.y.c.getTime());
127
- done();
128
- });
129
-
130
- it('clones arrays', function (done) {
131
-
132
- var a = [1, 2, 3];
133
-
134
- var b = Hoek.clone(a);
135
-
136
- expect(a).to.deep.equal(b);
137
- done();
138
- });
139
-
140
- it('performs actual copy for shallow keys (no pass by reference)', function (done) {
141
-
142
- var x = Hoek.clone(nestedObj);
143
- var y = Hoek.clone(nestedObj);
144
-
145
- // Date
146
- expect(x.z).to.not.equal(nestedObj.z);
147
- expect(x.z).to.not.equal(y.z);
148
-
149
- // Regex
150
- expect(x.w).to.not.equal(nestedObj.w);
151
- expect(x.w).to.not.equal(y.w);
152
-
153
- // Array
154
- expect(x.v).to.not.equal(nestedObj.v);
155
- expect(x.v).to.not.equal(y.v);
156
-
157
- // Immutable(s)
158
- x.y = 5;
159
- expect(x.y).to.not.equal(nestedObj.y);
160
- expect(x.y).to.not.equal(y.y);
161
-
162
- done();
163
- });
164
-
165
- it('performs actual copy for deep keys (no pass by reference)', function (done) {
166
-
167
- var x = Hoek.clone(nestedObj);
168
- var y = Hoek.clone(nestedObj);
169
-
170
- expect(x.x.c).to.not.equal(nestedObj.x.c);
171
- expect(x.x.c).to.not.equal(y.x.c);
172
-
173
- expect(x.x.c.getTime()).to.equal(nestedObj.x.c.getTime());
174
- expect(x.x.c.getTime()).to.equal(y.x.c.getTime());
175
- done();
176
- });
177
-
178
- it('copies functions with properties', function (done) {
179
-
180
- var a = {
181
- x: function () {
182
-
183
- return 1;
184
- },
185
- y: {}
186
- };
187
- a.x.z = 'string in function';
188
- a.x.v = function () {
189
-
190
- return 2;
191
- };
192
- a.y.u = a.x;
193
-
194
- var b = Hoek.clone(a);
195
- expect(b.x()).to.equal(1);
196
- expect(b.x.v()).to.equal(2);
197
- expect(b.y.u).to.equal(b.x);
198
- expect(b.x.z).to.equal('string in function');
199
- done();
200
- });
201
-
202
- it('should copy a buffer', function (done) {
203
-
204
- var tls = {
205
- key: new Buffer([1, 2, 3, 4, 5]),
206
- cert: new Buffer([1, 2, 3, 4, 5, 6, 10])
207
- };
208
-
209
- var copiedTls = Hoek.clone(tls);
210
- expect(Buffer.isBuffer(copiedTls.key)).to.equal(true);
211
- expect(JSON.stringify(copiedTls.key)).to.equal(JSON.stringify(tls.key));
212
- expect(Buffer.isBuffer(copiedTls.cert)).to.equal(true);
213
- expect(JSON.stringify(copiedTls.cert)).to.equal(JSON.stringify(tls.cert));
214
- done();
215
- });
216
-
217
- it('clones an object with a prototype', function (done) {
218
-
219
- var Obj = function () {
220
-
221
- this.a = 5;
222
- };
223
-
224
- Obj.prototype.b = function () {
225
-
226
- return 'c';
227
- };
228
-
229
- var a = new Obj();
230
- var b = Hoek.clone(a);
231
-
232
- expect(b.a).to.equal(5);
233
- expect(b.b()).to.equal('c');
234
- expect(a).to.deep.equal(b);
235
- done();
236
- });
237
-
238
- it('reuses cloned Date object', function (done) {
239
-
240
- var obj = {
241
- a: new Date()
242
- };
243
-
244
- obj.b = obj.a;
245
-
246
- var copy = Hoek.clone(obj);
247
- expect(copy.a).to.equal(copy.b);
248
- done();
249
- });
250
-
251
- it('shallow copies an object with a prototype and isImmutable flag', function (done) {
252
-
253
- var Obj = function () {
254
-
255
- this.value = 5;
256
- };
257
-
258
- Obj.prototype.b = function () {
259
-
260
- return 'c';
261
- };
262
-
263
- Obj.prototype.isImmutable = true;
264
-
265
- var obj = {
266
- a: new Obj()
267
- };
268
-
269
- var copy = Hoek.clone(obj);
270
-
271
- expect(obj.a.value).to.equal(5);
272
- expect(copy.a.value).to.equal(5);
273
- expect(copy.a.b()).to.equal('c');
274
- expect(obj.a).to.equal(copy.a);
275
- done();
276
- });
277
-
278
- it('clones an object with property getter without executing it', function (done) {
279
-
280
- var obj = {};
281
- var value = 1;
282
- var execCount = 0;
283
-
284
- Object.defineProperty(obj, 'test', {
285
- enumerable: true,
286
- configurable: true,
287
- get: function () {
288
-
289
- ++execCount;
290
- return value;
291
- }
292
- });
293
-
294
- var copy = Hoek.clone(obj);
295
- expect(execCount).to.equal(0);
296
- expect(copy.test).to.equal(1);
297
- expect(execCount).to.equal(1);
298
- done();
299
- });
300
-
301
- it('clones an object with property getter and setter', function (done) {
302
-
303
- var obj = {
304
- _test: 0
305
- };
306
-
307
- Object.defineProperty(obj, 'test', {
308
- enumerable: true,
309
- configurable: true,
310
- get: function () {
311
-
312
- return this._test;
313
- },
314
- set: function (value) {
315
-
316
- this._test = value - 1;
317
- }
318
- });
319
-
320
- var copy = Hoek.clone(obj);
321
- expect(copy.test).to.equal(0);
322
- copy.test = 5;
323
- expect(copy.test).to.equal(4);
324
- done();
325
- });
326
-
327
- it('clones an object with only property setter', function (done) {
328
-
329
- var obj = {
330
- _test: 0
331
- };
332
-
333
- Object.defineProperty(obj, 'test', {
334
- enumerable: true,
335
- configurable: true,
336
- set: function (value) {
337
-
338
- this._test = value - 1;
339
- }
340
- });
341
-
342
- var copy = Hoek.clone(obj);
343
- expect(copy._test).to.equal(0);
344
- copy.test = 5;
345
- expect(copy._test).to.equal(4);
346
- done();
347
- });
348
-
349
- it('clones an object with non-enumerable properties', function (done) {
350
-
351
- var obj = {
352
- _test: 0
353
- };
354
-
355
- Object.defineProperty(obj, 'test', {
356
- enumerable: false,
357
- configurable: true,
358
- set: function (value) {
359
-
360
- this._test = value - 1;
361
- }
362
- });
363
-
364
- var copy = Hoek.clone(obj);
365
- expect(copy._test).to.equal(0);
366
- copy.test = 5;
367
- expect(copy._test).to.equal(4);
368
- done();
369
- });
370
-
371
- it('clones an object where getOwnPropertyDescriptor returns undefined', function (done) {
372
-
373
- var oldGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
374
- var obj = { a: 'b' };
375
- Object.getOwnPropertyDescriptor = function () {
376
-
377
- return undefined;
378
- };
379
-
380
- var copy = Hoek.clone(obj);
381
- Object.getOwnPropertyDescriptor = oldGetOwnPropertyDescriptor;
382
- expect(copy).to.deep.equal(obj);
383
- done();
384
- });
385
- });
386
-
387
- describe('merge()', function () {
388
-
389
- it('deep copies source items', function (done) {
390
-
391
- var target = {
392
- b: 3,
393
- d: []
394
- };
395
-
396
- var source = {
397
- c: {
398
- d: 1
399
- },
400
- d: [{ e: 1 }]
401
- };
402
-
403
- Hoek.merge(target, source);
404
- expect(target.c).to.not.equal(source.c);
405
- expect(target.c).to.deep.equal(source.c);
406
- expect(target.d).to.not.equal(source.d);
407
- expect(target.d[0]).to.not.equal(source.d[0]);
408
- expect(target.d).to.deep.equal(source.d);
409
- done();
410
- });
411
-
412
- it('merges array over an object', function (done) {
413
-
414
- var a = {
415
- x: ['n', 'm']
416
- };
417
-
418
- var b = {
419
- x: {
420
- n: '1',
421
- m: '2'
422
- }
423
- };
424
-
425
- Hoek.merge(b, a);
426
- expect(a.x[0]).to.equal('n');
427
- expect(a.x.n).to.not.exist();
428
- done();
429
- });
430
-
431
- it('merges object over an array', function (done) {
432
-
433
- var a = {
434
- x: ['n', 'm']
435
- };
436
-
437
- var b = {
438
- x: {
439
- n: '1',
440
- m: '2'
441
- }
442
- };
443
-
444
- Hoek.merge(a, b);
445
- expect(a.x.n).to.equal('1');
446
- expect(a.x[0]).to.not.exist();
447
- done();
448
- });
449
-
450
- it('does not throw if source is null', function (done) {
451
-
452
- var a = {};
453
- var b = null;
454
- var c = null;
455
-
456
- expect(function () {
457
-
458
- c = Hoek.merge(a, b);
459
- }).to.not.throw();
460
-
461
- expect(c).to.equal(a);
462
- done();
463
- });
464
-
465
- it('does not throw if source is undefined', function (done) {
466
-
467
- var a = {};
468
- var b;
469
- var c = null;
470
-
471
- expect(function () {
472
-
473
- c = Hoek.merge(a, b);
474
- }).to.not.throw();
475
-
476
- expect(c).to.equal(a);
477
- done();
478
- });
479
-
480
- it('throws if source is not an object', function (done) {
481
-
482
- expect(function () {
483
-
484
- var a = {};
485
- var b = 0;
486
-
487
- Hoek.merge(a, b);
488
- }).to.throw('Invalid source value: must be null, undefined, or an object');
489
- done();
490
- });
491
-
492
- it('throws if target is not an object', function (done) {
493
-
494
- expect(function () {
495
-
496
- var a = 0;
497
- var b = {};
498
-
499
- Hoek.merge(a, b);
500
- }).to.throw('Invalid target value: must be an object');
501
- done();
502
- });
503
-
504
- it('throws if target is not an array and source is', function (done) {
505
-
506
- expect(function () {
507
-
508
- var a = {};
509
- var b = [1, 2];
510
-
511
- Hoek.merge(a, b);
512
- }).to.throw('Cannot merge array onto an object');
513
- done();
514
- });
515
-
516
- it('returns the same object when merging arrays', function (done) {
517
-
518
- var a = [];
519
- var b = [1, 2];
520
-
521
- expect(Hoek.merge(a, b)).to.equal(a);
522
- done();
523
- });
524
-
525
- it('combines an empty object with a non-empty object', function (done) {
526
-
527
- var a = {};
528
- var b = nestedObj;
529
-
530
- var c = Hoek.merge(a, b);
531
- expect(a).to.deep.equal(b);
532
- expect(c).to.deep.equal(b);
533
- done();
534
- });
535
-
536
- it('overrides values in target', function (done) {
537
-
538
- var a = { x: 1, y: 2, z: 3, v: 5, t: 'test', m: 'abc' };
539
- var b = { x: null, z: 4, v: 0, t: { u: 6 }, m: '123' };
540
-
541
- var c = Hoek.merge(a, b);
542
- expect(c.x).to.equal(null);
543
- expect(c.y).to.equal(2);
544
- expect(c.z).to.equal(4);
545
- expect(c.v).to.equal(0);
546
- expect(c.m).to.equal('123');
547
- expect(c.t).to.deep.equal({ u: 6 });
548
- done();
549
- });
550
-
551
- it('overrides values in target (flip)', function (done) {
552
-
553
- var a = { x: 1, y: 2, z: 3, v: 5, t: 'test', m: 'abc' };
554
- var b = { x: null, z: 4, v: 0, t: { u: 6 }, m: '123' };
555
-
556
- var d = Hoek.merge(b, a);
557
- expect(d.x).to.equal(1);
558
- expect(d.y).to.equal(2);
559
- expect(d.z).to.equal(3);
560
- expect(d.v).to.equal(5);
561
- expect(d.m).to.equal('abc');
562
- expect(d.t).to.deep.equal('test');
563
- done();
564
- });
565
-
566
- it('retains Date properties', function (done) {
567
-
568
- var a = { x: new Date(1378776452757) };
569
-
570
- var b = Hoek.merge({}, a);
571
- expect(a.x.getTime()).to.equal(b.x.getTime());
572
- done();
573
- });
574
-
575
- it('retains Date properties when merging keys', function (done) {
576
-
577
- var a = { x: new Date(1378776452757) };
578
-
579
- var b = Hoek.merge({ x: {} }, a);
580
- expect(a.x.getTime()).to.equal(b.x.getTime());
581
- done();
582
- });
583
-
584
- it('overrides Buffer', function (done) {
585
-
586
- var a = { x: new Buffer('abc') };
587
-
588
- var b = Hoek.merge({ x: {} }, a);
589
- expect(a.x.toString()).to.equal('abc');
590
- done();
591
- });
592
- });
593
-
594
- describe('applyToDefaults()', function () {
595
-
596
- var defaults = {
597
- a: 1,
598
- b: 2,
599
- c: {
600
- d: 3,
601
- e: [5, 6]
602
- },
603
- f: 6,
604
- g: 'test'
605
- };
606
-
607
- it('throws when target is null', function (done) {
608
-
609
- expect(function () {
610
-
611
- Hoek.applyToDefaults(null, {});
612
- }).to.throw('Invalid defaults value: must be an object');
613
- done();
614
- });
615
-
616
- it('returns null if options is false', function (done) {
617
-
618
- var result = Hoek.applyToDefaults(defaults, false);
619
- expect(result).to.equal(null);
620
- done();
621
- });
622
-
623
- it('returns null if options is null', function (done) {
624
-
625
- var result = Hoek.applyToDefaults(defaults, null);
626
- expect(result).to.equal(null);
627
- done();
628
- });
629
-
630
- it('returns null if options is undefined', function (done) {
631
-
632
- var result = Hoek.applyToDefaults(defaults, undefined);
633
- expect(result).to.equal(null);
634
- done();
635
- });
636
-
637
- it('returns a copy of defaults if options is true', function (done) {
638
-
639
- var result = Hoek.applyToDefaults(defaults, true);
640
- expect(result).to.deep.equal(defaults);
641
- done();
642
- });
643
-
644
- it('applies object to defaults', function (done) {
645
-
646
- var obj = {
647
- a: null,
648
- c: {
649
- e: [4]
650
- },
651
- f: 0,
652
- g: {
653
- h: 5
654
- }
655
- };
656
-
657
- var result = Hoek.applyToDefaults(defaults, obj);
658
- expect(result.c.e).to.deep.equal([4]);
659
- expect(result.a).to.equal(1);
660
- expect(result.b).to.equal(2);
661
- expect(result.f).to.equal(0);
662
- expect(result.g).to.deep.equal({ h: 5 });
663
- done();
664
- });
665
-
666
- it('applies object to defaults with null', function (done) {
667
-
668
- var obj = {
669
- a: null,
670
- c: {
671
- e: [4]
672
- },
673
- f: 0,
674
- g: {
675
- h: 5
676
- }
677
- };
678
-
679
- var result = Hoek.applyToDefaults(defaults, obj, true);
680
- expect(result.c.e).to.deep.equal([4]);
681
- expect(result.a).to.equal(null);
682
- expect(result.b).to.equal(2);
683
- expect(result.f).to.equal(0);
684
- expect(result.g).to.deep.equal({ h: 5 });
685
- done();
686
- });
687
- });
688
-
689
- describe('cloneWithShallow()', function () {
690
-
691
- it('deep clones except for listed keys', function (done) {
692
-
693
- var source = {
694
- a: {
695
- b: 5
696
- },
697
- c: {
698
- d: 6
699
- }
700
- };
701
-
702
- var copy = Hoek.cloneWithShallow(source, ['c']);
703
- expect(copy).to.deep.equal(source);
704
- expect(copy).to.not.equal(source);
705
- expect(copy.a).to.not.equal(source.a);
706
- expect(copy.b).to.equal(source.b);
707
- done();
708
- });
709
-
710
- it('returns immutable value', function (done) {
711
-
712
- expect(Hoek.cloneWithShallow(5)).to.equal(5);
713
- done();
714
- });
715
-
716
- it('returns null value', function (done) {
717
-
718
- expect(Hoek.cloneWithShallow(null)).to.equal(null);
719
- done();
720
- });
721
-
722
- it('returns undefined value', function (done) {
723
-
724
- expect(Hoek.cloneWithShallow(undefined)).to.equal(undefined);
725
- done();
726
- });
727
-
728
- it('deep clones except for listed keys (including missing keys)', function (done) {
729
-
730
- var source = {
731
- a: {
732
- b: 5
733
- },
734
- c: {
735
- d: 6
736
- }
737
- };
738
-
739
- var copy = Hoek.cloneWithShallow(source, ['c', 'v']);
740
- expect(copy).to.deep.equal(source);
741
- expect(copy).to.not.equal(source);
742
- expect(copy.a).to.not.equal(source.a);
743
- expect(copy.b).to.equal(source.b);
744
- done();
745
- });
746
- });
747
-
748
- describe('applyToDefaultsWithShallow()', function () {
749
-
750
- it('shallow copies the listed keys from options without merging', function (done) {
751
-
752
- var defaults = {
753
- a: {
754
- b: 5,
755
- e: 3
756
- },
757
- c: {
758
- d: 7,
759
- g: 1
760
- }
761
- };
762
-
763
- var options = {
764
- a: {
765
- b: 4
766
- },
767
- c: {
768
- d: 6,
769
- f: 7
770
- }
771
- };
772
-
773
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['a']);
774
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { d: 6, g: 1, f: 7 } });
775
- expect(merged.a).to.equal(options.a);
776
- expect(merged.a).to.not.equal(defaults.a);
777
- expect(merged.c).to.not.equal(options.c);
778
- expect(merged.c).to.not.equal(defaults.c);
779
- done();
780
- });
781
-
782
- it('shallow copies the nested keys (override)', function (done) {
783
-
784
- var defaults = {
785
- a: {
786
- b: 5
787
- },
788
- c: {
789
- d: 7,
790
- g: 1
791
- }
792
- };
793
-
794
- var options = {
795
- a: {
796
- b: 4
797
- },
798
- c: {
799
- d: 6,
800
- g: {
801
- h: 8
802
- }
803
- }
804
- };
805
-
806
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['c.g']);
807
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { d: 6, g: { h: 8 } } });
808
- expect(merged.c.g).to.equal(options.c.g);
809
- done();
810
- });
811
-
812
- it('shallow copies the nested keys (missing)', function (done) {
813
-
814
- var defaults = {
815
- a: {
816
- b: 5
817
- }
818
- };
819
-
820
- var options = {
821
- a: {
822
- b: 4
823
- },
824
- c: {
825
- g: {
826
- h: 8
827
- }
828
- }
829
- };
830
-
831
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['c.g']);
832
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { g: { h: 8 } } });
833
- expect(merged.c.g).to.equal(options.c.g);
834
- done();
835
- });
836
-
837
- it('shallow copies the nested keys (override)', function (done) {
838
-
839
- var defaults = {
840
- a: {
841
- b: 5
842
- },
843
- c: {
844
- g: {
845
- d: 7
846
- }
847
- }
848
- };
849
-
850
- var options = {
851
- a: {
852
- b: 4
853
- },
854
- c: {
855
- g: {
856
- h: 8
857
- }
858
- }
859
- };
860
-
861
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['c.g']);
862
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { g: { h: 8 } } });
863
- expect(merged.c.g).to.equal(options.c.g);
864
- done();
865
- });
866
-
867
- it('shallow copies the nested keys (deeper)', function (done) {
868
-
869
- var defaults = {
870
- a: {
871
- b: 5
872
- }
873
- };
874
-
875
- var options = {
876
- a: {
877
- b: 4
878
- },
879
- c: {
880
- g: {
881
- r: {
882
- h: 8
883
- }
884
- }
885
- }
886
- };
887
-
888
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['c.g.r']);
889
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { g: { r: { h: 8 } } } });
890
- expect(merged.c.g.r).to.equal(options.c.g.r);
891
- done();
892
- });
893
-
894
- it('shallow copies the nested keys (not present)', function (done) {
895
-
896
- var defaults = {
897
- a: {
898
- b: 5
899
- }
900
- };
901
-
902
- var options = {
903
- a: {
904
- b: 4
905
- },
906
- c: {
907
- g: {
908
- r: {
909
- h: 8
910
- }
911
- }
912
- }
913
- };
914
-
915
- var merged = Hoek.applyToDefaultsWithShallow(defaults, options, ['x.y']);
916
- expect(merged).to.deep.equal({ a: { b: 4 }, c: { g: { r: { h: 8 } } } });
917
- done();
918
- });
919
-
920
- it('shallow copies the listed keys in the defaults', function (done) {
921
-
922
- var defaults = {
923
- a: {
924
- b: 1
925
- }
926
- };
927
-
928
- var merged = Hoek.applyToDefaultsWithShallow(defaults, {}, ['a']);
929
- expect(merged.a).to.equal(defaults.a);
930
- done();
931
- });
932
-
933
- it('shallow copies the listed keys in the defaults (true)', function (done) {
934
-
935
- var defaults = {
936
- a: {
937
- b: 1
938
- }
939
- };
940
-
941
- var merged = Hoek.applyToDefaultsWithShallow(defaults, true, ['a']);
942
- expect(merged.a).to.equal(defaults.a);
943
- done();
944
- });
945
-
946
- it('returns null on false', function (done) {
947
-
948
- var defaults = {
949
- a: {
950
- b: 1
951
- }
952
- };
953
-
954
- var merged = Hoek.applyToDefaultsWithShallow(defaults, false, ['a']);
955
- expect(merged).to.equal(null);
956
- done();
957
- });
958
-
959
- it('throws on missing defaults', function (done) {
960
-
961
- expect(function () {
962
-
963
- Hoek.applyToDefaultsWithShallow(null, {}, ['a']);
964
- }).to.throw('Invalid defaults value: must be an object');
965
- done();
966
- });
967
-
968
- it('throws on invalid defaults', function (done) {
969
-
970
- expect(function () {
971
-
972
- Hoek.applyToDefaultsWithShallow('abc', {}, ['a']);
973
- }).to.throw('Invalid defaults value: must be an object');
974
- done();
975
- });
976
-
977
- it('throws on invalid options', function (done) {
978
-
979
- expect(function () {
980
-
981
- Hoek.applyToDefaultsWithShallow({}, 'abc', ['a']);
982
- }).to.throw('Invalid options value: must be true, falsy or an object');
983
- done();
984
- });
985
-
986
- it('throws on missing keys', function (done) {
987
-
988
- expect(function () {
989
-
990
- Hoek.applyToDefaultsWithShallow({}, true);
991
- }).to.throw('Invalid keys');
992
- done();
993
- });
994
-
995
- it('throws on invalid keys', function (done) {
996
-
997
- expect(function () {
998
-
999
- Hoek.applyToDefaultsWithShallow({}, true, 'a');
1000
- }).to.throw('Invalid keys');
1001
- done();
1002
- });
1003
- });
1004
-
1005
- describe('deepEqual()', function () {
1006
-
1007
- it('compares simple values', function (done) {
1008
-
1009
- expect(Hoek.deepEqual('x', 'x')).to.be.true();
1010
- expect(Hoek.deepEqual('x', 'y')).to.be.false();
1011
- expect(Hoek.deepEqual('x1', 'x')).to.be.false();
1012
- expect(Hoek.deepEqual(-0, +0)).to.be.false();
1013
- expect(Hoek.deepEqual(-0, -0)).to.be.true();
1014
- expect(Hoek.deepEqual(+0, +0)).to.be.true();
1015
- expect(Hoek.deepEqual(+0, -0)).to.be.false();
1016
- expect(Hoek.deepEqual(1, 1)).to.be.true();
1017
- expect(Hoek.deepEqual(0, 0)).to.be.true();
1018
- expect(Hoek.deepEqual(-1, 1)).to.be.false();
1019
- expect(Hoek.deepEqual(NaN, 0)).to.be.false();
1020
- expect(Hoek.deepEqual(NaN, NaN)).to.be.true();
1021
- done();
1022
- });
1023
-
1024
- it('compares different types', function (done) {
1025
-
1026
- expect(Hoek.deepEqual([], 5)).to.be.false();
1027
- expect(Hoek.deepEqual(5, [])).to.be.false();
1028
- expect(Hoek.deepEqual({}, null)).to.be.false();
1029
- expect(Hoek.deepEqual(null, {})).to.be.false();
1030
- expect(Hoek.deepEqual('abc', {})).to.be.false();
1031
- expect(Hoek.deepEqual({}, 'abc')).to.be.false();
1032
- done();
1033
- });
1034
-
1035
- it('compares empty structures', function (done) {
1036
-
1037
- expect(Hoek.deepEqual([], [])).to.be.true();
1038
- expect(Hoek.deepEqual({}, {})).to.be.true();
1039
- expect(Hoek.deepEqual([], {})).to.be.false();
1040
- done();
1041
- });
1042
-
1043
- it('compares empty arguments object', function (done) {
1044
-
1045
- var compare = function () {
1046
-
1047
- expect(Hoek.deepEqual([], arguments)).to.be.false();
1048
- };
1049
-
1050
- compare();
1051
- done();
1052
- });
1053
-
1054
- it('compares empty arguments objects', function (done) {
1055
-
1056
- var compare = function () {
1057
-
1058
- var arg1 = arguments;
1059
-
1060
- var inner = function () {
1061
-
1062
- expect(Hoek.deepEqual(arg1, arguments)).to.be.false(); // callee is not the same
1063
- };
1064
-
1065
- inner();
1066
- };
1067
-
1068
- compare();
1069
- done();
1070
- });
1071
-
1072
- it('compares dates', function (done) {
1073
-
1074
- expect(Hoek.deepEqual(new Date(2015, 1, 1), new Date(2015, 1, 1))).to.be.true();
1075
- expect(Hoek.deepEqual(new Date(100), new Date(101))).to.be.false();
1076
- expect(Hoek.deepEqual(new Date(), {})).to.be.false();
1077
- done();
1078
- });
1079
-
1080
- it('compares regular expressions', function (done) {
1081
-
1082
- expect(Hoek.deepEqual(/\s/, new RegExp('\\\s'))).to.be.true();
1083
- expect(Hoek.deepEqual(/\s/g, /\s/g)).to.be.true();
1084
- expect(Hoek.deepEqual(/a/, {})).to.be.false();
1085
- expect(Hoek.deepEqual(/\s/g, /\s/i)).to.be.false();
1086
- expect(Hoek.deepEqual(/a/g, /b/g)).to.be.false();
1087
- done();
1088
- });
1089
-
1090
- it('compares arrays', function (done) {
1091
-
1092
- expect(Hoek.deepEqual([[1]], [[1]])).to.be.true();
1093
- expect(Hoek.deepEqual([1, 2, 3], [1, 2, 3])).to.be.true();
1094
- expect(Hoek.deepEqual([1, 2, 3], [1, 3, 2])).to.be.false();
1095
- expect(Hoek.deepEqual([1, 2, 3], [1, 2])).to.be.false();
1096
- expect(Hoek.deepEqual([1], [1])).to.be.true();
1097
- done();
1098
- });
1099
-
1100
- it('compares buffers', function (done) {
1101
-
1102
- expect(Hoek.deepEqual(new Buffer([1, 2, 3]), new Buffer([1, 2, 3]))).to.be.true();
1103
- expect(Hoek.deepEqual(new Buffer([1, 2, 3]), new Buffer([1, 3, 2]))).to.be.false();
1104
- expect(Hoek.deepEqual(new Buffer([1, 2, 3]), new Buffer([1, 2]))).to.be.false();
1105
- expect(Hoek.deepEqual(new Buffer([1, 2, 3]), {})).to.be.false();
1106
- expect(Hoek.deepEqual(new Buffer([1, 2, 3]), [1, 2, 3])).to.be.false();
1107
- done();
1108
- });
1109
-
1110
- it('compares objects', function (done) {
1111
-
1112
- expect(Hoek.deepEqual({ a: 1, b: 2, c: 3 }, { a: 1, b: 2, c: 3 })).to.be.true();
1113
- expect(Hoek.deepEqual({ foo: 'bar' }, { foo: 'baz' })).to.be.false();
1114
- expect(Hoek.deepEqual({ foo: { bar: 'foo' } }, { foo: { bar: 'baz' } })).to.be.false();
1115
- done();
1116
- });
1117
-
1118
- it('handles circular dependency', function (done) {
1119
-
1120
- var a = {};
1121
- a.x = a;
1122
-
1123
- var b = Hoek.clone(a);
1124
- expect(Hoek.deepEqual(a, b)).to.be.true();
1125
- done();
1126
- });
1127
-
1128
- it('compares an object with property getter without executing it', function (done) {
1129
-
1130
- var obj = {};
1131
- var value = 1;
1132
- var execCount = 0;
1133
-
1134
- Object.defineProperty(obj, 'test', {
1135
- enumerable: true,
1136
- configurable: true,
1137
- get: function () {
1138
-
1139
- ++execCount;
1140
- return value;
1141
- }
1142
- });
1143
-
1144
- var copy = Hoek.clone(obj);
1145
- expect(Hoek.deepEqual(obj, copy)).to.be.true();
1146
- expect(execCount).to.equal(0);
1147
- expect(copy.test).to.equal(1);
1148
- expect(execCount).to.equal(1);
1149
- done();
1150
- });
1151
-
1152
- it('compares objects with property getters', function (done) {
1153
-
1154
- var obj = {};
1155
- Object.defineProperty(obj, 'test', {
1156
- enumerable: true,
1157
- configurable: true,
1158
- get: function () {
1159
-
1160
- return 1;
1161
- }
1162
- });
1163
-
1164
- var ref = {};
1165
- Object.defineProperty(ref, 'test', {
1166
- enumerable: true,
1167
- configurable: true,
1168
- get: function () {
1169
-
1170
- return 2;
1171
- }
1172
- });
1173
-
1174
- expect(Hoek.deepEqual(obj, ref)).to.be.false();
1175
- done();
1176
- });
1177
-
1178
- it('compares object prototypes', function (done) {
1179
-
1180
- var Obj = function () {
1181
-
1182
- this.a = 5;
1183
- };
1184
-
1185
- Obj.prototype.b = function () {
1186
-
1187
- return this.a;
1188
- };
1189
-
1190
- var Ref = function () {
1191
-
1192
- this.a = 5;
1193
- };
1194
-
1195
- Ref.prototype.b = function () {
1196
-
1197
- return this.a;
1198
- };
1199
-
1200
- expect(Hoek.deepEqual(new Obj(), new Ref())).to.be.false();
1201
- expect(Hoek.deepEqual(new Obj(), new Obj())).to.be.true();
1202
- expect(Hoek.deepEqual(new Ref(), new Ref())).to.be.true();
1203
- done();
1204
- });
1205
-
1206
- it('compares plain objects', function (done) {
1207
-
1208
- var a = Object.create(null);
1209
- var b = Object.create(null);
1210
-
1211
- a.b = 'c';
1212
- b.b = 'c';
1213
-
1214
- expect(Hoek.deepEqual(a, b)).to.be.true();
1215
- expect(Hoek.deepEqual(a, { b: 'c' })).to.be.false();
1216
- done();
1217
- });
1218
-
1219
- it('compares an object with an empty object', function (done) {
1220
-
1221
- var a = { a: 1, b: 2 };
1222
-
1223
- expect(Hoek.deepEqual({}, a)).to.be.false();
1224
- expect(Hoek.deepEqual(a, {})).to.be.false();
1225
- done();
1226
- });
1227
-
1228
- it('compares an object ignoring the prototype', function (done) {
1229
-
1230
- var a = Object.create(null);
1231
- var b = {};
1232
-
1233
- expect(Hoek.deepEqual(a, b, { prototype: false })).to.be.true();
1234
- done();
1235
- });
1236
-
1237
- it('compares an object ignoring the prototype recursively', function (done) {
1238
-
1239
- var a = [Object.create(null)];
1240
- var b = [{}];
1241
-
1242
- expect(Hoek.deepEqual(a, b, { prototype: false })).to.be.true();
1243
- done();
1244
- });
1245
- });
1246
-
1247
- describe('unique()', function () {
1248
-
1249
- it('ensures uniqueness within array of objects based on subkey', function (done) {
1250
-
1251
- var a = Hoek.unique(dupsArray, 'x');
1252
- expect(a).to.deep.equal(reducedDupsArray);
1253
- done();
1254
- });
1255
-
1256
- it('removes duplicated without key', function (done) {
1257
-
1258
- expect(Hoek.unique([1, 2, 3, 4, 2, 1, 5])).to.deep.equal([1, 2, 3, 4, 5]);
1259
- done();
1260
- });
1261
- });
1262
-
1263
- describe('mapToObject()', function () {
1264
-
1265
- it('returns null on null array', function (done) {
1266
-
1267
- var a = Hoek.mapToObject(null);
1268
- expect(a).to.equal(null);
1269
- done();
1270
- });
1271
-
1272
- it('converts basic array to existential object', function (done) {
1273
-
1274
- var keys = [1, 2, 3, 4];
1275
- var a = Hoek.mapToObject(keys);
1276
- for (var i in keys) {
1277
- expect(a[keys[i]]).to.equal(true);
1278
- }
1279
- done();
1280
- });
1281
-
1282
- it('converts array of objects to existential object', function (done) {
1283
-
1284
- var keys = [{ x: 1 }, { x: 2 }, { x: 3 }, { y: 4 }];
1285
- var subkey = 'x';
1286
- var a = Hoek.mapToObject(keys, subkey);
1287
- expect(a).to.deep.equal({ 1: true, 2: true, 3: true });
1288
- done();
1289
- });
1290
- });
1291
-
1292
- describe('intersect()', function () {
1293
-
1294
- it('returns the common objects of two arrays', function (done) {
1295
-
1296
- var array1 = [1, 2, 3, 4, 4, 5, 5];
1297
- var array2 = [5, 4, 5, 6, 7];
1298
- var common = Hoek.intersect(array1, array2);
1299
- expect(common.length).to.equal(2);
1300
- done();
1301
- });
1302
-
1303
- it('returns just the first common object of two arrays', function (done) {
1304
-
1305
- var array1 = [1, 2, 3, 4, 4, 5, 5];
1306
- var array2 = [5, 4, 5, 6, 7];
1307
- var common = Hoek.intersect(array1, array2, true);
1308
- expect(common).to.equal(5);
1309
- done();
1310
- });
1311
-
1312
- it('returns null when no common and returning just the first common object of two arrays', function (done) {
1313
-
1314
- var array1 = [1, 2, 3, 4, 4, 5, 5];
1315
- var array2 = [6, 7];
1316
- var common = Hoek.intersect(array1, array2, true);
1317
- expect(common).to.equal(null);
1318
- done();
1319
- });
1320
-
1321
- it('returns an empty array if either input is null', function (done) {
1322
-
1323
- expect(Hoek.intersect([1], null).length).to.equal(0);
1324
- expect(Hoek.intersect(null, [1]).length).to.equal(0);
1325
- done();
1326
- });
1327
-
1328
- it('returns the common objects of object and array', function (done) {
1329
-
1330
- var array1 = [1, 2, 3, 4, 4, 5, 5];
1331
- var array2 = [5, 4, 5, 6, 7];
1332
- var common = Hoek.intersect(Hoek.mapToObject(array1), array2);
1333
- expect(common.length).to.equal(2);
1334
- done();
1335
- });
1336
- });
1337
-
1338
- describe('contain()', function () {
1339
-
1340
- it('tests strings', function (done) {
1341
-
1342
- expect(Hoek.contain('abc', 'ab')).to.be.true();
1343
- expect(Hoek.contain('abc', 'abc', { only: true })).to.be.true();
1344
- expect(Hoek.contain('aaa', 'a', { only: true })).to.be.true();
1345
- expect(Hoek.contain('abc', 'b', { once: true })).to.be.true();
1346
- expect(Hoek.contain('abc', ['a', 'c'])).to.be.true();
1347
- expect(Hoek.contain('abc', ['a', 'd'], { part: true })).to.be.true();
1348
-
1349
- expect(Hoek.contain('abc', 'ac')).to.be.false();
1350
- expect(Hoek.contain('abcd', 'abc', { only: true })).to.be.false();
1351
- expect(Hoek.contain('aab', 'a', { only: true })).to.be.false();
1352
- expect(Hoek.contain('abb', 'b', { once: true })).to.be.false();
1353
- expect(Hoek.contain('abc', ['a', 'd'])).to.be.false();
1354
- expect(Hoek.contain('abc', ['ab', 'bc'])).to.be.false(); // Overlapping values not supported
1355
- done();
1356
- });
1357
-
1358
- it('tests arrays', function (done) {
1359
-
1360
- expect(Hoek.contain([1, 2, 3], 1)).to.be.true();
1361
- expect(Hoek.contain([{ a: 1 }], { a: 1 }, { deep: true })).to.be.true();
1362
- expect(Hoek.contain([1, 2, 3], [1, 2])).to.be.true();
1363
- expect(Hoek.contain([{ a: 1 }], [{ a: 1 }], { deep: true })).to.be.true();
1364
- expect(Hoek.contain([1, 1, 2], [1, 2], { only: true })).to.be.true();
1365
- expect(Hoek.contain([1, 2], [1, 2], { once: true })).to.be.true();
1366
- expect(Hoek.contain([1, 2, 3], [1, 4], { part: true })).to.be.true();
1367
- expect(Hoek.contain([[1], [2]], [[1]], { deep: true })).to.be.true();
1368
-
1369
- expect(Hoek.contain([1, 2, 3], 4)).to.be.false();
1370
- expect(Hoek.contain([{ a: 1 }], { a: 2 }, { deep: true })).to.be.false();
1371
- expect(Hoek.contain([{ a: 1 }], { a: 1 })).to.be.false();
1372
- expect(Hoek.contain([1, 2, 3], [4, 5])).to.be.false();
1373
- expect(Hoek.contain([[3], [2]], [[1]])).to.be.false();
1374
- expect(Hoek.contain([[1], [2]], [[1]])).to.be.false();
1375
- expect(Hoek.contain([{ a: 1 }], [{ a: 2 }], { deep: true })).to.be.false();
1376
- expect(Hoek.contain([1, 3, 2], [1, 2], { only: true })).to.be.false();
1377
- expect(Hoek.contain([1, 2, 2], [1, 2], { once: true })).to.be.false();
1378
- expect(Hoek.contain([0, 2, 3], [1, 4], { part: true })).to.be.false();
1379
- done();
1380
- });
1381
-
1382
- it('tests objects', function (done) {
1383
-
1384
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, 'a')).to.be.true();
1385
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, ['a', 'c'])).to.be.true();
1386
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, ['a', 'b', 'c'], { only: true })).to.be.true();
1387
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1 })).to.be.true();
1388
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, c: 3 })).to.be.true();
1389
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, d: 4 }, { part: true })).to.be.true();
1390
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, b: 2, c: 3 }, { only: true })).to.be.true();
1391
- expect(Hoek.contain({ a: [1], b: [2], c: [3] }, { a: [1], c: [3] }, { deep: true })).to.be.true();
1392
- expect(Hoek.contain({ a: [{ b: 1 }, { c: 2 }, { d: 3, e: 4 }] }, { a: [{ b: 1 }, { d: 3 }] }, { deep: true })).to.be.true();
1393
- expect(Hoek.contain({ a: [{ b: 1 }, { c: 2 }, { d: 3, e: 4 }] }, { a: [{ b: 1 }, { d: 3 }] }, { deep: true, part: true })).to.be.true();
1394
- expect(Hoek.contain({ a: [{ b: 1 }, { c: 2 }, { d: 3, e: 4 }] }, { a: [{ b: 1 }, { d: 3 }] }, { deep: true, part: false })).to.be.false();
1395
- expect(Hoek.contain({ a: [{ b: 1 }, { c: 2 }, { d: 3, e: 4 }] }, { a: [{ b: 1 }, { d: 3 }] }, { deep: true, only: true })).to.be.false();
1396
- expect(Hoek.contain({ a: [{ b: 1 }, { c: 2 }, { d: 3, e: 4 }] }, { a: [{ b: 1 }, { d: 3 }] }, { deep: true, only: false })).to.be.true();
1397
-
1398
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, 'd')).to.be.false();
1399
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, ['a', 'd'])).to.be.false();
1400
- expect(Hoek.contain({ a: 1, b: 2, c: 3, d: 4 }, ['a', 'b', 'c'], { only: true })).to.be.false();
1401
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 2 })).to.be.false();
1402
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 2, b: 2 }, { part: true })).to.be.false(); // part does not ignore bad value
1403
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, d: 3 })).to.be.false();
1404
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, d: 4 })).to.be.false();
1405
- expect(Hoek.contain({ a: 1, b: 2, c: 3 }, { a: 1, b: 2 }, { only: true })).to.be.false();
1406
- expect(Hoek.contain({ a: [1], b: [2], c: [3] }, { a: [1], c: [3] })).to.be.false();
1407
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } })).to.be.false();
1408
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } }, { deep: true })).to.be.true();
1409
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } }, { deep: true, only: true })).to.be.false();
1410
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } }, { deep: true, only: false })).to.be.true();
1411
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } }, { deep: true, part: true })).to.be.true();
1412
- expect(Hoek.contain({ a: { b: { c: 1, d: 2 } } }, { a: { b: { c: 1 } } }, { deep: true, part: false })).to.be.false();
1413
-
1414
- // Getter check
1415
- var Foo = function (bar) {
1416
-
1417
- this.bar = bar;
1418
- };
1419
-
1420
- Object.defineProperty(Foo.prototype, 'baz', {
1421
- enumerable: true,
1422
- get: function () {
1423
-
1424
- return this.bar;
1425
- }
1426
- });
1427
-
1428
- expect(Hoek.contain({ a: new Foo('b') }, { a: new Foo('b') }, { deep: true })).to.be.true();
1429
- expect(Hoek.contain({ a: new Foo('b') }, { a: new Foo('b') }, { deep: true, part: true })).to.be.true();
1430
- expect(Hoek.contain({ a: new Foo('b') }, { a: { baz: 'b' } }, { deep: true })).to.be.true();
1431
- expect(Hoek.contain({ a: new Foo('b') }, { a: { baz: 'b' } }, { deep: true, only: true })).to.be.false();
1432
- expect(Hoek.contain({ a: new Foo('b') }, { a: { baz: 'b' } }, { deep: true, part: false })).to.be.false();
1433
- expect(Hoek.contain({ a: new Foo('b') }, { a: { baz: 'b' } }, { deep: true, part: true })).to.be.true();
1434
-
1435
- done();
1436
- });
1437
- });
1438
-
1439
- describe('flatten()', function () {
1440
-
1441
- it('returns a flat array', function (done) {
1442
-
1443
- var result = Hoek.flatten([1, 2, [3, 4, [5, 6], [7], 8], [9], [10, [11, 12]], 13]);
1444
- expect(result.length).to.equal(13);
1445
- expect(result).to.deep.equal([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]);
1446
- done();
1447
- });
1448
- });
1449
-
1450
- describe('reach()', function () {
1451
-
1452
- var obj = {
1453
- a: {
1454
- b: {
1455
- c: {
1456
- d: 1,
1457
- e: 2
1458
- },
1459
- f: 'hello'
1460
- },
1461
- g: {
1462
- h: 3
1463
- }
1464
- },
1465
- i: function () { },
1466
- j: null,
1467
- k: [4, 8, 9, 1]
1468
- };
1469
-
1470
- obj.i.x = 5;
1471
-
1472
- it('returns object itself', function (done) {
1473
-
1474
- expect(Hoek.reach(obj, null)).to.equal(obj);
1475
- expect(Hoek.reach(obj, false)).to.equal(obj);
1476
- expect(Hoek.reach(obj)).to.equal(obj);
1477
- done();
1478
- });
1479
-
1480
- it('returns first value of array', function (done) {
1481
-
1482
- expect(Hoek.reach(obj, 'k.0')).to.equal(4);
1483
- done();
1484
- });
1485
-
1486
- it('returns last value of array using negative index', function (done) {
1487
-
1488
- expect(Hoek.reach(obj, 'k.-2')).to.equal(9);
1489
- done();
1490
- });
1491
-
1492
- it('returns a valid member', function (done) {
1493
-
1494
- expect(Hoek.reach(obj, 'a.b.c.d')).to.equal(1);
1495
- done();
1496
- });
1497
-
1498
- it('returns a valid member with separator override', function (done) {
1499
-
1500
- expect(Hoek.reach(obj, 'a/b/c/d', '/')).to.equal(1);
1501
- done();
1502
- });
1503
-
1504
- it('returns undefined on null object', function (done) {
1505
-
1506
- expect(Hoek.reach(null, 'a.b.c.d')).to.equal(undefined);
1507
- done();
1508
- });
1509
-
1510
- it('returns undefined on missing object member', function (done) {
1511
-
1512
- expect(Hoek.reach(obj, 'a.b.c.d.x')).to.equal(undefined);
1513
- done();
1514
- });
1515
-
1516
- it('returns undefined on missing function member', function (done) {
1517
-
1518
- expect(Hoek.reach(obj, 'i.y', { functions: true })).to.equal(undefined);
1519
- done();
1520
- });
1521
-
1522
- it('throws on missing member in strict mode', function (done) {
1523
-
1524
- expect(function () {
1525
-
1526
- Hoek.reach(obj, 'a.b.c.o.x', { strict: true });
1527
- }).to.throw('Missing segment o in reach path a.b.c.o.x');
1528
-
1529
- done();
1530
- });
1531
-
1532
- it('returns undefined on invalid member', function (done) {
1533
-
1534
- expect(Hoek.reach(obj, 'a.b.c.d-.x')).to.equal(undefined);
1535
- done();
1536
- });
1537
-
1538
- it('returns function member', function (done) {
1539
-
1540
- expect(typeof Hoek.reach(obj, 'i')).to.equal('function');
1541
- done();
1542
- });
1543
-
1544
- it('returns function property', function (done) {
1545
-
1546
- expect(Hoek.reach(obj, 'i.x')).to.equal(5);
1547
- done();
1548
- });
1549
-
1550
- it('returns null', function (done) {
1551
-
1552
- expect(Hoek.reach(obj, 'j')).to.equal(null);
1553
- done();
1554
- });
1555
-
1556
- it('throws on function property when functions not allowed', function (done) {
1557
-
1558
- expect(function () {
1559
-
1560
- Hoek.reach(obj, 'i.x', { functions: false });
1561
- }).to.throw('Invalid segment x in reach path i.x');
1562
-
1563
- done();
1564
- });
1565
-
1566
- it('will return a default value if property is not found', function (done) {
1567
-
1568
- expect(Hoek.reach(obj, 'a.b.q', { default: 'defaultValue' })).to.equal('defaultValue');
1569
- done();
1570
- });
1571
-
1572
- it('will return a default value if path is not found', function (done) {
1573
-
1574
- expect(Hoek.reach(obj, 'q', { default: 'defaultValue' })).to.equal('defaultValue');
1575
- done();
1576
- });
1577
-
1578
- it('allows a falsey value to be used as the default value', function (done) {
1579
-
1580
- expect(Hoek.reach(obj, 'q', { default: '' })).to.equal('');
1581
- done();
1582
- });
1583
- });
1584
-
1585
- describe('reachTemplate()', function () {
1586
-
1587
- it('applies object to template', function (done) {
1588
-
1589
- var obj = {
1590
- a: {
1591
- b: {
1592
- c: {
1593
- d: 1
1594
- }
1595
- }
1596
- },
1597
- j: null,
1598
- k: [4, 8, 9, 1]
1599
- };
1600
-
1601
- var template = '{k.0}:{k.-2}:{a.b.c.d}:{x.y}:{j}';
1602
-
1603
- expect(Hoek.reachTemplate(obj, template)).to.equal('4:9:1::');
1604
- done();
1605
- });
1606
-
1607
- it('applies object to template (options)', function (done) {
1608
-
1609
- var obj = {
1610
- a: {
1611
- b: {
1612
- c: {
1613
- d: 1
1614
- }
1615
- }
1616
- },
1617
- j: null,
1618
- k: [4, 8, 9, 1]
1619
- };
1620
-
1621
- var template = '{k/0}:{k/-2}:{a/b/c/d}:{x/y}:{j}';
1622
-
1623
- expect(Hoek.reachTemplate(obj, template, '/')).to.equal('4:9:1::');
1624
- done();
1625
- });
1626
- });
1627
-
1628
- describe('callStack()', function () {
1629
-
1630
- it('returns the full call stack', function (done) {
1631
-
1632
- var stack = Hoek.callStack();
1633
- expect(stack[0][0]).to.contain('index.js');
1634
- expect(stack[0][2]).to.equal(26);
1635
- done();
1636
- });
1637
- });
1638
-
1639
- describe('displayStack ()', function () {
1640
-
1641
- it('returns the full call stack for display', function (done) {
1642
-
1643
- var stack = Hoek.displayStack();
1644
- expect(stack[0]).to.contain(Path.normalize('/test/index.js') + ':');
1645
- done();
1646
- });
1647
-
1648
- it('includes constructor functions correctly', function (done) {
1649
-
1650
- var Something = function (next) {
1651
-
1652
- next();
1653
- };
1654
-
1655
- var something = new Something(function () {
1656
-
1657
- var stack = Hoek.displayStack();
1658
- expect(stack[1]).to.contain('new Something');
1659
- done();
1660
- });
1661
- });
1662
- });
1663
-
1664
- describe('abort()', function () {
1665
-
1666
- it('exits process when not in test mode', function (done) {
1667
-
1668
- var env = process.env.NODE_ENV;
1669
- var write = process.stdout.write;
1670
- var exit = process.exit;
1671
-
1672
- process.env.NODE_ENV = 'nottatest';
1673
- process.stdout.write = function () { };
1674
- process.exit = function (state) {
1675
-
1676
- process.exit = exit;
1677
- process.env.NODE_ENV = env;
1678
- process.stdout.write = write;
1679
-
1680
- expect(state).to.equal(1);
1681
- done();
1682
- };
1683
-
1684
- Hoek.abort('Boom');
1685
- });
1686
-
1687
- it('throws when not in test mode and abortThrow is true', function (done) {
1688
-
1689
- var env = process.env.NODE_ENV;
1690
- process.env.NODE_ENV = 'nottatest';
1691
- Hoek.abortThrow = true;
1692
-
1693
- var fn = function () {
1694
-
1695
- Hoek.abort('my error message');
1696
- };
1697
-
1698
- expect(fn).to.throw('my error message');
1699
- Hoek.abortThrow = false;
1700
- process.env.NODE_ENV = env;
1701
-
1702
- done();
1703
- });
1704
-
1705
- it('respects hideStack argument', function (done) {
1706
-
1707
- var env = process.env.NODE_ENV;
1708
- var write = process.stdout.write;
1709
- var exit = process.exit;
1710
- var output = '';
1711
-
1712
- process.exit = function () { };
1713
- process.env.NODE_ENV = '';
1714
- process.stdout.write = function (message) {
1715
-
1716
- output = message;
1717
- };
1718
-
1719
- Hoek.abort('my error message', true);
1720
-
1721
- process.env.NODE_ENV = env;
1722
- process.stdout.write = write;
1723
- process.exit = exit;
1724
-
1725
- expect(output).to.equal('ABORT: my error message\n\t\n');
1726
-
1727
- done();
1728
- });
1729
-
1730
- it('throws in test mode', function (done) {
1731
-
1732
- var env = process.env.NODE_ENV;
1733
- process.env.NODE_ENV = 'test';
1734
-
1735
- expect(function () {
1736
-
1737
- Hoek.abort('my error message', true);
1738
- }).to.throw('my error message');
1739
-
1740
- process.env.NODE_ENV = env;
1741
- done();
1742
- });
1743
-
1744
- it('throws in test mode with default message', function (done) {
1745
-
1746
- var env = process.env.NODE_ENV;
1747
- process.env.NODE_ENV = 'test';
1748
-
1749
- expect(function () {
1750
-
1751
- Hoek.abort('', true);
1752
- }).to.throw('Unknown error');
1753
-
1754
- process.env.NODE_ENV = env;
1755
- done();
1756
- });
1757
-
1758
- it('defaults to showing stack', function (done) {
1759
-
1760
- var env = process.env.NODE_ENV;
1761
- var write = process.stdout.write;
1762
- var exit = process.exit;
1763
- var output = '';
1764
-
1765
- process.exit = function () { };
1766
- process.env.NODE_ENV = '';
1767
- process.stdout.write = function (message) {
1768
-
1769
- output = message;
1770
- };
1771
-
1772
- Hoek.abort('my error message');
1773
-
1774
- process.env.NODE_ENV = env;
1775
- process.stdout.write = write;
1776
- process.exit = exit;
1777
-
1778
- expect(output).to.contain('index.js');
1779
-
1780
- done();
1781
- });
1782
- });
1783
-
1784
- describe('assert()', function () {
1785
-
1786
- it('throws an Error when using assert in a test', function (done) {
1787
-
1788
- var fn = function () {
1789
-
1790
- Hoek.assert(false, 'my error message');
1791
- };
1792
-
1793
- expect(fn).to.throw('my error message');
1794
- done();
1795
- });
1796
-
1797
- it('throws an Error when using assert in a test with no message', function (done) {
1798
-
1799
- var fn = function () {
1800
-
1801
- Hoek.assert(false);
1802
- };
1803
-
1804
- expect(fn).to.throw('Unknown error');
1805
- done();
1806
- });
1807
-
1808
- it('throws an Error when using assert in a test with multipart message', function (done) {
1809
-
1810
- var fn = function () {
1811
-
1812
- Hoek.assert(false, 'This', 'is', 'my message');
1813
- };
1814
-
1815
- expect(fn).to.throw('This is my message');
1816
- done();
1817
- });
1818
-
1819
- it('throws an Error when using assert in a test with multipart message (empty)', function (done) {
1820
-
1821
- var fn = function () {
1822
-
1823
- Hoek.assert(false, 'This', 'is', '', 'my message');
1824
- };
1825
-
1826
- expect(fn).to.throw('This is my message');
1827
- done();
1828
- });
1829
-
1830
- it('throws an Error when using assert in a test with object message', function (done) {
1831
-
1832
- var fn = function () {
1833
-
1834
- Hoek.assert(false, 'This', 'is', { spinal: 'tap' });
1835
- };
1836
-
1837
- expect(fn).to.throw('This is {"spinal":"tap"}');
1838
- done();
1839
- });
1840
-
1841
- it('throws an Error when using assert in a test with multipart string and error messages', function (done) {
1842
-
1843
- var fn = function () {
1844
-
1845
- Hoek.assert(false, 'This', 'is', new Error('spinal'), new Error('tap'));
1846
- };
1847
-
1848
- expect(fn).to.throw('This is spinal tap');
1849
- done();
1850
- });
1851
-
1852
- it('throws an Error when using assert in a test with error object message', function (done) {
1853
-
1854
- var fn = function () {
1855
-
1856
- Hoek.assert(false, new Error('This is spinal tap'));
1857
- };
1858
-
1859
- expect(fn).to.throw('This is spinal tap');
1860
- done();
1861
- });
1862
-
1863
- it('throws the same Error that is passed to it if there is only one error passed', function (done) {
1864
-
1865
- var error = new Error('ruh roh');
1866
- var error2 = new Error('ruh roh');
1867
-
1868
- var fn = function () {
1869
-
1870
- Hoek.assert(false, error);
1871
- };
1872
-
1873
- try {
1874
- fn();
1875
- } catch (err) {
1876
- expect(error).to.equal(error); // should be the same reference
1877
- expect(error).to.not.equal(error2); // error with the same message should not match
1878
- }
1879
-
1880
- done();
1881
- });
1882
- });
1883
-
1884
- describe('Timer', function () {
1885
-
1886
- it('returns time elapsed', function (done) {
1887
-
1888
- var timer = new Hoek.Timer();
1889
- setTimeout(function () {
1890
-
1891
- expect(timer.elapsed()).to.be.above(9);
1892
- done();
1893
- }, 12);
1894
- });
1895
- });
1896
-
1897
- describe('Bench', function () {
1898
-
1899
- it('returns time elapsed', function (done) {
1900
-
1901
- var timer = new Hoek.Bench();
1902
- setTimeout(function () {
1903
-
1904
- expect(timer.elapsed()).to.be.above(9);
1905
- done();
1906
- }, 12);
1907
- });
1908
- });
1909
-
1910
- describe('escapeRegex()', function () {
1911
-
1912
- it('escapes all special regular expression characters', function (done) {
1913
-
1914
- var a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\/`"(>)[<]d{}s,');
1915
- expect(a).to.equal('4\\^f\\$s\\.4\\*5\\+\\-_\\?%\\=#\\!\\:@\\|~\\\\\\/`"\\(>\\)\\[<\\]d\\{\\}s\\,');
1916
- done();
1917
- });
1918
- });
1919
-
1920
- describe('Base64Url', function () {
1921
-
1922
- var base64str = 'AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w';
1923
- var str = unescape('%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29*+%2C-./0123456789%3A%3B%3C%3D%3E%3F@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E%7F%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF');
1924
-
1925
- describe('base64urlEncode()', function () {
1926
-
1927
- it('should base64 URL-safe a string', function (done) {
1928
-
1929
- expect(Hoek.base64urlEncode(str)).to.equal(base64str);
1930
- done();
1931
- });
1932
-
1933
- it('encodes a buffer', function (done) {
1934
-
1935
- expect(Hoek.base64urlEncode(new Buffer(str, 'binary'))).to.equal(base64str);
1936
- done();
1937
- });
1938
-
1939
- it('should base64 URL-safe a hex string', function (done) {
1940
-
1941
- var buffer = new Buffer(str, 'binary');
1942
- expect(Hoek.base64urlEncode(buffer.toString('hex'), 'hex')).to.equal(base64str);
1943
- done();
1944
- });
1945
-
1946
- it('works on larger input strings', function (done) {
1947
-
1948
- var input = Fs.readFileSync(Path.join(__dirname, 'index.js')).toString();
1949
- var encoded = Hoek.base64urlEncode(input);
1950
-
1951
- expect(encoded).to.not.contain('+');
1952
- expect(encoded).to.not.contain('/');
1953
-
1954
- var decoded = Hoek.base64urlDecode(encoded);
1955
-
1956
- expect(decoded).to.equal(input);
1957
- done();
1958
- });
1959
- });
1960
-
1961
- describe('base64urlDecode()', function () {
1962
-
1963
- it('should un-base64 URL-safe a string', function (done) {
1964
-
1965
- expect(Hoek.base64urlDecode(base64str)).to.equal(str);
1966
- done();
1967
- });
1968
-
1969
- it('should un-base64 URL-safe a string into hex', function (done) {
1970
-
1971
- expect(Hoek.base64urlDecode(base64str, 'hex')).to.equal(new Buffer(str, 'binary').toString('hex'));
1972
- done();
1973
- });
1974
-
1975
- it('should un-base64 URL-safe a string and return a buffer', function (done) {
1976
-
1977
- var buf = Hoek.base64urlDecode(base64str, 'buffer');
1978
- expect(buf instanceof Buffer).to.equal(true);
1979
- expect(buf.toString('binary')).to.equal(str);
1980
- done();
1981
- });
1982
-
1983
- it('returns error on undefined input', function (done) {
1984
-
1985
- expect(Hoek.base64urlDecode().message).to.exist();
1986
- done();
1987
- });
1988
-
1989
- it('returns error on invalid input', function (done) {
1990
-
1991
- expect(Hoek.base64urlDecode('*').message).to.exist();
1992
- done();
1993
- });
1994
- });
1995
- });
1996
-
1997
- describe('escapeHeaderAttribute()', function () {
1998
-
1999
- it('should not alter ascii values', function (done) {
2000
-
2001
- var a = Hoek.escapeHeaderAttribute('My Value');
2002
- expect(a).to.equal('My Value');
2003
- done();
2004
- });
2005
-
2006
- it('escapes all special HTTP header attribute characters', function (done) {
2007
-
2008
- var a = Hoek.escapeHeaderAttribute('I said go!!!#"' + String.fromCharCode(92));
2009
- expect(a).to.equal('I said go!!!#\\"\\\\');
2010
- done();
2011
- });
2012
-
2013
- it('throws on large unicode characters', function (done) {
2014
-
2015
- var fn = function () {
2016
-
2017
- Hoek.escapeHeaderAttribute('this is a test' + String.fromCharCode(500) + String.fromCharCode(300));
2018
- };
2019
-
2020
- expect(fn).to.throw(Error);
2021
- done();
2022
- });
2023
-
2024
- it('throws on CRLF to prevent response splitting', function (done) {
2025
-
2026
- var fn = function () {
2027
-
2028
- Hoek.escapeHeaderAttribute('this is a test\r\n');
2029
- };
2030
-
2031
- expect(fn).to.throw(Error);
2032
- done();
2033
- });
2034
- });
2035
-
2036
- describe('escapeHtml()', function () {
2037
-
2038
- it('escapes all special HTML characters', function (done) {
2039
-
2040
- var a = Hoek.escapeHtml('&<>"\'`');
2041
- expect(a).to.equal('&amp;&lt;&gt;&quot;&#x27;&#x60;');
2042
- done();
2043
- });
2044
-
2045
- it('returns empty string on falsy input', function (done) {
2046
-
2047
- var a = Hoek.escapeHtml('');
2048
- expect(a).to.equal('');
2049
- done();
2050
- });
2051
-
2052
- it('returns unchanged string on no reserved input', function (done) {
2053
-
2054
- var a = Hoek.escapeHtml('abc');
2055
- expect(a).to.equal('abc');
2056
- done();
2057
- });
2058
- });
2059
-
2060
- describe('nextTick()', function () {
2061
-
2062
- it('calls the provided callback on nextTick', function (done) {
2063
-
2064
- var a = 0;
2065
-
2066
- var inc = function (step, next) {
2067
-
2068
- a += step;
2069
- next();
2070
- };
2071
-
2072
- var ticked = Hoek.nextTick(inc);
2073
-
2074
- ticked(5, function () {
2075
-
2076
- expect(a).to.equal(6);
2077
- done();
2078
- });
2079
-
2080
- expect(a).to.equal(0);
2081
- inc(1, function () {
2082
-
2083
- expect(a).to.equal(1);
2084
- });
2085
- });
2086
- });
2087
-
2088
- describe('once()', function () {
2089
-
2090
- it('allows function to only execute once', function (done) {
2091
-
2092
- var gen = 0;
2093
- var add = function (x) {
2094
-
2095
- gen += x;
2096
- };
2097
-
2098
- add(5);
2099
- expect(gen).to.equal(5);
2100
- add = Hoek.once(add);
2101
- add(5);
2102
- expect(gen).to.equal(10);
2103
- add(5);
2104
- expect(gen).to.equal(10);
2105
- done();
2106
- });
2107
-
2108
- it('double once wraps one time', function (done) {
2109
-
2110
- var method = function () { };
2111
- method = Hoek.once(method);
2112
- method.x = 1;
2113
- method = Hoek.once(method);
2114
- expect(method.x).to.equal(1);
2115
- done();
2116
- });
2117
- });
2118
-
2119
- describe('isAbsoltePath()', function () {
2120
-
2121
- it('identifies if path is absolute on Unix without node support', { parallel: false }, function (done) {
2122
-
2123
- var orig = Path.isAbsolute;
2124
- Path.isAbsolute = undefined;
2125
-
2126
- expect(Hoek.isAbsolutePath('')).to.equal(false);
2127
- expect(Hoek.isAbsolutePath('a')).to.equal(false);
2128
- expect(Hoek.isAbsolutePath('./a')).to.equal(false);
2129
- expect(Hoek.isAbsolutePath('/a')).to.equal(true);
2130
- expect(Hoek.isAbsolutePath('/')).to.equal(true);
2131
-
2132
- Path.isAbsolute = orig;
2133
-
2134
- done();
2135
- });
2136
-
2137
- it('identifies if path is absolute with fake node support', { parallel: false }, function (done) {
2138
-
2139
- var orig = Path.isAbsolute;
2140
- Path.isAbsolute = function (path) {
2141
-
2142
- return path[0] === '/';
2143
- };
2144
-
2145
- expect(Hoek.isAbsolutePath('', 'linux')).to.equal(false);
2146
- expect(Hoek.isAbsolutePath('a', 'linux')).to.equal(false);
2147
- expect(Hoek.isAbsolutePath('./a', 'linux')).to.equal(false);
2148
- expect(Hoek.isAbsolutePath('/a', 'linux')).to.equal(true);
2149
- expect(Hoek.isAbsolutePath('/', 'linux')).to.equal(true);
2150
-
2151
- Path.isAbsolute = orig;
2152
-
2153
- done();
2154
- });
2155
-
2156
- it('identifies if path is absolute on Windows without node support', { parallel: false }, function (done) {
2157
-
2158
- var orig = Path.isAbsolute;
2159
- Path.isAbsolute = undefined;
2160
-
2161
- expect(Hoek.isAbsolutePath('//server/file', 'win32')).to.equal(true);
2162
- expect(Hoek.isAbsolutePath('//server/file', 'win32')).to.equal(true);
2163
- expect(Hoek.isAbsolutePath('\\\\server\\file', 'win32')).to.equal(true);
2164
- expect(Hoek.isAbsolutePath('C:/Users/', 'win32')).to.equal(true);
2165
- expect(Hoek.isAbsolutePath('C:\\Users\\', 'win32')).to.equal(true);
2166
- expect(Hoek.isAbsolutePath('C:cwd/another', 'win32')).to.equal(false);
2167
- expect(Hoek.isAbsolutePath('C:cwd\\another', 'win32')).to.equal(false);
2168
- expect(Hoek.isAbsolutePath('directory/directory', 'win32')).to.equal(false);
2169
- expect(Hoek.isAbsolutePath('directory\\directory', 'win32')).to.equal(false);
2170
-
2171
- Path.isAbsolute = orig;
2172
-
2173
- done();
2174
- });
2175
- });
2176
-
2177
- describe('isInteger()', function () {
2178
-
2179
- it('validates integers', function (done) {
2180
-
2181
- expect(Hoek.isInteger(0)).to.equal(true);
2182
- expect(Hoek.isInteger(1)).to.equal(true);
2183
- expect(Hoek.isInteger(1394035612500)).to.equal(true);
2184
- expect(Hoek.isInteger('0')).to.equal(false);
2185
- expect(Hoek.isInteger(1.0)).to.equal(true);
2186
- expect(Hoek.isInteger(1.1)).to.equal(false);
2187
- done();
2188
- });
2189
- });
2190
-
2191
- describe('ignore()', function () {
2192
-
2193
- it('exists', function (done) {
2194
-
2195
- expect(Hoek.ignore).to.exist();
2196
- expect(typeof Hoek.ignore).to.equal('function');
2197
- done();
2198
- });
2199
- });
2200
-
2201
- describe('inherits()', function () {
2202
-
2203
- it('exists', function (done) {
2204
-
2205
- expect(Hoek.inherits).to.exist();
2206
- expect(typeof Hoek.inherits).to.equal('function');
2207
- done();
2208
- });
2209
- });
2210
-
2211
- describe('format()', function () {
2212
-
2213
- it('exists', function (done) {
2214
-
2215
- expect(Hoek.format).to.exist();
2216
- expect(typeof Hoek.format).to.equal('function');
2217
- done();
2218
- });
2219
-
2220
- it('is a reference to Util.format', function (done) {
2221
-
2222
- expect(Hoek.format('hello %s', 'world')).to.equal('hello world');
2223
- done();
2224
- });
2225
- });
2226
-
2227
- describe('transform()', function () {
2228
-
2229
- var source = {
2230
- address: {
2231
- one: '123 main street',
2232
- two: 'PO Box 1234'
2233
- },
2234
- zip: {
2235
- code: 3321232,
2236
- province: null
2237
- },
2238
- title: 'Warehouse',
2239
- state: 'CA'
2240
- };
2241
-
2242
- var sourcesArray = [{
2243
- address: {
2244
- one: '123 main street',
2245
- two: 'PO Box 1234'
2246
- },
2247
- zip: {
2248
- code: 3321232,
2249
- province: null
2250
- },
2251
- title: 'Warehouse',
2252
- state: 'CA'
2253
- }, {
2254
- address: {
2255
- one: '456 market street',
2256
- two: 'PO Box 5678'
2257
- },
2258
- zip: {
2259
- code: 9876,
2260
- province: null
2261
- },
2262
- title: 'Garage',
2263
- state: 'NY'
2264
- }];
2265
-
2266
- it('transforms an object based on the input object', function (done) {
2267
-
2268
- var result = Hoek.transform(source, {
2269
- 'person.address.lineOne': 'address.one',
2270
- 'person.address.lineTwo': 'address.two',
2271
- 'title': 'title',
2272
- 'person.address.region': 'state',
2273
- 'person.address.zip': 'zip.code',
2274
- 'person.address.location': 'zip.province'
2275
- });
2276
-
2277
- expect(result).to.deep.equal({
2278
- person: {
2279
- address: {
2280
- lineOne: '123 main street',
2281
- lineTwo: 'PO Box 1234',
2282
- region: 'CA',
2283
- zip: 3321232,
2284
- location: null
2285
- }
2286
- },
2287
- title: 'Warehouse'
2288
- });
2289
-
2290
- done();
2291
- });
2292
-
2293
- it('transforms an array of objects based on the input object', function (done) {
2294
-
2295
- var result = Hoek.transform(sourcesArray, {
2296
- 'person.address.lineOne': 'address.one',
2297
- 'person.address.lineTwo': 'address.two',
2298
- 'title': 'title',
2299
- 'person.address.region': 'state',
2300
- 'person.address.zip': 'zip.code',
2301
- 'person.address.location': 'zip.province'
2302
- });
2303
-
2304
- expect(result).to.deep.equal([
2305
- {
2306
- person: {
2307
- address: {
2308
- lineOne: '123 main street',
2309
- lineTwo: 'PO Box 1234',
2310
- region: 'CA',
2311
- zip: 3321232,
2312
- location: null
2313
- }
2314
- },
2315
- title: 'Warehouse'
2316
- },
2317
- {
2318
- person: {
2319
- address: {
2320
- lineOne: '456 market street',
2321
- lineTwo: 'PO Box 5678',
2322
- region: 'NY',
2323
- zip: 9876,
2324
- location: null
2325
- }
2326
- },
2327
- title: 'Garage'
2328
- }
2329
- ]);
2330
-
2331
- done();
2332
- });
2333
-
2334
- it('uses the reach options passed into it', function (done) {
2335
-
2336
- var schema = {
2337
- 'person.address.lineOne': 'address-one',
2338
- 'person.address.lineTwo': 'address-two',
2339
- 'title': 'title',
2340
- 'person.address.region': 'state',
2341
- 'person.prefix': 'person-title',
2342
- 'person.zip': 'zip-code'
2343
- };
2344
- var options = {
2345
- separator: '-',
2346
- default: 'unknown'
2347
- };
2348
- var result = Hoek.transform(source, schema, options);
2349
-
2350
- expect(result).to.deep.equal({
2351
- person: {
2352
- address: {
2353
- lineOne: '123 main street',
2354
- lineTwo: 'PO Box 1234',
2355
- region: 'CA'
2356
- },
2357
- prefix: 'unknown',
2358
- zip: 3321232
2359
- },
2360
- title: 'Warehouse'
2361
- });
2362
-
2363
- done();
2364
- });
2365
-
2366
- it('works to create shallow objects', function (done) {
2367
-
2368
- var result = Hoek.transform(source, {
2369
- lineOne: 'address.one',
2370
- lineTwo: 'address.two',
2371
- title: 'title',
2372
- region: 'state',
2373
- province: 'zip.province'
2374
- });
2375
-
2376
- expect(result).to.deep.equal({
2377
- lineOne: '123 main street',
2378
- lineTwo: 'PO Box 1234',
2379
- title: 'Warehouse',
2380
- region: 'CA',
2381
- province: null
2382
- });
2383
-
2384
- done();
2385
- });
2386
-
2387
- it('only allows strings in the map', function (done) {
2388
-
2389
- expect(function () {
2390
-
2391
- var result = Hoek.transform(source, {
2392
- lineOne: {}
2393
- });
2394
- }).to.throw('All mappings must be "." delineated strings');
2395
-
2396
- done();
2397
- });
2398
-
2399
- it('throws an error on invalid arguments', function (done) {
2400
-
2401
- expect(function () {
2402
-
2403
- var result = Hoek.transform(NaN, {});
2404
- }).to.throw('Invalid source object: must be null, undefined, an object, or an array');
2405
-
2406
- done();
2407
- });
2408
-
2409
- it('is safe to pass null', function (done) {
2410
-
2411
- var result = Hoek.transform(null, {});
2412
- expect(result).to.deep.equal({});
2413
-
2414
- done();
2415
- });
2416
-
2417
- it('is safe to pass undefined', function (done) {
2418
-
2419
- var result = Hoek.transform(undefined, {});
2420
- expect(result).to.deep.equal({});
2421
-
2422
- done();
2423
- });
2424
- });
2425
-
2426
- describe('uniqueFilename()', function () {
2427
-
2428
- it('generates a random file path', function (done) {
2429
-
2430
- var result = Hoek.uniqueFilename('./test/modules');
2431
-
2432
- expect(result).to.exist();
2433
- expect(result).to.be.a.string();
2434
- expect(result).to.contain('test/modules');
2435
- done();
2436
- });
2437
-
2438
- it('is random enough to use in fast loops', function (done) {
2439
-
2440
- var results = [];
2441
-
2442
- for (var i = 0; i < 10; ++i) {
2443
- results[i] = Hoek.uniqueFilename('./test/modules');
2444
- }
2445
-
2446
- var filter = results.filter(function (item, index, array) {
2447
-
2448
- return array.indexOf(item) === index;
2449
- });
2450
-
2451
- expect(filter.length).to.equal(10);
2452
- expect(results.length).to.equal(10);
2453
- done();
2454
-
2455
- });
2456
-
2457
- it('combines the random elements with a supplied character', function (done) {
2458
-
2459
- var result = Hoek.uniqueFilename('./test', 'txt');
2460
-
2461
- expect(result).to.contain('test/');
2462
- expect(result).to.contain('.txt');
2463
-
2464
- done();
2465
- });
2466
-
2467
- it('accepts extensions with a "." in it', function (done) {
2468
-
2469
- var result = Hoek.uniqueFilename('./test', '.mp3');
2470
-
2471
- expect(result).to.contain('test/');
2472
- expect(result).to.contain('.mp3');
2473
-
2474
- done();
2475
- });
2476
- });
2477
-
2478
- describe('stringify()', function (done) {
2479
-
2480
- it('converts object to string', function (done) {
2481
-
2482
- var obj = { a: 1 };
2483
- expect(Hoek.stringify(obj)).to.equal('{"a":1}');
2484
- done();
2485
- });
2486
-
2487
- it('returns error in result string', function (done) {
2488
-
2489
- var obj = { a: 1 };
2490
- obj.b = obj;
2491
- expect(Hoek.stringify(obj)).to.equal('[Cannot display object: Converting circular structure to JSON]');
2492
- done();
2493
- });
2494
- });
2495
-
2496
- describe('shallow()', function (done) {
2497
-
2498
- it('shallow copies an object', function (done) {
2499
-
2500
- var obj = {
2501
- a: 5,
2502
- b: {
2503
- c: 6
2504
- }
2505
- };
2506
-
2507
- var shallow = Hoek.shallow(obj);
2508
- expect(shallow).to.not.equal(obj);
2509
- expect(shallow).to.deep.equal(obj);
2510
- expect(shallow.b).to.equal(obj.b);
2511
- done();
2512
- });
2513
- });