{\bfseries{Guiding Principles}}

All notable changes to this project will be documented in this file.

The format is based on \href{http://keepachangelog.com/en/1.0.0/}{\texttt{ Keep a Changelog}} and this project adheres to \href{http://semver.org/spec/v2.0.0.html}{\texttt{ Semantic Versioning}}.

$<$details$>$


\begin{DoxyItemize}
\item Changelogs are for humans, not machines.
\item There should be an entry for every single version.
\item The same types of changes should be grouped.
\item Versions and sections should be linkable.
\item The latest version comes first.
\item The release date of each versions is displayed.
\item Mention whether you follow Semantic Versioning.
\end{DoxyItemize}

$<$/details$>$

$<$details$>$

{\bfseries{Types of changes}} 

Changelog entries are classified using the following labels \+\_\+(from \href{http://keepachangelog.com/}{\texttt{ keep-\/a-\/changelog}}\+\_\+)\+:


\begin{DoxyItemize}
\item {\ttfamily Added} for new features.
\item {\ttfamily Changed} for changes in existing functionality.
\item {\ttfamily Deprecated} for soon-\/to-\/be removed features.
\item {\ttfamily Removed} for now removed features.
\item {\ttfamily Fixed} for any bug fixes.
\item {\ttfamily Security} in case of vulnerabilities.
\end{DoxyItemize}

$<$/details$>$\hypertarget{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17158}{}\doxysection{\mbox{[}4.\+0.\+0\mbox{]} -\/ 2019-\/03-\/20}\label{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17158}
\hypertarget{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17159}{}\doxysubsection{Added}\label{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17159}

\begin{DoxyItemize}
\item Adds support for {\ttfamily options.\+on\+Match}. See the readme for details
\item Adds support for {\ttfamily options.\+on\+Ignore}. See the readme for details
\item Adds support for {\ttfamily options.\+on\+Result}. See the readme for details
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17160}{}\doxysubsection{Breaking changes}\label{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17160}

\begin{DoxyItemize}
\item Removed support for passing an array of brace patterns to {\ttfamily micromatch.\+braces()}.
\item To strictly enforce closing brackets (for {\ttfamily \{}, {\ttfamily \mbox{[}}, and {\ttfamily (}), you must now use {\ttfamily strict\+Brackets=true} instead of {\ttfamily strict\+Errors}. ~\newline

\item {\ttfamily cache} -\/ caching and all related options and methods have been removed
\item {\ttfamily options.\+unixify} was renamed to {\ttfamily options.\+windows}
\item {\ttfamily options.\+nodupes} Was removed. Duplicates are always removed by default. You can override this with custom behavior by using the {\ttfamily on\+Match}, {\ttfamily on\+Result} and {\ttfamily on\+Ignore} functions.
\item {\ttfamily options.\+snapdragon} was removed, as snapdragon is no longer used.
\item {\ttfamily options.\+sourcemap} was removed, as snapdragon is no longer used, which provided sourcemap support.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17161}{}\doxysection{\mbox{[}3.\+0.\+0\mbox{]} -\/ 2017-\/04-\/11}\label{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17161}
Complete overhaul, with 36,000+ new unit tests validated against actual output generated by Bash and minimatch. More specifically, 35,000+ of the tests\+:


\begin{DoxyItemize}
\item micromatch results are directly compared to bash results
\item in rare cases, when micromatch and bash disagree, micromatch\textquotesingle{}s results are compared to minimatch\textquotesingle{}s results
\item micromatch is much more accurate than minimatch, so there were cases where I had to make assumptions. I\textquotesingle{}ll try to document these.
\end{DoxyItemize}

This refactor introduces a parser and compiler that are supersets of more granular parsers and compilers from other sub-\/modules. Each of these sub-\/modules has a singular responsibility and focuses on a certain type of matching that aligns with a specific part of the Bash \char`\"{}expansion\char`\"{} API.

These sub-\/modules work like plugins to seamlessly create the micromatch parser/compiler, so that strings are parsed in one pass, an \href{https://gist.github.com/jonschlinkert/099c8914f56529f75bc757cc9e5e8e2a}{\texttt{ AST is created}}, then a new string is generated by the compiler.

Here are those sub-\/modules with links to related prs on those modules if you want to see how they contribute to this code\+:

\href{https://github.com/jonschlinkert/nanomatch}{\texttt{ nanomatch}} (new library) -\/ glob expansion ({\ttfamily $\ast$}, {\ttfamily $\ast$$\ast$}, {\ttfamily ?} and {\ttfamily \mbox{[}...\mbox{]}})) \href{https://github.com/jonschlinkert/braces/pull/10}{\texttt{ braces}} -\/ brace expansion ({\ttfamily \{1..10\}}, {\ttfamily \{a,b,c\}}, etc) \href{https://github.com/jonschlinkert/extglob/pull/5}{\texttt{ extglob}} -\/ extended globs ({\ttfamily !(a$\vert$b)}, {\ttfamily @(!(foo$\vert$bar))}, etc) \href{https://github.com/jonschlinkert/expand-brackets/pull/5}{\texttt{ expand-\/brackets}} -\/ POSIX character classes {\ttfamily \mbox{[}\mbox{[}\+:alpha\+:\mbox{]}\mbox{[}\+:digit\+:\mbox{]}\mbox{]}}

{\bfseries{Added}}


\begin{DoxyItemize}
\item source map support (optionally created when using parse or compile -\/ I have no idea what the use case is yet, but they come for free) (note that source maps are not generated for brace expansion at present, since the braces compiler uses a different strategy. I\textquotesingle{}ll update if/when this changes).
\item parser is exposed, so that implementors can customize or override specific micromatch parsers if necessary
\item compiler is exposed, so that implementors can customize or override specific micromatch compilers if necessary
\end{DoxyItemize}

{\bfseries{Fixed}}


\begin{DoxyItemize}
\item more accurate matching (passes 100\% of Bash 4.\+3 of the brace expansion and extglob unit tests, as well as all Bash glob tests that are relevant to node.\+js usage, all minimatch tests, all brace-\/expansion tests, and also passes a couple of tests that bash fails)
\item even safer -\/ micromatch has always generated optimized patterns so it\textquotesingle{}s not subject to DoS exploits like minimatch (completely different than the regex DoS issue, minimatch and multimatch are still openly exposed to being used for DoS attacks), but more safeguards were built into this refactor
\end{DoxyItemize}

{\bfseries{Changed}}


\begin{DoxyItemize}
\item the public API of this library did not change in this version and should be safe to upgrade without changing implentor code. However, we have released this as a major version for the following reasons\+:
\begin{DoxyItemize}
\item out of an abundance of caution due to the large amount of code changed in this release
\item we have improved parser accuracy to such a degree that some implementors using invalid globs have noted change in behavior. If this is the case for you, please check that you are using a valid glob expression before logging a bug with this library
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17162}{}\doxysection{\mbox{[}1.\+0.\+1\mbox{]} -\/ 2016-\/12-\/12}\label{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17162}
{\bfseries{Added}}


\begin{DoxyItemize}
\item Support for windows path edge cases where backslashes are used in brackets or other unusual combinations.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17163}{}\doxysection{\mbox{[}1.\+0.\+0\mbox{]} -\/ 2016-\/12-\/12}\label{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17163}
Stable release.\hypertarget{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17164}{}\doxysection{\mbox{[}0.\+1.\+0\mbox{]} -\/ 2016-\/10-\/08}\label{md_sfcode_node_modules_micromatch_CHANGELOG_autotoc_md17164}
First release. 