All notable changes to this project will be documented in this file. See \href{https://github.com/conventional-changelog/standard-version}{\texttt{ standard-\/version}} for commit guidelines.\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19602}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v12.\+0.\+3...\+v12.\+0.\+4\char`\"{}$>$12.\+0.\+4$<$/a$>$ (2020-\/03-\/24)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19602}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19603}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v12.\+0.\+2...\+v12.\+0.\+3\char`\"{}$>$12.\+0.\+3$<$/a$>$ (2019-\/08-\/19)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19603}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19604}{}\doxysubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19604}

\begin{DoxyItemize}
\item do not chown if not running as root (\href{https://github.com/npm/cacache/commit/2d80af9}{\texttt{ 2d80af9}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19605}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v12.\+0.\+1...\+v12.\+0.\+2\char`\"{}$>$12.\+0.\+2$<$/a$>$ (2019-\/07-\/19)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19605}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19606}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v12.\+0.\+0...\+v12.\+0.\+1\char`\"{}$>$12.\+0.\+1$<$/a$>$ (2019-\/07-\/19)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19606}

\begin{DoxyItemize}
\item {\bfseries{deps}} Abstracted out {\ttfamily lib/util/infer-\/owner.\+js} to \href{https://www.npmjs.com/package/@npmcli/infer-owner}{\texttt{ @npmcli/infer-\/owner}} so that it could be more easily used in other parts of the npm CLI.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19607}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v11.\+3.\+3...\+v12.\+0.\+0\char`\"{}$>$12.\+0.\+0$<$/a$>$ (2019-\/07-\/15)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19607}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19608}{}\doxysubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19608}

\begin{DoxyItemize}
\item infer uid/gid instead of accepting as options (\href{https://github.com/npm/cacache/commit/ac84d14}{\texttt{ ac84d14}})
\item {\bfseries{i18n\+:}} add another error message (\href{https://github.com/npm/cacache/commit/676cb32}{\texttt{ 676cb32}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19609}{}\doxysubsection{BREAKING CHANGES}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19609}

\begin{DoxyItemize}
\item the uid gid options are no longer respected or necessary. As of this change, cacache will always match the cache contents to the ownership of the cache directory (or its parent directory), regardless of what the caller passes in.
\end{DoxyItemize}

Reasoning\+:

The number one reason to use a uid or gid option was to keep root-\/owned files from causing problems in the cache. In npm\textquotesingle{}s case, this meant that CLI\textquotesingle{}s ./lib/command.js had to work out the appropriate uid and gid, then pass it to the libnpmcommand module, which had to in turn pass the uid and gid to npm-\/registry-\/fetch, which then passed it to make-\/fetch-\/happen, which passed it to cacache. (For package fetching, pacote would be in that mix as well.)

Added to that, {\ttfamily cacache.\+rm()} will actually {\itshape write} a file into the cache index, but has no way to accept an option so that its call to entry-\/index.\+js will write the index with the appropriate uid/gid. Little ownership bugs were all over the place, and tricky to trace through. (Why should make-\/fetch-\/happen even care about accepting or passing uids and gids? It\textquotesingle{}s an http library.)

This change allows us to keep the cache from having mixed ownership in any situation.

Of course, this {\itshape does} mean that if you have a root-\/owned but user-\/writable folder (for example, {\ttfamily /tmp}), then the cache will try to chown everything to root.

The solution is for the user to create a folder, make it user-\/owned, and use that, rather than relying on cacache to create the root cache folder.

If we decide to restore the uid/gid opts, and use ownership inferrence only when uid/gid are unset, then take care to also make rm take an option object, and pass it through to entry-\/index.\+js.\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19610}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v11.\+3.\+2...\+v11.\+3.\+3\char`\"{}$>$11.\+3.\+3$<$/a$>$ (2019-\/06-\/17)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19610}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19611}{}\doxysubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19611}

\begin{DoxyItemize}
\item {\bfseries{audit\+:}} npm audit fix (\href{https://github.com/npm/cacache/commit/200a6d5}{\texttt{ 200a6d5}})
\item {\bfseries{config\+:}} Add ssri config \textquotesingle{}error\textquotesingle{} option (\href{https://github.com/npm/cacache/issues/146}{\texttt{ \#146}}) (\href{https://github.com/npm/cacache/commit/47de8f5}{\texttt{ 47de8f5}})
\item {\bfseries{deps\+:}} npm audit fix (\href{https://github.com/npm/cacache/commit/481a7dc}{\texttt{ 481a7dc}})
\item {\bfseries{standard\+:}} standard --fix (\href{https://github.com/npm/cacache/commit/7799149}{\texttt{ 7799149}})
\item {\bfseries{write\+:}} avoid another cb never called situation (\href{https://github.com/npm/cacache/commit/5156561}{\texttt{ 5156561}})
\end{DoxyItemize}

\label{_11.3.2}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19612}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v11.\+3.\+1...\+v11.\+3.\+2\char`\"{}$>$11.\+3.\+2$<$/a$>$ (2018-\/12-\/21)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19612}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19613}{}\doxysubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19613}

\begin{DoxyItemize}
\item {\bfseries{get\+:}} make sure to handle errors in the .then (\href{https://github.com/npm/cacache/commit/b10bcd0}{\texttt{ b10bcd0}})
\end{DoxyItemize}

\label{_11.3.1}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19614}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v11.\+3.\+0...\+v11.\+3.\+1\char`\"{}$>$11.\+3.\+1$<$/a$>$ (2018-\/11-\/05)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19614}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19615}{}\doxysubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19615}

\begin{DoxyItemize}
\item {\bfseries{get\+:}} export has\+Content.\+sync properly (\href{https://github.com/npm/cacache/commit/d76c920}{\texttt{ d76c920}})
\end{DoxyItemize}

\label{_11.3.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19616}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v11.\+2.\+0...\+v11.\+3.\+0\char`\"{}$>$11.\+3.\+0$<$/a$>$ (2018-\/11-\/05)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19616}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19617}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19617}

\begin{DoxyItemize}
\item {\bfseries{get\+:}} add sync API for reading (\href{https://github.com/npm/cacache/commit/db1e094}{\texttt{ db1e094}})
\end{DoxyItemize}

\label{_11.2.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19618}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v11.\+1.\+0...\+v11.\+2.\+0\char`\"{}$>$11.\+2.\+0$<$/a$>$ (2018-\/08-\/08)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19618}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19619}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19619}

\begin{DoxyItemize}
\item {\bfseries{read\+:}} add sync support to other internal read.\+js fns (\href{https://github.com/npm/cacache/commit/fe638b6}{\texttt{ fe638b6}})
\end{DoxyItemize}

\label{_11.1.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19620}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v11.\+0.\+3...\+v11.\+1.\+0\char`\"{}$>$11.\+1.\+0$<$/a$>$ (2018-\/08-\/01)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19620}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19621}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19621}

\begin{DoxyItemize}
\item {\bfseries{read\+:}} add sync support for low-\/level content read (\href{https://github.com/npm/cacache/commit/b43af83}{\texttt{ b43af83}})
\end{DoxyItemize}

\label{_11.0.3}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19622}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v11.\+0.\+2...\+v11.\+0.\+3\char`\"{}$>$11.\+0.\+3$<$/a$>$ (2018-\/08-\/01)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19622}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19623}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19623}

\begin{DoxyItemize}
\item {\bfseries{config\+:}} add ssri config options (\href{https://github.com/npm/cacache/issues/136}{\texttt{ \#136}}) (\href{https://github.com/npm/cacache/commit/10d5d9a}{\texttt{ 10d5d9a}})
\item {\bfseries{perf\+:}} refactor content.\+read to avoid lstats (\href{https://github.com/npm/cacache/commit/c5ac10e}{\texttt{ c5ac10e}})
\item {\bfseries{test\+:}} oops when removing safe-\/buffer (\href{https://github.com/npm/cacache/commit/1950490}{\texttt{ 1950490}})
\end{DoxyItemize}

\label{_11.0.2}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19624}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v11.\+0.\+1...\+v11.\+0.\+2\char`\"{}$>$11.\+0.\+2$<$/a$>$ (2018-\/05-\/07)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19624}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19625}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19625}

\begin{DoxyItemize}
\item {\bfseries{verify\+:}} size param no longer lost in a verify (\href{https://github.com/npm/cacache/issues/131}{\texttt{ \#131}}) (\href{https://github.com/npm/cacache/commit/c614a19}{\texttt{ c614a19}}), closes \href{https://github.com/npm/cacache/issues/130}{\texttt{ \#130}}
\end{DoxyItemize}

\label{_11.0.1}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19626}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v11.\+0.\+0...\+v11.\+0.\+1\char`\"{}$>$11.\+0.\+1$<$/a$>$ (2018-\/04-\/10)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19626}
\label{_11.0.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19627}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v10.\+0.\+4...\+v11.\+0.\+0\char`\"{}$>$11.\+0.\+0$<$/a$>$ (2018-\/04-\/09)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19627}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19628}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19628}

\begin{DoxyItemize}
\item {\bfseries{opts\+:}} use figgy-\/pudding for opts (\href{https://github.com/npm/cacache/issues/128}{\texttt{ \#128}}) (\href{https://github.com/npm/cacache/commit/33d4eed}{\texttt{ 33d4eed}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19629}{}\doxysubsubsection{meta}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19629}

\begin{DoxyItemize}
\item drop support for node@4 (\href{https://github.com/npm/cacache/commit/529f347}{\texttt{ 529f347}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19630}{}\doxysubsubsection{BREAKING CHANGES}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19630}

\begin{DoxyItemize}
\item node@4 is no longer supported
\end{DoxyItemize}

\label{_10.0.4}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19631}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v10.\+0.\+3...\+v10.\+0.\+4\char`\"{}$>$10.\+0.\+4$<$/a$>$ (2018-\/02-\/16)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19631}
\label{_10.0.3}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19632}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v10.\+0.\+2...\+v10.\+0.\+3\char`\"{}$>$10.\+0.\+3$<$/a$>$ (2018-\/02-\/16)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19632}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19633}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19633}

\begin{DoxyItemize}
\item {\bfseries{content\+:}} rethrow aggregate errors as ENOENT (\href{https://github.com/npm/cacache/commit/fa918f5}{\texttt{ fa918f5}})
\end{DoxyItemize}

\label{_10.0.2}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19634}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v10.\+0.\+1...\+v10.\+0.\+2\char`\"{}$>$10.\+0.\+2$<$/a$>$ (2018-\/01-\/07)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19634}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19635}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19635}

\begin{DoxyItemize}
\item {\bfseries{ls\+:}} deleted entries could cause a premature stream EOF (\href{https://github.com/npm/cacache/commit/347dc36}{\texttt{ 347dc36}})
\end{DoxyItemize}

\label{_10.0.1}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19636}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v10.\+0.\+0...\+v10.\+0.\+1\char`\"{}$>$10.\+0.\+1$<$/a$>$ (2017-\/11-\/15)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19636}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19637}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19637}

\begin{DoxyItemize}
\item {\bfseries{move-\/file\+:}} actually use the fallback to {\ttfamily move-\/concurrently} (\#110) (\href{https://github.com/npm/cacache/commit/073fbe1}{\texttt{ 073fbe1}})
\end{DoxyItemize}

\label{_10.0.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19638}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+3.\+0...\+v10.\+0.\+0\char`\"{}$>$10.\+0.\+0$<$/a$>$ (2017-\/10-\/23)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19638}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19639}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19639}

\begin{DoxyItemize}
\item {\bfseries{license\+:}} relicense to ISC (\#111) (\href{https://github.com/npm/cacache/commit/fdbb4e5}{\texttt{ fdbb4e5}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19640}{}\doxysubsubsection{Performance Improvements}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19640}

\begin{DoxyItemize}
\item more copy\+File benchmarks (\href{https://github.com/npm/cacache/commit/63787bb}{\texttt{ 63787bb}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19641}{}\doxysubsubsection{BREAKING CHANGES}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19641}

\begin{DoxyItemize}
\item {\bfseries{license\+:}} the license has been changed from CC0-\/1.\+0 to ISC.
\end{DoxyItemize}

\label{_9.3.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19642}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+2.\+9...\+v9.\+3.\+0\char`\"{}$>$9.\+3.\+0$<$/a$>$ (2017-\/10-\/07)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19642}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19643}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19643}

\begin{DoxyItemize}
\item {\bfseries{copy\+:}} added cacache.\+get.\+copy api for fast copies (\#107) (\href{https://github.com/npm/cacache/commit/067b5f6}{\texttt{ 067b5f6}})
\end{DoxyItemize}

\label{_9.2.9}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19644}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+2.\+8...\+v9.\+2.\+9\char`\"{}$>$9.\+2.\+9$<$/a$>$ (2017-\/06-\/17)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19644}
\label{_9.2.8}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19645}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+2.\+7...\+v9.\+2.\+8\char`\"{}$>$9.\+2.\+8$<$/a$>$ (2017-\/06-\/05)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19645}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19646}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19646}

\begin{DoxyItemize}
\item {\bfseries{ssri\+:}} bump ssri for bugfix (\href{https://github.com/npm/cacache/commit/c3232ea}{\texttt{ c3232ea}})
\end{DoxyItemize}

\label{_9.2.7}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19647}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+2.\+6...\+v9.\+2.\+7\char`\"{}$>$9.\+2.\+7$<$/a$>$ (2017-\/06-\/05)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19647}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19648}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19648}

\begin{DoxyItemize}
\item {\bfseries{content\+:}} make verified content completely read-\/only (\#96) (\href{https://github.com/npm/cacache/commit/4131196}{\texttt{ 4131196}})
\end{DoxyItemize}

\label{_9.2.6}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19649}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+2.\+5...\+v9.\+2.\+6\char`\"{}$>$9.\+2.\+6$<$/a$>$ (2017-\/05-\/31)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19649}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19650}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19650}

\begin{DoxyItemize}
\item {\bfseries{node\+:}} update ssri to prevent old node 4 crash (\href{https://github.com/npm/cacache/commit/5209ffe}{\texttt{ 5209ffe}})
\end{DoxyItemize}

\label{_9.2.5}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19651}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+2.\+4...\+v9.\+2.\+5\char`\"{}$>$9.\+2.\+5$<$/a$>$ (2017-\/05-\/25)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19651}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19652}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19652}

\begin{DoxyItemize}
\item {\bfseries{deps\+:}} fix lockfile issues and bump ssri (\href{https://github.com/npm/cacache/commit/84e1d7e}{\texttt{ 84e1d7e}})
\end{DoxyItemize}

\label{_9.2.4}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19653}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+2.\+3...\+v9.\+2.\+4\char`\"{}$>$9.\+2.\+4$<$/a$>$ (2017-\/05-\/24)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19653}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19654}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19654}

\begin{DoxyItemize}
\item {\bfseries{deps\+:}} bumping deps (\href{https://github.com/npm/cacache/commit/bbccb12}{\texttt{ bbccb12}})
\end{DoxyItemize}

\label{_9.2.3}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19655}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+2.\+2...\+v9.\+2.\+3\char`\"{}$>$9.\+2.\+3$<$/a$>$ (2017-\/05-\/24)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19655}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19656}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19656}

\begin{DoxyItemize}
\item {\bfseries{rm\+:}} stop crashing if content is missing on rm (\href{https://github.com/npm/cacache/commit/ac90bc0}{\texttt{ ac90bc0}})
\end{DoxyItemize}

\label{_9.2.2}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19657}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+2.\+1...\+v9.\+2.\+2\char`\"{}$>$9.\+2.\+2$<$/a$>$ (2017-\/05-\/14)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19657}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19658}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19658}

\begin{DoxyItemize}
\item {\bfseries{i18n\+:}} lets pretend this didn\textquotesingle{}t happen (\href{https://github.com/npm/cacache/commit/519b4ee}{\texttt{ 519b4ee}})
\end{DoxyItemize}

\label{_9.2.1}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19659}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+2.\+0...\+v9.\+2.\+1\char`\"{}$>$9.\+2.\+1$<$/a$>$ (2017-\/05-\/14)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19659}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19660}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19660}

\begin{DoxyItemize}
\item {\bfseries{docs\+:}} fixing translation messup (\href{https://github.com/npm/cacache/commit/bb9e4f9}{\texttt{ bb9e4f9}})
\end{DoxyItemize}

\label{_9.2.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19661}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+1.\+0...\+v9.\+2.\+0\char`\"{}$>$9.\+2.\+0$<$/a$>$ (2017-\/05-\/14)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19661}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19662}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19662}

\begin{DoxyItemize}
\item {\bfseries{i18n\+:}} add Spanish translation for API (\href{https://github.com/npm/cacache/commit/531f9a4}{\texttt{ 531f9a4}})
\end{DoxyItemize}

\label{_9.1.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19663}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v9.\+0.\+0...\+v9.\+1.\+0\char`\"{}$>$9.\+1.\+0$<$/a$>$ (2017-\/05-\/14)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19663}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19664}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19664}

\begin{DoxyItemize}
\item {\bfseries{i18n\+:}} Add Spanish translation and i18n setup (\#91) (\href{https://github.com/npm/cacache/commit/323b90c}{\texttt{ 323b90c}})
\end{DoxyItemize}

\label{_9.0.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19665}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v8.\+0.\+0...\+v9.\+0.\+0\char`\"{}$>$9.\+0.\+0$<$/a$>$ (2017-\/04-\/28)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19665}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19666}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19666}

\begin{DoxyItemize}
\item {\bfseries{memoization\+:}} actually use the LRU (\href{https://github.com/npm/cacache/commit/0e55dc9}{\texttt{ 0e55dc9}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19667}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19667}

\begin{DoxyItemize}
\item {\bfseries{memoization\+:}} memoizers can be injected through opts.\+memoize (\#90) (\href{https://github.com/npm/cacache/commit/e5614c7}{\texttt{ e5614c7}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19668}{}\doxysubsubsection{BREAKING CHANGES}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19668}

\begin{DoxyItemize}
\item {\bfseries{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.
\end{DoxyItemize}

\label{_8.0.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19669}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v7.\+1.\+0...\+v8.\+0.\+0\char`\"{}$>$8.\+0.\+0$<$/a$>$ (2017-\/04-\/22)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19669}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19670}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19670}

\begin{DoxyItemize}
\item {\bfseries{read\+:}} change has\+Content to return \{sri, size\} (\#88) (\href{https://github.com/npm/cacache/commit/bad6c49}{\texttt{ bad6c49}}), closes \href{https://github.com/npm/cacache/issues/87}{\texttt{ \#87}}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19671}{}\doxysubsubsection{BREAKING CHANGES}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19671}

\begin{DoxyItemize}
\item {\bfseries{read\+:}} has\+Content now returns an object with {\ttfamily \{sri, size\}} instead of {\ttfamily sri}. Use {\ttfamily result.\+sri} anywhere that needed the old return value.
\end{DoxyItemize}

\label{_7.1.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19672}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v7.\+0.\+5...\+v7.\+1.\+0\char`\"{}$>$7.\+1.\+0$<$/a$>$ (2017-\/04-\/20)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19672}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19673}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19673}

\begin{DoxyItemize}
\item {\bfseries{size\+:}} handle content size info (\#49) (\href{https://github.com/npm/cacache/commit/91230af}{\texttt{ 91230af}})
\end{DoxyItemize}

\label{_7.0.5}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19674}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v7.\+0.\+4...\+v7.\+0.\+5\char`\"{}$>$7.\+0.\+5$<$/a$>$ (2017-\/04-\/18)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19674}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19675}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19675}

\begin{DoxyItemize}
\item {\bfseries{integrity\+:}} new ssri with fixed integrity stream (\href{https://github.com/npm/cacache/commit/6d13e8e}{\texttt{ 6d13e8e}})
\item {\bfseries{write\+:}} wrap stuff in promises to improve errors (\href{https://github.com/npm/cacache/commit/3624fc5}{\texttt{ 3624fc5}})
\end{DoxyItemize}

\label{_7.0.4}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19676}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v7.\+0.\+3...\+v7.\+0.\+4\char`\"{}$>$7.\+0.\+4$<$/a$>$ (2017-\/04-\/15)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19676}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19677}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19677}

\begin{DoxyItemize}
\item {\bfseries{fix-\/owner\+:}} throw away ENOENTs on chownr (\href{https://github.com/npm/cacache/commit/d49bbcd}{\texttt{ d49bbcd}})
\end{DoxyItemize}

\label{_7.0.3}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19678}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v7.\+0.\+2...\+v7.\+0.\+3\char`\"{}$>$7.\+0.\+3$<$/a$>$ (2017-\/04-\/05)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19678}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19679}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19679}

\begin{DoxyItemize}
\item {\bfseries{read\+:}} fixing error message for integrity verification failures (\href{https://github.com/npm/cacache/commit/9d4f0a5}{\texttt{ 9d4f0a5}})
\end{DoxyItemize}

\label{_7.0.2}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19680}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v7.\+0.\+1...\+v7.\+0.\+2\char`\"{}$>$7.\+0.\+2$<$/a$>$ (2017-\/04-\/03)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19680}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19681}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19681}

\begin{DoxyItemize}
\item {\bfseries{integrity\+:}} use EINTEGRITY error code and update ssri (\href{https://github.com/npm/cacache/commit/8dc2e62}{\texttt{ 8dc2e62}})
\end{DoxyItemize}

\label{_7.0.1}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19682}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v7.\+0.\+0...\+v7.\+0.\+1\char`\"{}$>$7.\+0.\+1$<$/a$>$ (2017-\/04-\/03)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19682}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19683}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19683}

\begin{DoxyItemize}
\item {\bfseries{docs\+:}} fix header name conflict in readme (\href{https://github.com/npm/cacache/commit/afcd456}{\texttt{ afcd456}})
\end{DoxyItemize}

\label{_7.0.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19684}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v6.\+3.\+0...\+v7.\+0.\+0\char`\"{}$>$7.\+0.\+0$<$/a$>$ (2017-\/04-\/03)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19684}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19685}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19685}

\begin{DoxyItemize}
\item {\bfseries{test\+:}} fix content.\+write tests when running in docker (\href{https://github.com/npm/cacache/commit/d2e9b6a}{\texttt{ d2e9b6a}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19686}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19686}

\begin{DoxyItemize}
\item {\bfseries{integrity\+:}} subresource integrity support (\#78) (\href{https://github.com/npm/cacache/commit/b1e731f}{\texttt{ b1e731f}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19687}{}\doxysubsubsection{BREAKING CHANGES}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19687}

\begin{DoxyItemize}
\item {\bfseries{integrity\+:}} The entire API has been overhauled to use SRI hashes instead of digest/hash\+Algorithm pairs. SRI hashes follow the Subresource Integrity standard and support strings and objects compatible with \href{https://npm.im/ssri}{\texttt{ {\ttfamily ssri}}}.
\item 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.
\item {\ttfamily cacache.\+get.\+info()}, {\ttfamily cacache.\+ls()}, and {\ttfamily cacache.\+ls.\+stream()} will now return objects that looks like this\+:
\end{DoxyItemize}


\begin{DoxyCode}{0}
\DoxyCodeLine{\{}
\DoxyCodeLine{  key: String,}
\DoxyCodeLine{  integrity: '<algorithm>-\/<base64hash>',}
\DoxyCodeLine{  path: ContentPath,}
\DoxyCodeLine{  time: Date<ms>,}
\DoxyCodeLine{  metadata: Any}
\DoxyCodeLine{\} }

\end{DoxyCode}



\begin{DoxyItemize}
\item {\ttfamily opts.\+digest} and {\ttfamily opts.\+hash\+Algorithm} are obsolete for any API calls that used them.
\item Anywhere {\ttfamily opts.\+digest} was accepted, {\ttfamily 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 \char`\"{}strongest\char`\"{} 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 {\itshape any} of the entries match (so, a single integrity string can be used for multiple \char`\"{}versions\char`\"{} of the same document/data).
\item {\ttfamily put.\+by\+Digest()}, {\ttfamily put.\+stream.\+by\+Digest}, {\ttfamily get.\+by\+Digest()} and {\ttfamily get.\+stream.\+by\+Digest()} now expect an SRI instead of a {\ttfamily digest} + {\ttfamily opts.\+hash\+Algorithm} pairing.
\item {\ttfamily get.\+has\+Content()} 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.
\item {\ttfamily verify()} has learned to handle integrity-\/based caches, and forgotten how to handle old-\/style cache indices due to the format change.
\item {\ttfamily cacache.\+rm.\+content()} now expects an integrity hash instead of a hex digest.
\end{DoxyItemize}

\label{_6.3.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19688}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v6.\+2.\+0...\+v6.\+3.\+0\char`\"{}$>$6.\+3.\+0$<$/a$>$ (2017-\/04-\/01)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19688}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19689}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19689}

\begin{DoxyItemize}
\item {\bfseries{fix\+Owner\+:}} ignore EEXIST race condition from mkdirp (\href{https://github.com/npm/cacache/commit/4670e9b}{\texttt{ 4670e9b}})
\item {\bfseries{index\+:}} ignore index removal races when inserting (\href{https://github.com/npm/cacache/commit/b9d2fa2}{\texttt{ b9d2fa2}})
\item {\bfseries{memo\+:}} use lru-\/cache for better mem management (\#75) (\href{https://github.com/npm/cacache/commit/d8ac5aa}{\texttt{ d8ac5aa}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19690}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19690}

\begin{DoxyItemize}
\item {\bfseries{dependencies\+:}} Switch to move-\/concurrently (\#77) (\href{https://github.com/npm/cacache/commit/dc6482d}{\texttt{ dc6482d}})
\end{DoxyItemize}

\label{_6.2.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19691}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v6.\+1.\+2...\+v6.\+2.\+0\char`\"{}$>$6.\+2.\+0$<$/a$>$ (2017-\/03-\/15)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19691}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19692}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19692}

\begin{DoxyItemize}
\item {\bfseries{index\+:}} additional bucket entry verification with checksum (\#72) (\href{https://github.com/npm/cacache/commit/f8e0f25}{\texttt{ f8e0f25}})
\item {\bfseries{verify\+:}} return fix\+Owner.\+chownr promise (\href{https://github.com/npm/cacache/commit/6818521}{\texttt{ 6818521}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19693}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19693}

\begin{DoxyItemize}
\item {\bfseries{tmp\+:}} safe tmp dir creation/management util (\#73) (\href{https://github.com/npm/cacache/commit/c42da71}{\texttt{ c42da71}})
\end{DoxyItemize}

\label{_6.1.2}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19694}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v6.\+1.\+1...\+v6.\+1.\+2\char`\"{}$>$6.\+1.\+2$<$/a$>$ (2017-\/03-\/13)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19694}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19695}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19695}

\begin{DoxyItemize}
\item {\bfseries{index\+:}} set default hash\+Algorithm (\href{https://github.com/npm/cacache/commit/d6eb2f0}{\texttt{ d6eb2f0}})
\end{DoxyItemize}

\label{_6.1.1}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19696}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v6.\+1.\+0...\+v6.\+1.\+1\char`\"{}$>$6.\+1.\+1$<$/a$>$ (2017-\/03-\/13)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19696}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19697}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19697}

\begin{DoxyItemize}
\item {\bfseries{coverage\+:}} bumping coverage for verify (\#71) (\href{https://github.com/npm/cacache/commit/0b7faf6}{\texttt{ 0b7faf6}})
\item {\bfseries{deps\+:}} glob should have been a regular dep \+:$<$ (\href{https://github.com/npm/cacache/commit/0640bc4}{\texttt{ 0640bc4}})
\end{DoxyItemize}

\label{_6.1.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19698}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v6.\+0.\+2...\+v6.\+1.\+0\char`\"{}$>$6.\+1.\+0$<$/a$>$ (2017-\/03-\/12)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19698}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19699}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19699}

\begin{DoxyItemize}
\item {\bfseries{coverage\+:}} more coverage for content reads (\#70) (\href{https://github.com/npm/cacache/commit/ef4f70a}{\texttt{ ef4f70a}})
\item {\bfseries{tests\+:}} use safe-\/buffer because omfg (\#69) (\href{https://github.com/npm/cacache/commit/6ab8132}{\texttt{ 6ab8132}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19700}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19700}

\begin{DoxyItemize}
\item {\bfseries{rm\+:}} limited rm.\+all and fixed bugs (\#66) (\href{https://github.com/npm/cacache/commit/d5d25ba}{\texttt{ d5d25ba}}), closes \href{https://github.com/npm/cacache/issues/66}{\texttt{ \#66}}
\item {\bfseries{verify\+:}} tested, working cache verifier/gc (\#68) (\href{https://github.com/npm/cacache/commit/45ad77a}{\texttt{ 45ad77a}})
\end{DoxyItemize}

\label{_6.0.2}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19701}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v6.\+0.\+1...\+v6.\+0.\+2\char`\"{}$>$6.\+0.\+2$<$/a$>$ (2017-\/03-\/11)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19701}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19702}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19702}

\begin{DoxyItemize}
\item {\bfseries{index\+:}} segment cache items with another subbucket (\#64) (\href{https://github.com/npm/cacache/commit/c3644e5}{\texttt{ c3644e5}})
\end{DoxyItemize}

\label{_6.0.1}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19703}{}\doxysubsection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v6.\+0.\+0...\+v6.\+0.\+1\char`\"{}$>$6.\+0.\+1$<$/a$>$ (2017-\/03-\/05)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19703}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19704}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19704}

\begin{DoxyItemize}
\item {\bfseries{docs\+:}} Missed spots in README (\href{https://github.com/npm/cacache/commit/8ffb7fa}{\texttt{ 8ffb7fa}})
\end{DoxyItemize}

\label{_6.0.0}%
 \hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19705}{}\doxysection{$<$a href=\char`\"{}https\+://github.\+com/npm/cacache/compare/v5.\+0.\+3...\+v6.\+0.\+0\char`\"{}$>$6.\+0.\+0$<$/a$>$ (2017-\/03-\/05)}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19705}
\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19706}{}\doxysubsubsection{Bug Fixes}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19706}

\begin{DoxyItemize}
\item {\bfseries{api\+:}} keep memo cache mostly-\/internal (\href{https://github.com/npm/cacache/commit/2f72d0a}{\texttt{ 2f72d0a}})
\item {\bfseries{content\+:}} use the rest of the string, not the whole string (\href{https://github.com/npm/cacache/commit/fa8f3c3}{\texttt{ fa8f3c3}})
\item {\bfseries{deps\+:}} removed {\ttfamily format-\/number@2.\+0.\+2} (\href{https://github.com/npm/cacache/commit/1187791}{\texttt{ 1187791}})
\item {\bfseries{deps\+:}} removed inflight@1.\+0.\+6 (\href{https://github.com/npm/cacache/commit/0d1819c}{\texttt{ 0d1819c}})
\item {\bfseries{deps\+:}} rimraf@2.\+6.\+1 (\href{https://github.com/npm/cacache/commit/9efab6b}{\texttt{ 9efab6b}})
\item {\bfseries{deps\+:}} standard@9.\+0.\+0 (\href{https://github.com/npm/cacache/commit/4202cba}{\texttt{ 4202cba}})
\item {\bfseries{deps\+:}} tap@10.\+3.\+0 (\href{https://github.com/npm/cacache/commit/aa03088}{\texttt{ aa03088}})
\item {\bfseries{deps\+:}} weallcontribute@1.\+0.\+8 (\href{https://github.com/npm/cacache/commit/ad4f4dc}{\texttt{ ad4f4dc}})
\item {\bfseries{docs\+:}} add security note to hash\+Key (\href{https://github.com/npm/cacache/commit/03f81ba}{\texttt{ 03f81ba}})
\item {\bfseries{hashes\+:}} change default hash\+Algorithm to sha512 (\href{https://github.com/npm/cacache/commit/ea00ba6}{\texttt{ ea00ba6}})
\item {\bfseries{hashes\+:}} missed a spot for hash\+Algorithm defaults (\href{https://github.com/npm/cacache/commit/45997d8}{\texttt{ 45997d8}})
\item {\bfseries{index\+:}} add length header before JSON for verification (\href{https://github.com/npm/cacache/commit/fb8cb4d}{\texttt{ fb8cb4d}})
\item {\bfseries{index\+:}} change index filenames to sha1s of keys (\href{https://github.com/npm/cacache/commit/bbc5fca}{\texttt{ bbc5fca}})
\item {\bfseries{index\+:}} who cares about race conditions anyway (\href{https://github.com/npm/cacache/commit/b1d3888}{\texttt{ b1d3888}})
\item {\bfseries{perf\+:}} bulk-\/read get+read for massive speed (\href{https://github.com/npm/cacache/commit/d26cdf9}{\texttt{ d26cdf9}})
\item {\bfseries{perf\+:}} use bulk file reads for index reads (\href{https://github.com/npm/cacache/commit/79a8891}{\texttt{ 79a8891}})
\item {\bfseries{put-\/stream\+:}} remove tmp file on stream insert error (\href{https://github.com/npm/cacache/commit/65f6632}{\texttt{ 65f6632}})
\item {\bfseries{put-\/stream\+:}} robustified and predictibilized (\href{https://github.com/npm/cacache/commit/daf9e08}{\texttt{ daf9e08}})
\item {\bfseries{put-\/stream\+:}} use new promise API for moves (\href{https://github.com/npm/cacache/commit/1d36013}{\texttt{ 1d36013}})
\item {\bfseries{readme\+:}} updated to reflect new default hash\+Algo (\href{https://github.com/npm/cacache/commit/c60a2fa}{\texttt{ c60a2fa}})
\item {\bfseries{verify\+:}} tiny typo fix (\href{https://github.com/npm/cacache/commit/db22d05}{\texttt{ db22d05}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19707}{}\doxysubsubsection{Features}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19707}

\begin{DoxyItemize}
\item {\bfseries{api\+:}} converted external api (\href{https://github.com/npm/cacache/commit/7bf032f}{\texttt{ 7bf032f}})
\item {\bfseries{cacache\+:}} exported clear\+Memoized() utility (\href{https://github.com/npm/cacache/commit/8d2c5b6}{\texttt{ 8d2c5b6}})
\item {\bfseries{cache\+:}} add versioning to content and index (\href{https://github.com/npm/cacache/commit/31bc549}{\texttt{ 31bc549}})
\item {\bfseries{content\+:}} collate content files into subdirs (\href{https://github.com/npm/cacache/commit/c094d9f}{\texttt{ c094d9f}})
\item {\bfseries{deps\+:}} {\ttfamily @npmcorp/move@1.\+0.\+0} (\href{https://github.com/npm/cacache/commit/bdd00bf}{\texttt{ bdd00bf}})
\item {\bfseries{deps\+:}} {\ttfamily bluebird@3.\+4.\+7} (\href{https://github.com/npm/cacache/commit/3a17aff}{\texttt{ 3a17aff}})
\item {\bfseries{deps\+:}} {\ttfamily promise-\/inflight@1.\+0.\+1} (\href{https://github.com/npm/cacache/commit/a004fe6}{\texttt{ a004fe6}})
\item {\bfseries{get\+:}} added memoization support for get (\href{https://github.com/npm/cacache/commit/c77d794}{\texttt{ c77d794}})
\item {\bfseries{get\+:}} export has\+Content (\href{https://github.com/npm/cacache/commit/2956ec3}{\texttt{ 2956ec3}})
\item {\bfseries{index\+:}} add hash\+Algorithm and format insert ret val (\href{https://github.com/npm/cacache/commit/b639746}{\texttt{ b639746}})
\item {\bfseries{index\+:}} collate index files into subdirs (\href{https://github.com/npm/cacache/commit/e8402a5}{\texttt{ e8402a5}})
\item {\bfseries{index\+:}} promisify entry index (\href{https://github.com/npm/cacache/commit/cda3335}{\texttt{ cda3335}})
\item {\bfseries{memo\+:}} added memoization lib (\href{https://github.com/npm/cacache/commit/da07b92}{\texttt{ da07b92}})
\item {\bfseries{memo\+:}} export memoization api (\href{https://github.com/npm/cacache/commit/954b1b3}{\texttt{ 954b1b3}})
\item {\bfseries{move-\/file\+:}} add move fallback for weird errors (\href{https://github.com/npm/cacache/commit/5cf4616}{\texttt{ 5cf4616}})
\item {\bfseries{perf\+:}} bulk content write api (\href{https://github.com/npm/cacache/commit/51b536e}{\texttt{ 51b536e}})
\item {\bfseries{put\+:}} added memoization support to put (\href{https://github.com/npm/cacache/commit/b613a70}{\texttt{ b613a70}})
\item {\bfseries{read\+:}} switched to promises (\href{https://github.com/npm/cacache/commit/a869362}{\texttt{ a869362}})
\item {\bfseries{rm\+:}} added memoization support to rm (\href{https://github.com/npm/cacache/commit/4205cf0}{\texttt{ 4205cf0}})
\item {\bfseries{rm\+:}} switched to promises (\href{https://github.com/npm/cacache/commit/a000d24}{\texttt{ a000d24}})
\item {\bfseries{util\+:}} promise-\/inflight ownership fix requests (\href{https://github.com/npm/cacache/commit/9517cd7}{\texttt{ 9517cd7}})
\item {\bfseries{util\+:}} use promises for api (\href{https://github.com/npm/cacache/commit/ae204bb}{\texttt{ ae204bb}})
\item {\bfseries{verify\+:}} converted to Promises (\href{https://github.com/npm/cacache/commit/f0b3974}{\texttt{ f0b3974}})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19708}{}\doxysubsubsection{BREAKING CHANGES}\label{md_sfcode_node_modules_pacote_node_modules_cacache_CHANGELOG_autotoc_md19708}

\begin{DoxyItemize}
\item cache\+: index/content directories are now versioned. Previous caches are no longer compatible and cannot be migrated.
\item util\+: fix-\/owner now uses Promises instead of callbacks
\item index\+: Previously-\/generated index entries are no longer compatible and the index must be regenerated.
\item index\+: The index format has changed and previous caches are no longer compatible. Existing caches will need to be regenerated.
\item hashes\+: Default hash\+Algorithm changed from sha1 to sha512. If you rely on the prior setting, pass {\ttfamily opts.\+hash\+Algorithm} in explicitly.
\item content\+: Previously-\/generated content directories are no longer compatible and must be regenerated.
\item verify\+: API is now promise-\/based
\item read\+: Switches to a Promise-\/based API and removes callback stuff
\item rm\+: Switches to a Promise-\/based API and removes callback stuff
\item index\+: this changes the API to work off promises instead of callbacks
\item api\+: this means we are going all in on promises now 
\end{DoxyItemize}