All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
* look up schema from entrypoint rather than cwd (fixes [#1023](https://github.com/ssube/salty-dog/issues/1023)) ([f40a52a](https://github.com/ssube/salty-dog/commit/f40a52a3832f03d2bdf276c5deaca61f8840788a))
* use built in schema when executing container command ([5768224](https://github.com/ssube/salty-dog/commit/5768224b72339971f81a9d1010f5146265c8dc81))
* **build:** better error handling for image build ([c9fd4f1](https://github.com/ssube/salty-dog/commit/c9fd4f13bdd6d2b54acdeafd37aeddbf02058afc))
* **deps:** upgrade Typescript to 4.5, improve config and rule module error handling ([bdf88f0](https://github.com/ssube/salty-dog/commit/bdf88f092e688bce9dc5845fc5149d184e483850))
### Bug Fixes
* **build:** add shebang to bundle before imaging ([ee41f60](https://github.com/ssube/salty-dog/commit/ee41f60d8c588fa0d1a8a10749f9082d9af7348f))
* **build:** bundle during CI run ([80b7f69](https://github.com/ssube/salty-dog/commit/80b7f698ef732bc538229f198dee56e5590fd210))
* **build:** move project-specific targets into their own file ([0fd8ea9](https://github.com/ssube/salty-dog/commit/0fd8ea9d5c3b16fa843a3e513875c3cc6ebd444b))
* **build:** prevent unintentional exit from image script ([189b3e2](https://github.com/ssube/salty-dog/commit/189b3e202ec65f8a6b9b66a4ead82d3d21769464))
* **build:** silence package metadata warnings when jq is not installed ([86aeac5](https://github.com/ssube/salty-dog/commit/86aeac58519f626cb9ca9b7611fb204323bf1b47))
* this is not breaking for users, but for library users,
some bundling or a runtime supporting ES modules is now required.
* updates Ajv from v6 to v8, with the breaking
changes included there (https://ajv.js.org/v6-to-v8-migration.html).
This removes support for JSON-Schema draft-04 and adds new
drafts and keywords.
* this changes how directories are listed, by replacing
the recursive-readdir module with node's readdir method, and a custom
implementation that is compatible with the changes to Node 16's fs
implementation for testing.
### Features
* **build:** bundle with esbuild ([4188452](https://github.com/ssube/salty-dog/commit/41884525dab702f47202d7036fee74a01497954d))
* convert to ES modules, C8 for coverage ([cea8c8a](https://github.com/ssube/salty-dog/commit/cea8c8abffad162766cc0f5568d718950054439d))
* list files using node's fs module instead of recursive-readdir ([e7e42ee](https://github.com/ssube/salty-dog/commit/e7e42eee896c3eda0eb8c207fbbef285f181dc6d))
* **build:** build file include paths ([07cd12b](https://github.com/ssube/salty-dog/commit/07cd12bed50c289e9a65d69f9f8a645107168033))
* **build:** interpolate bundle with version metadata ([2893437](https://github.com/ssube/salty-dog/commit/2893437718b7006d8cdada7a868e4668366d3e99))
* **build:** make example test script compatible with container build targets ([bbadd3e](https://github.com/ssube/salty-dog/commit/bbadd3e82cb4b56af5f68d5ff0c376fb433c9687))
* **build:** paths for API docs/types, podman and lockfile for image targets ([557d285](https://github.com/ssube/salty-dog/commit/557d2851a81c63dd55af1f425eaaa41aff143477))
* **build:** reduce output from example tests ([a6b05d9](https://github.com/ssube/salty-dog/commit/a6b05d9c764fcc4d844718ed674ebdb49e23eb63))
* **build:** set docker TLS options ([dd9023e](https://github.com/ssube/salty-dog/commit/dd9023ec8b16c46f96bf1226a7288c71fd3261cc))
* **build:** use node 16 for container build targets ([2970837](https://github.com/ssube/salty-dog/commit/29708372153abece305c9c44d97b49851cce6330))
* **build:** use yarn to run release script, remove rollup ref from shebang target ([a55d09e](https://github.com/ssube/salty-dog/commit/a55d09e7a2a6d15649bfc0eca2d9efd8aa281349))
* **docs:** expand on usage, add section on log formatting ([3a1275c](https://github.com/ssube/salty-dog/commit/3a1275cf8c0ce7cc36e03ad7fd6f0a40c69e176f))
* **docs:** make readme and GH pages more similar ([ea562fa](https://github.com/ssube/salty-dog/commit/ea562fa143c712c3ecde40360af01c7212019232))
* **image:** only copy bundle files into image ([65410ce](https://github.com/ssube/salty-dog/commit/65410ceaa34dda7af479b82dd1fd0c823f8f7600))
* **lint:** indentation in version metadata ([8d8d3da](https://github.com/ssube/salty-dog/commit/8d8d3da8418f1caf4823d2d6a352d07b9a40ed2a))
* **rule:** improve error messaging for empty schema files ([9c433fd](https://github.com/ssube/salty-dog/commit/9c433fd02b96c1f83fc8038ea1016c0d731d6329))
* **tests:** correct paths to schema, test config ([ed26185](https://github.com/ssube/salty-dog/commit/ed26185e31e12cb5fc06362071ad95824fd02318))
* more ES imports, some corresponding import changes, reset mock FS after every test ([052ca73](https://github.com/ssube/salty-dog/commit/052ca736d2df34370d81ce2d24dba23e556f032e))
* usage of __dirname, lint rules and corresponding fixes ([3b7e48a](https://github.com/ssube/salty-dog/commit/3b7e48a49437efdc9a21b869241b403b95b963e1))
* **build:** disable warnings for shadowing of private global types ([c3ad926](https://github.com/ssube/salty-dog/commit/c3ad9267fa6f51f0b777a81d6e0676134bb14f40))
* **build:** externalize source map modules to fix requires ([bd75fd0](https://github.com/ssube/salty-dog/commit/bd75fd01adb9cae5d5108e5e8d55ac8f47f79cdb))
* **build:** pull dind from nexus ([7926d17](https://github.com/ssube/salty-dog/commit/7926d1740a107bfdbfd58a2772f113623595fc10))
* **build:** pull images from nexus ([caface1](https://github.com/ssube/salty-dog/commit/caface1e93b3174c98ea4809883152159f1539e6))
* **build:** update eslint for typescript-eslint 4 rules ([75819b7](https://github.com/ssube/salty-dog/commit/75819b76cc23d3b625b7c28814408c5ca1a94202))
* **config:** bundle yargs module again ([bd56752](https://github.com/ssube/salty-dog/commit/bd56752cebf0d5724e49f8f529faf978dbc57fa8))
* **image:** remove yargs from bundle, add to image ([14a51ee](https://github.com/ssube/salty-dog/commit/14a51eefaa216026c8e970cb64800a69b1111c3c))
* require commonjs version of yargs to resolve named exports ([234b277](https://github.com/ssube/salty-dog/commit/234b27738eae9aa08a06baa9313e64a15331b268))
* **config:** update lint to naming-convention rule ([6646c32](https://github.com/ssube/salty-dog/commit/6646c32704fc7a98736d5dcc6e0e67ef84e4f864))
* **test:** cover includes in config ([5cd1ab6](https://github.com/ssube/salty-dog/commit/5cd1ab6fb5716f645f88f548b941f3047da4390e))
* register new lodash exports ([37b8e32](https://github.com/ssube/salty-dog/commit/37b8e326aa519d93a70a716a50422356237eb1f0))
* **container:** install bunyan and jq for log parsing ([#263](https://github.com/ssube/salty-dog/issues/263)) ([dd37262](https://github.com/ssube/salty-dog/commit/dd372629510feea8da61d9928c443f7ccee08f38))
* make mutate an option within fix mode (fixes [#144](https://github.com/ssube/salty-dog/issues/144)) ([705af89](https://github.com/ssube/salty-dog/commit/705af893a3271c6e72b01015847c00f89608af2b))
* short aliases for common options (fixes [#145](https://github.com/ssube/salty-dog/issues/145)) ([f367291](https://github.com/ssube/salty-dog/commit/f367291540dfcdda14f95e08affd10a2f5260996))
* validate config while loading ([c1ff388](https://github.com/ssube/salty-dog/commit/c1ff388aff9c941aca264a14f91aa55bbfe03d47))
* validate rules while loading ([dbfe042](https://github.com/ssube/salty-dog/commit/dbfe0429fab64325edb097234342e893feed2a55))
* **rules:** add rules to validate json schemas ([0b5fe3d](https://github.com/ssube/salty-dog/commit/0b5fe3d5e5305d81db737e8c9e10acc210d42517))
* **rules/kubernetes:** add rule to prevent latest tag, rule to ensure pull policy is set ([8254848](https://github.com/ssube/salty-dog/commit/8254848ef84d106d354ca1270e45fa39347e479d))
* **rules/travis:** add language rule ([9a50046](https://github.com/ssube/salty-dog/commit/9a500461c1e501b1905c53ed81f6039dbab3906d))
* **config:** accept S regex flag, anchor slashes ([2812254](https://github.com/ssube/salty-dog/commit/2812254ba55075632f526d1a7f683f57d660415d))
* **docs:** put contents in section, use yarn-global target ([84d2ba4](https://github.com/ssube/salty-dog/commit/84d2ba470ba49ca10319f1589186027bab99d6ec))
* **build:** add build-in-image targets to make ([f805945](https://github.com/ssube/salty-dog/commit/f805945))
* **build:** replace tslint with eslint ([7052096](https://github.com/ssube/salty-dog/commit/7052096))
* **rules:** add item index to rule error (fixes [#116](https://github.com/ssube/salty-dog/issues/116)) ([f0b5109](https://github.com/ssube/salty-dog/commit/f0b5109))
* **rules:** load JSON rule files when using --rule-path ([5229ada](https://github.com/ssube/salty-dog/commit/5229ada))
* **visitor:** move jsonpath pick to context for modules to use ([b99431b](https://github.com/ssube/salty-dog/commit/b99431b))
* enable data refs ([2b0dc92](https://github.com/ssube/salty-dog/commit/2b0dc92))
* load rules from directories ([#8](https://github.com/ssube/salty-dog/issues/8)) and modules ([#6](https://github.com/ssube/salty-dog/issues/6)) ([9fbf7cc](https://github.com/ssube/salty-dog/commit/9fbf7cc))
* split rule and helpers, test rule ([b3dc864](https://github.com/ssube/salty-dog/commit/b3dc864))
* **rule:** print failure message when errors are present ([5160eaa](https://github.com/ssube/salty-dog/commit/5160eaa))
* **scripts:** make example tests more shell compatible ([#106](https://github.com/ssube/salty-dog/issues/106)) ([1304cf5](https://github.com/ssube/salty-dog/commit/1304cf5))
* **test:** set mutate option for test contexts ([72920b2](https://github.com/ssube/salty-dog/commit/72920b2))
* **tests:** add async helpers for tests, wrap async tests, make chai external ([0eb9d51](https://github.com/ssube/salty-dog/commit/0eb9d51))
* **tests:** always print actual exit status of test scenarios ([77c1d0c](https://github.com/ssube/salty-dog/commit/77c1d0c))
* **tests:** begin testing friendly errors, other errors (exceptions) ([a13a909](https://github.com/ssube/salty-dog/commit/a13a909))
* **tests:** begin testing rules ([013b1d7](https://github.com/ssube/salty-dog/commit/013b1d7))
* star import ([93f4917](https://github.com/ssube/salty-dog/commit/93f4917))
### Features
* **build:** add alpine image jobs ([017dfd7](https://github.com/ssube/salty-dog/commit/017dfd7))
* include data path in error messages ([67a61f6](https://github.com/ssube/salty-dog/commit/67a61f6))
* **rules:** add example grafana rule ([f2579d4](https://github.com/ssube/salty-dog/commit/f2579d4))
* add cli help (fixes [#7](https://github.com/ssube/salty-dog/issues/7)) ([721f85f](https://github.com/ssube/salty-dog/commit/721f85f))
* add rules to image, doc ([e358857](https://github.com/ssube/salty-dog/commit/e358857))
* display diff when rule modifies data (fixes [#3](https://github.com/ssube/salty-dog/issues/3)) ([6f15d1c](https://github.com/ssube/salty-dog/commit/6f15d1c))
* fix mode and type coercion ([719954e](https://github.com/ssube/salty-dog/commit/719954e))
* group config & rules in help ([da42749](https://github.com/ssube/salty-dog/commit/da42749))
* list mode, fix version option ([8efbd99](https://github.com/ssube/salty-dog/commit/8efbd99))
* load definitions from rules (fixes [#2](https://github.com/ssube/salty-dog/issues/2)) ([9eb41fc](https://github.com/ssube/salty-dog/commit/9eb41fc))
* support multiple documents per source ([#11](https://github.com/ssube/salty-dog/issues/11)) ([2bd60c8](https://github.com/ssube/salty-dog/commit/2bd60c8))
### Tests
* **rule:** begin testing resolver ([caca3fc](https://github.com/ssube/salty-dog/commit/caca3fc))
* add em ([1931659](https://github.com/ssube/salty-dog/commit/1931659))
### BREAKING CHANGES
* adds a required `name` property (string) at the
top level of each `--rules` file, used as the schema name