1# Changelog 2 3All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. 4 5### [12.0.3](https://github.com/npm/cacache/compare/v12.0.2...v12.0.3) (2019-08-19) 6 7 8### Bug Fixes 9 10* do not chown if not running as root ([2d80af9](https://github.com/npm/cacache/commit/2d80af9)) 11 12 13 14### [12.0.2](https://github.com/npm/cacache/compare/v12.0.1...v12.0.2) (2019-07-19) 15 16 17 18### [12.0.1](https://github.com/npm/cacache/compare/v12.0.0...v12.0.1) (2019-07-19) 19 20* **deps** Abstracted out `lib/util/infer-owner.js` to 21 [@npmcli/infer-owner](https://www.npmjs.com/package/@npmcli/infer-owner) 22 so that it could be more easily used in other parts of the npm CLI. 23 24 25## [12.0.0](https://github.com/npm/cacache/compare/v11.3.3...v12.0.0) (2019-07-15) 26 27 28### Features 29 30* infer uid/gid instead of accepting as options ([ac84d14](https://github.com/npm/cacache/commit/ac84d14)) 31* **i18n:** add another error message ([676cb32](https://github.com/npm/cacache/commit/676cb32)) 32 33 34### BREAKING CHANGES 35 36* the uid gid options are no longer respected or 37necessary. As of this change, cacache will always match the cache 38contents to the ownership of the cache directory (or its parent 39directory), regardless of what the caller passes in. 40 41Reasoning: 42 43The number one reason to use a uid or gid option was to keep root-owned 44files from causing problems in the cache. In npm's case, this meant 45that CLI's ./lib/command.js had to work out the appropriate uid and gid, 46then pass it to the libnpmcommand module, which had to in turn pass the 47uid and gid to npm-registry-fetch, which then passed it to 48make-fetch-happen, which passed it to cacache. (For package fetching, 49pacote would be in that mix as well.) 50 51Added to that, `cacache.rm()` will actually _write_ a file into the 52cache index, but has no way to accept an option so that its call to 53entry-index.js will write the index with the appropriate uid/gid. 54Little ownership bugs were all over the place, and tricky to trace 55through. (Why should make-fetch-happen even care about accepting or 56passing uids and gids? It's an http library.) 57 58This change allows us to keep the cache from having mixed ownership in 59any situation. 60 61Of course, this _does_ mean that if you have a root-owned but 62user-writable folder (for example, `/tmp`), then the cache will try to 63chown everything to root. 64 65The solution is for the user to create a folder, make it user-owned, and 66use that, rather than relying on cacache to create the root cache folder. 67 68If we decide to restore the uid/gid opts, and use ownership inferrence 69only when uid/gid are unset, then take care to also make rm take an 70option object, and pass it through to entry-index.js. 71 72 73 74### [11.3.3](https://github.com/npm/cacache/compare/v11.3.2...v11.3.3) (2019-06-17) 75 76 77### Bug Fixes 78 79* **audit:** npm audit fix ([200a6d5](https://github.com/npm/cacache/commit/200a6d5)) 80* **config:** Add ssri config 'error' option ([#146](https://github.com/npm/cacache/issues/146)) ([47de8f5](https://github.com/npm/cacache/commit/47de8f5)) 81* **deps:** npm audit fix ([481a7dc](https://github.com/npm/cacache/commit/481a7dc)) 82* **standard:** standard --fix ([7799149](https://github.com/npm/cacache/commit/7799149)) 83* **write:** avoid another cb never called situation ([5156561](https://github.com/npm/cacache/commit/5156561)) 84 85 86 87<a name="11.3.2"></a> 88## [11.3.2](https://github.com/npm/cacache/compare/v11.3.1...v11.3.2) (2018-12-21) 89 90 91### Bug Fixes 92 93* **get:** make sure to handle errors in the .then ([b10bcd0](https://github.com/npm/cacache/commit/b10bcd0)) 94 95 96 97<a name="11.3.1"></a> 98## [11.3.1](https://github.com/npm/cacache/compare/v11.3.0...v11.3.1) (2018-11-05) 99 100 101### Bug Fixes 102 103* **get:** export hasContent.sync properly ([d76c920](https://github.com/npm/cacache/commit/d76c920)) 104 105 106 107<a name="11.3.0"></a> 108# [11.3.0](https://github.com/npm/cacache/compare/v11.2.0...v11.3.0) (2018-11-05) 109 110 111### Features 112 113* **get:** add sync API for reading ([db1e094](https://github.com/npm/cacache/commit/db1e094)) 114 115 116 117<a name="11.2.0"></a> 118# [11.2.0](https://github.com/npm/cacache/compare/v11.1.0...v11.2.0) (2018-08-08) 119 120 121### Features 122 123* **read:** add sync support to other internal read.js fns ([fe638b6](https://github.com/npm/cacache/commit/fe638b6)) 124 125 126 127<a name="11.1.0"></a> 128# [11.1.0](https://github.com/npm/cacache/compare/v11.0.3...v11.1.0) (2018-08-01) 129 130 131### Features 132 133* **read:** add sync support for low-level content read ([b43af83](https://github.com/npm/cacache/commit/b43af83)) 134 135 136 137<a name="11.0.3"></a> 138## [11.0.3](https://github.com/npm/cacache/compare/v11.0.2...v11.0.3) (2018-08-01) 139 140 141### Bug Fixes 142 143* **config:** add ssri config options ([#136](https://github.com/npm/cacache/issues/136)) ([10d5d9a](https://github.com/npm/cacache/commit/10d5d9a)) 144* **perf:** refactor content.read to avoid lstats ([c5ac10e](https://github.com/npm/cacache/commit/c5ac10e)) 145* **test:** oops when removing safe-buffer ([1950490](https://github.com/npm/cacache/commit/1950490)) 146 147 148 149<a name="11.0.2"></a> 150## [11.0.2](https://github.com/npm/cacache/compare/v11.0.1...v11.0.2) (2018-05-07) 151 152 153### Bug Fixes 154 155* **verify:** size param no longer lost in a verify ([#131](https://github.com/npm/cacache/issues/131)) ([c614a19](https://github.com/npm/cacache/commit/c614a19)), closes [#130](https://github.com/npm/cacache/issues/130) 156 157 158 159<a name="11.0.1"></a> 160## [11.0.1](https://github.com/npm/cacache/compare/v11.0.0...v11.0.1) (2018-04-10) 161 162 163 164<a name="11.0.0"></a> 165# [11.0.0](https://github.com/npm/cacache/compare/v10.0.4...v11.0.0) (2018-04-09) 166 167 168### Features 169 170* **opts:** use figgy-pudding for opts ([#128](https://github.com/npm/cacache/issues/128)) ([33d4eed](https://github.com/npm/cacache/commit/33d4eed)) 171 172 173### meta 174 175* drop support for node@4 ([529f347](https://github.com/npm/cacache/commit/529f347)) 176 177 178### BREAKING CHANGES 179 180* node@4 is no longer supported 181 182 183 184<a name="10.0.4"></a> 185## [10.0.4](https://github.com/npm/cacache/compare/v10.0.3...v10.0.4) (2018-02-16) 186 187 188 189<a name="10.0.3"></a> 190## [10.0.3](https://github.com/npm/cacache/compare/v10.0.2...v10.0.3) (2018-02-16) 191 192 193### Bug Fixes 194 195* **content:** rethrow aggregate errors as ENOENT ([fa918f5](https://github.com/npm/cacache/commit/fa918f5)) 196 197 198 199<a name="10.0.2"></a> 200## [10.0.2](https://github.com/npm/cacache/compare/v10.0.1...v10.0.2) (2018-01-07) 201 202 203### Bug Fixes 204 205* **ls:** deleted entries could cause a premature stream EOF ([347dc36](https://github.com/npm/cacache/commit/347dc36)) 206 207 208 209<a name="10.0.1"></a> 210## [10.0.1](https://github.com/npm/cacache/compare/v10.0.0...v10.0.1) (2017-11-15) 211 212 213### Bug Fixes 214 215* **move-file:** actually use the fallback to `move-concurrently` (#110) ([073fbe1](https://github.com/npm/cacache/commit/073fbe1)) 216 217 218 219<a name="10.0.0"></a> 220# [10.0.0](https://github.com/npm/cacache/compare/v9.3.0...v10.0.0) (2017-10-23) 221 222 223### Features 224 225* **license:** relicense to ISC (#111) ([fdbb4e5](https://github.com/npm/cacache/commit/fdbb4e5)) 226 227 228### Performance Improvements 229 230* more copyFile benchmarks ([63787bb](https://github.com/npm/cacache/commit/63787bb)) 231 232 233### BREAKING CHANGES 234 235* **license:** the license has been changed from CC0-1.0 to ISC. 236 237 238 239<a name="9.3.0"></a> 240# [9.3.0](https://github.com/npm/cacache/compare/v9.2.9...v9.3.0) (2017-10-07) 241 242 243### Features 244 245* **copy:** added cacache.get.copy api for fast copies (#107) ([067b5f6](https://github.com/npm/cacache/commit/067b5f6)) 246 247 248 249<a name="9.2.9"></a> 250## [9.2.9](https://github.com/npm/cacache/compare/v9.2.8...v9.2.9) (2017-06-17) 251 252 253 254<a name="9.2.8"></a> 255## [9.2.8](https://github.com/npm/cacache/compare/v9.2.7...v9.2.8) (2017-06-05) 256 257 258### Bug Fixes 259 260* **ssri:** bump ssri for bugfix ([c3232ea](https://github.com/npm/cacache/commit/c3232ea)) 261 262 263 264<a name="9.2.7"></a> 265## [9.2.7](https://github.com/npm/cacache/compare/v9.2.6...v9.2.7) (2017-06-05) 266 267 268### Bug Fixes 269 270* **content:** make verified content completely read-only (#96) ([4131196](https://github.com/npm/cacache/commit/4131196)) 271 272 273 274<a name="9.2.6"></a> 275## [9.2.6](https://github.com/npm/cacache/compare/v9.2.5...v9.2.6) (2017-05-31) 276 277 278### Bug Fixes 279 280* **node:** update ssri to prevent old node 4 crash ([5209ffe](https://github.com/npm/cacache/commit/5209ffe)) 281 282 283 284<a name="9.2.5"></a> 285## [9.2.5](https://github.com/npm/cacache/compare/v9.2.4...v9.2.5) (2017-05-25) 286 287 288### Bug Fixes 289 290* **deps:** fix lockfile issues and bump ssri ([84e1d7e](https://github.com/npm/cacache/commit/84e1d7e)) 291 292 293 294<a name="9.2.4"></a> 295## [9.2.4](https://github.com/npm/cacache/compare/v9.2.3...v9.2.4) (2017-05-24) 296 297 298### Bug Fixes 299 300* **deps:** bumping deps ([bbccb12](https://github.com/npm/cacache/commit/bbccb12)) 301 302 303 304<a name="9.2.3"></a> 305## [9.2.3](https://github.com/npm/cacache/compare/v9.2.2...v9.2.3) (2017-05-24) 306 307 308### Bug Fixes 309 310* **rm:** stop crashing if content is missing on rm ([ac90bc0](https://github.com/npm/cacache/commit/ac90bc0)) 311 312 313 314<a name="9.2.2"></a> 315## [9.2.2](https://github.com/npm/cacache/compare/v9.2.1...v9.2.2) (2017-05-14) 316 317 318### Bug Fixes 319 320* **i18n:** lets pretend this didn't happen ([519b4ee](https://github.com/npm/cacache/commit/519b4ee)) 321 322 323 324<a name="9.2.1"></a> 325## [9.2.1](https://github.com/npm/cacache/compare/v9.2.0...v9.2.1) (2017-05-14) 326 327 328### Bug Fixes 329 330* **docs:** fixing translation messup ([bb9e4f9](https://github.com/npm/cacache/commit/bb9e4f9)) 331 332 333 334<a name="9.2.0"></a> 335# [9.2.0](https://github.com/npm/cacache/compare/v9.1.0...v9.2.0) (2017-05-14) 336 337 338### Features 339 340* **i18n:** add Spanish translation for API ([531f9a4](https://github.com/npm/cacache/commit/531f9a4)) 341 342 343 344<a name="9.1.0"></a> 345# [9.1.0](https://github.com/npm/cacache/compare/v9.0.0...v9.1.0) (2017-05-14) 346 347 348### Features 349 350* **i18n:** Add Spanish translation and i18n setup (#91) ([323b90c](https://github.com/npm/cacache/commit/323b90c)) 351 352 353 354<a name="9.0.0"></a> 355# [9.0.0](https://github.com/npm/cacache/compare/v8.0.0...v9.0.0) (2017-04-28) 356 357 358### Bug Fixes 359 360* **memoization:** actually use the LRU ([0e55dc9](https://github.com/npm/cacache/commit/0e55dc9)) 361 362 363### Features 364 365* **memoization:** memoizers can be injected through opts.memoize (#90) ([e5614c7](https://github.com/npm/cacache/commit/e5614c7)) 366 367 368### BREAKING CHANGES 369 370* **memoization:** If you were passing an object to opts.memoize, it will now be used as an injected memoization object. If you were only passing booleans and other non-objects through that option, no changes are needed. 371 372 373 374<a name="8.0.0"></a> 375# [8.0.0](https://github.com/npm/cacache/compare/v7.1.0...v8.0.0) (2017-04-22) 376 377 378### Features 379 380* **read:** change hasContent to return {sri, size} (#88) ([bad6c49](https://github.com/npm/cacache/commit/bad6c49)), closes [#87](https://github.com/npm/cacache/issues/87) 381 382 383### BREAKING CHANGES 384 385* **read:** hasContent now returns an object with `{sri, size}` instead of `sri`. Use `result.sri` anywhere that needed the old return value. 386 387 388 389<a name="7.1.0"></a> 390# [7.1.0](https://github.com/npm/cacache/compare/v7.0.5...v7.1.0) (2017-04-20) 391 392 393### Features 394 395* **size:** handle content size info (#49) ([91230af](https://github.com/npm/cacache/commit/91230af)) 396 397 398 399<a name="7.0.5"></a> 400## [7.0.5](https://github.com/npm/cacache/compare/v7.0.4...v7.0.5) (2017-04-18) 401 402 403### Bug Fixes 404 405* **integrity:** new ssri with fixed integrity stream ([6d13e8e](https://github.com/npm/cacache/commit/6d13e8e)) 406* **write:** wrap stuff in promises to improve errors ([3624fc5](https://github.com/npm/cacache/commit/3624fc5)) 407 408 409 410<a name="7.0.4"></a> 411## [7.0.4](https://github.com/npm/cacache/compare/v7.0.3...v7.0.4) (2017-04-15) 412 413 414### Bug Fixes 415 416* **fix-owner:** throw away ENOENTs on chownr ([d49bbcd](https://github.com/npm/cacache/commit/d49bbcd)) 417 418 419 420<a name="7.0.3"></a> 421## [7.0.3](https://github.com/npm/cacache/compare/v7.0.2...v7.0.3) (2017-04-05) 422 423 424### Bug Fixes 425 426* **read:** fixing error message for integrity verification failures ([9d4f0a5](https://github.com/npm/cacache/commit/9d4f0a5)) 427 428 429 430<a name="7.0.2"></a> 431## [7.0.2](https://github.com/npm/cacache/compare/v7.0.1...v7.0.2) (2017-04-03) 432 433 434### Bug Fixes 435 436* **integrity:** use EINTEGRITY error code and update ssri ([8dc2e62](https://github.com/npm/cacache/commit/8dc2e62)) 437 438 439 440<a name="7.0.1"></a> 441## [7.0.1](https://github.com/npm/cacache/compare/v7.0.0...v7.0.1) (2017-04-03) 442 443 444### Bug Fixes 445 446* **docs:** fix header name conflict in readme ([afcd456](https://github.com/npm/cacache/commit/afcd456)) 447 448 449 450<a name="7.0.0"></a> 451# [7.0.0](https://github.com/npm/cacache/compare/v6.3.0...v7.0.0) (2017-04-03) 452 453 454### Bug Fixes 455 456* **test:** fix content.write tests when running in docker ([d2e9b6a](https://github.com/npm/cacache/commit/d2e9b6a)) 457 458 459### Features 460 461* **integrity:** subresource integrity support (#78) ([b1e731f](https://github.com/npm/cacache/commit/b1e731f)) 462 463 464### BREAKING CHANGES 465 466* **integrity:** The entire API has been overhauled to use SRI hashes instead of digest/hashAlgorithm pairs. SRI hashes follow the Subresource Integrity standard and support strings and objects compatible with [`ssri`](https://npm.im/ssri). 467 468* This change bumps the index version, which will invalidate all previous index entries. Content entries will remain intact, and existing caches will automatically reuse any content from before this breaking change. 469 470* `cacache.get.info()`, `cacache.ls()`, and `cacache.ls.stream()` will now return objects that looks like this: 471 472``` 473{ 474 key: String, 475 integrity: '<algorithm>-<base64hash>', 476 path: ContentPath, 477 time: Date<ms>, 478 metadata: Any 479} 480``` 481 482* `opts.digest` and `opts.hashAlgorithm` are obsolete for any API calls that used them. 483 484* Anywhere `opts.digest` was accepted, `opts.integrity` is now an option. Any valid SRI hash is accepted here -- multiple hash entries will be resolved according to the standard: first, the "strongest" hash algorithm will be picked, and then each of the entries for that algorithm will be matched against the content. Content will be validated if *any* of the entries match (so, a single integrity string can be used for multiple "versions" of the same document/data). 485 486* `put.byDigest()`, `put.stream.byDigest`, `get.byDigest()` and `get.stream.byDigest()` now expect an SRI instead of a `digest` + `opts.hashAlgorithm` pairing. 487 488* `get.hasContent()` now expects an integrity hash instead of a digest. If content exists, it will return the specific single integrity hash that was found in the cache. 489 490* `verify()` has learned to handle integrity-based caches, and forgotten how to handle old-style cache indices due to the format change. 491 492* `cacache.rm.content()` now expects an integrity hash instead of a hex digest. 493 494 495 496<a name="6.3.0"></a> 497# [6.3.0](https://github.com/npm/cacache/compare/v6.2.0...v6.3.0) (2017-04-01) 498 499 500### Bug Fixes 501 502* **fixOwner:** ignore EEXIST race condition from mkdirp ([4670e9b](https://github.com/npm/cacache/commit/4670e9b)) 503* **index:** ignore index removal races when inserting ([b9d2fa2](https://github.com/npm/cacache/commit/b9d2fa2)) 504* **memo:** use lru-cache for better mem management (#75) ([d8ac5aa](https://github.com/npm/cacache/commit/d8ac5aa)) 505 506 507### Features 508 509* **dependencies:** Switch to move-concurrently (#77) ([dc6482d](https://github.com/npm/cacache/commit/dc6482d)) 510 511 512 513<a name="6.2.0"></a> 514# [6.2.0](https://github.com/npm/cacache/compare/v6.1.2...v6.2.0) (2017-03-15) 515 516 517### Bug Fixes 518 519* **index:** additional bucket entry verification with checksum (#72) ([f8e0f25](https://github.com/npm/cacache/commit/f8e0f25)) 520* **verify:** return fixOwner.chownr promise ([6818521](https://github.com/npm/cacache/commit/6818521)) 521 522 523### Features 524 525* **tmp:** safe tmp dir creation/management util (#73) ([c42da71](https://github.com/npm/cacache/commit/c42da71)) 526 527 528 529<a name="6.1.2"></a> 530## [6.1.2](https://github.com/npm/cacache/compare/v6.1.1...v6.1.2) (2017-03-13) 531 532 533### Bug Fixes 534 535* **index:** set default hashAlgorithm ([d6eb2f0](https://github.com/npm/cacache/commit/d6eb2f0)) 536 537 538 539<a name="6.1.1"></a> 540## [6.1.1](https://github.com/npm/cacache/compare/v6.1.0...v6.1.1) (2017-03-13) 541 542 543### Bug Fixes 544 545* **coverage:** bumping coverage for verify (#71) ([0b7faf6](https://github.com/npm/cacache/commit/0b7faf6)) 546* **deps:** glob should have been a regular dep :< ([0640bc4](https://github.com/npm/cacache/commit/0640bc4)) 547 548 549 550<a name="6.1.0"></a> 551# [6.1.0](https://github.com/npm/cacache/compare/v6.0.2...v6.1.0) (2017-03-12) 552 553 554### Bug Fixes 555 556* **coverage:** more coverage for content reads (#70) ([ef4f70a](https://github.com/npm/cacache/commit/ef4f70a)) 557* **tests:** use safe-buffer because omfg (#69) ([6ab8132](https://github.com/npm/cacache/commit/6ab8132)) 558 559 560### Features 561 562* **rm:** limited rm.all and fixed bugs (#66) ([d5d25ba](https://github.com/npm/cacache/commit/d5d25ba)), closes [#66](https://github.com/npm/cacache/issues/66) 563* **verify:** tested, working cache verifier/gc (#68) ([45ad77a](https://github.com/npm/cacache/commit/45ad77a)) 564 565 566 567<a name="6.0.2"></a> 568## [6.0.2](https://github.com/npm/cacache/compare/v6.0.1...v6.0.2) (2017-03-11) 569 570 571### Bug Fixes 572 573* **index:** segment cache items with another subbucket (#64) ([c3644e5](https://github.com/npm/cacache/commit/c3644e5)) 574 575 576 577<a name="6.0.1"></a> 578## [6.0.1](https://github.com/npm/cacache/compare/v6.0.0...v6.0.1) (2017-03-05) 579 580 581### Bug Fixes 582 583* **docs:** Missed spots in README ([8ffb7fa](https://github.com/npm/cacache/commit/8ffb7fa)) 584 585 586 587<a name="6.0.0"></a> 588# [6.0.0](https://github.com/npm/cacache/compare/v5.0.3...v6.0.0) (2017-03-05) 589 590 591### Bug Fixes 592 593* **api:** keep memo cache mostly-internal ([2f72d0a](https://github.com/npm/cacache/commit/2f72d0a)) 594* **content:** use the rest of the string, not the whole string ([fa8f3c3](https://github.com/npm/cacache/commit/fa8f3c3)) 595* **deps:** removed `format-number@2.0.2` ([1187791](https://github.com/npm/cacache/commit/1187791)) 596* **deps:** removed inflight@1.0.6 ([0d1819c](https://github.com/npm/cacache/commit/0d1819c)) 597* **deps:** rimraf@2.6.1 ([9efab6b](https://github.com/npm/cacache/commit/9efab6b)) 598* **deps:** standard@9.0.0 ([4202cba](https://github.com/npm/cacache/commit/4202cba)) 599* **deps:** tap@10.3.0 ([aa03088](https://github.com/npm/cacache/commit/aa03088)) 600* **deps:** weallcontribute@1.0.8 ([ad4f4dc](https://github.com/npm/cacache/commit/ad4f4dc)) 601* **docs:** add security note to hashKey ([03f81ba](https://github.com/npm/cacache/commit/03f81ba)) 602* **hashes:** change default hashAlgorithm to sha512 ([ea00ba6](https://github.com/npm/cacache/commit/ea00ba6)) 603* **hashes:** missed a spot for hashAlgorithm defaults ([45997d8](https://github.com/npm/cacache/commit/45997d8)) 604* **index:** add length header before JSON for verification ([fb8cb4d](https://github.com/npm/cacache/commit/fb8cb4d)) 605* **index:** change index filenames to sha1s of keys ([bbc5fca](https://github.com/npm/cacache/commit/bbc5fca)) 606* **index:** who cares about race conditions anyway ([b1d3888](https://github.com/npm/cacache/commit/b1d3888)) 607* **perf:** bulk-read get+read for massive speed ([d26cdf9](https://github.com/npm/cacache/commit/d26cdf9)) 608* **perf:** use bulk file reads for index reads ([79a8891](https://github.com/npm/cacache/commit/79a8891)) 609* **put-stream:** remove tmp file on stream insert error ([65f6632](https://github.com/npm/cacache/commit/65f6632)) 610* **put-stream:** robustified and predictibilized ([daf9e08](https://github.com/npm/cacache/commit/daf9e08)) 611* **put-stream:** use new promise API for moves ([1d36013](https://github.com/npm/cacache/commit/1d36013)) 612* **readme:** updated to reflect new default hashAlgo ([c60a2fa](https://github.com/npm/cacache/commit/c60a2fa)) 613* **verify:** tiny typo fix ([db22d05](https://github.com/npm/cacache/commit/db22d05)) 614 615 616### Features 617 618* **api:** converted external api ([7bf032f](https://github.com/npm/cacache/commit/7bf032f)) 619* **cacache:** exported clearMemoized() utility ([8d2c5b6](https://github.com/npm/cacache/commit/8d2c5b6)) 620* **cache:** add versioning to content and index ([31bc549](https://github.com/npm/cacache/commit/31bc549)) 621* **content:** collate content files into subdirs ([c094d9f](https://github.com/npm/cacache/commit/c094d9f)) 622* **deps:** `@npmcorp/move@1.0.0` ([bdd00bf](https://github.com/npm/cacache/commit/bdd00bf)) 623* **deps:** `bluebird@3.4.7` ([3a17aff](https://github.com/npm/cacache/commit/3a17aff)) 624* **deps:** `promise-inflight@1.0.1` ([a004fe6](https://github.com/npm/cacache/commit/a004fe6)) 625* **get:** added memoization support for get ([c77d794](https://github.com/npm/cacache/commit/c77d794)) 626* **get:** export hasContent ([2956ec3](https://github.com/npm/cacache/commit/2956ec3)) 627* **index:** add hashAlgorithm and format insert ret val ([b639746](https://github.com/npm/cacache/commit/b639746)) 628* **index:** collate index files into subdirs ([e8402a5](https://github.com/npm/cacache/commit/e8402a5)) 629* **index:** promisify entry index ([cda3335](https://github.com/npm/cacache/commit/cda3335)) 630* **memo:** added memoization lib ([da07b92](https://github.com/npm/cacache/commit/da07b92)) 631* **memo:** export memoization api ([954b1b3](https://github.com/npm/cacache/commit/954b1b3)) 632* **move-file:** add move fallback for weird errors ([5cf4616](https://github.com/npm/cacache/commit/5cf4616)) 633* **perf:** bulk content write api ([51b536e](https://github.com/npm/cacache/commit/51b536e)) 634* **put:** added memoization support to put ([b613a70](https://github.com/npm/cacache/commit/b613a70)) 635* **read:** switched to promises ([a869362](https://github.com/npm/cacache/commit/a869362)) 636* **rm:** added memoization support to rm ([4205cf0](https://github.com/npm/cacache/commit/4205cf0)) 637* **rm:** switched to promises ([a000d24](https://github.com/npm/cacache/commit/a000d24)) 638* **util:** promise-inflight ownership fix requests ([9517cd7](https://github.com/npm/cacache/commit/9517cd7)) 639* **util:** use promises for api ([ae204bb](https://github.com/npm/cacache/commit/ae204bb)) 640* **verify:** converted to Promises ([f0b3974](https://github.com/npm/cacache/commit/f0b3974)) 641 642 643### BREAKING CHANGES 644 645* cache: index/content directories are now versioned. Previous caches are no longer compatible and cannot be migrated. 646* util: fix-owner now uses Promises instead of callbacks 647* index: Previously-generated index entries are no longer compatible and the index must be regenerated. 648* index: The index format has changed and previous caches are no longer compatible. Existing caches will need to be regenerated. 649* hashes: Default hashAlgorithm changed from sha1 to sha512. If you 650rely on the prior setting, pass `opts.hashAlgorithm` in explicitly. 651* content: Previously-generated content directories are no longer compatible 652and must be regenerated. 653* verify: API is now promise-based 654* read: Switches to a Promise-based API and removes callback stuff 655* rm: Switches to a Promise-based API and removes callback stuff 656* index: this changes the API to work off promises instead of callbacks 657* api: this means we are going all in on promises now 658