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