v3.0.0
🔗 CheckSync v3 is here! 🎉
This is a major update as we've overhauled the architecture, fixed bugs in "glob" handling, dropped Node 10 support, and more.
Huge thanks to @kevinbarabash and @jeremywiebe for their contributions and feedback during development.
What's New
-
Configuration file support
When using CheckSync on complex projects, the command line arguments can get a bit unwieldy. To help manage this complexity, CheckSync v3 now supports a.checksyncrc
configuration file. By default, CheckSync will look for a configuration file named.checksyncrc
or.checksyncrc.json
based on the current working directory and the root marker location. However, you can specify it via the--config
CLI option if you want something different.In addition, a JSON schema is included to document the configuration format and it is used to validate your configurations.
-
Overhauled architecture with more auto-fixes and exported API
The CheckSync parsing, fixing, and output architectures have all been reworked to separate concerns and allow for a greater variety of fixes besides just updating a checksum. This has also fixed a number of bugs around correctly handling duplicate tags, outputting all parsing results when there are errors, and more. This also means CheckSync is no longer CLI only; a simple API is now exported to allow you to invoke CheckSync programmatically within your own Node programs (or even tests).This overhaul should also improve maintenance of the code, including adding new features. However, there is a performance hit and we have noted v3 is a little slower than v2. We're hoping to focus on improving performance in upcoming patches.
-
Improved JSON output
The JSON output has been standardized so that it can represent the various errors and autofixes that we may want to describe. This means that a caller (such as an eslint rule) will have all the information required to highlight errors and provide autofixes within the JSON output. Together with the exported API, this should make integrating CheckSync into linters and other environments much easier. -
Support for globs when specifying ignore files
Using the--ignore-files
CLI option, you can now specify.gitignore
-style files from subdirectories using glob syntax. -
Correct glob handling
CheckSync v2 was using the.gitignore
-style of glob handling which was not really correct. CheckSync v3 treats globs that it receives the way it should.
Changelog
Features
- Allow for ignore file globs by @somewhatabstract in #731
- Support checksyncrc files by @somewhatabstract in #812
- Improvements to output logic by @somewhatabstract in #849
- Fix handling of cli arg that is symlink by @jeremywiebe in #659
Fixes
- Make sure fixes are applied to the correct lines by @somewhatabstract in #847
- Turn directories into globs to simplify usage by @somewhatabstract in #848
Maintenance
General
- Add support for Node16 and remove Node10 by @somewhatabstract in #670
- Remove dependabot badge by @somewhatabstract in #651
- Add codeql analysis by @somewhatabstract in #661
- Only run CodeQL on src code by @somewhatabstract in #668
Dependency Updates by @dependabot
- Bump ancesdir from 2.0.2 to 3.0.0
#733 - Bump babel-jest from 27.0.6 to 27.4.5
#734, #746, #751, #759, #766, #768, #772, #779, #785, #787, #820, #823, #832, #845 - Bump @babel/cli from 7.14.3 to 7.16.0
#655, #705, #742, #756, #803 - Bump @babel/core from 7.14.3 to 7.16.5
#653, #663, #706, #723, #743, #744, #778, #800, #843 - Bump @babel/eslint-plugin from 7.14.5 to 7.16.5
#842 - Bump @babel/eslint-parser from 7.16.3 to 7.16.5
#840 - Bump @babel/plugin-transform-react-jsx from 7.16.0 to 7.16.5
#837 - Bump @babel/preset-env from 7.14.4 to 7.16.5
#654, #679, #708, #720, #722, #741, #749, #777, #801, #810, #841 - Bump @babel/preset-flow from 7.13.13 to 7.16.5
#656, #804, #838 - Bump @babel/register from 7.13.16 to 7.16.5
#660, #729, #799, #839 - Bump chalk from 4.1.1 to 4.1.2
#718 - Bump eslint from 7.27.0 to 8.5.0
#647, #677, #693, #703, #719, #814, #828, #830, #852 - Bump eslint-plugin-flowtype from 5.7.2 to 7.0.0
#689, #710, #713, #721, #737, #739, #753, #757, #791 - Bump eslint-plugin-prettier from 3.4.1 to 4.0.0
#738 - Bump fast-glob from 3.2.5 to 3.2.7
#697 - Bump flow-bin from 0.152.0 to 0.168.0
#662, #681, #696, #704, #709, #725, #730, #740, #755, #760, #764, #774, #783, #790, #797, #807, #811, #815, #826, #827, #836, #844, #851 - Bump @hyperjump/json-schema from 0.17.2 to 0.18.3
#850 - Bump jest from 26.6.3 to 27.4.5
#688, #735, #747, #750, #758, #767, #770, #773, #781, #786, #789, #821, #822, #825, #833, #846 - Bump jest-extended from 0.11.5 to 1.20
#782, #792, #819 - Bump jest-worker from 27.0.2 to 27.3.1
#687, #736, #745, #752, #765, #769, #771, #780, #784, #793 - Bump normalize-url from 4.5.0 to 4.5.1
#652 - Bump path-parse from 1.0.6 to 1.0.7
#728 - Bump prettier from 2.3.0 to 2.5.1
#646, #684, #748, #754, #817, #829 - Bump pretty-quick from 3.1.0 to 3.1.2
#674, #809 - Bump rollup from 2.50.6 to 2.62.0
#658, #672, #673, #676, #682, #695, #699, #700, #707, #711, #715, #716, #726, #727, #732, #762, #775, #795, #798, #808, #816, #824, #831, #834, #853 - Bump @rollup/plugin-commonjs from 19.0.0 to 21.0.1
#701, #714, #717, #776, #794 - Bump @rollup/plugin-node-resolve from 13.0.0 to 13.0.2
#702, #712, #763, #788, #835 - Bump tmpl from 1.0.4 to 1.0.5
#761
Full Changelog: v2.3.0...v3.0.0