├── .editorconfig ├── .eslintrc.cjs ├── .eslintrc_esm.cjs ├── .gitattributes ├── .github ├── .kodiak.toml ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── pull_request_template.md └── workflows │ ├── fossa.yml │ ├── labeler.yml │ ├── pre-release.yml │ ├── release-please.yml │ └── workflow.yml ├── .gitignore ├── .husky ├── commit-msg └── pre-push ├── .prettierrc.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── bin ├── run_ci.mjs ├── run_e.mjs └── run_local.mjs ├── commitlint.config.cjs ├── package-lock.json ├── package.json ├── renovate.json5 └── test ├── fixtures └── _valid.mjs └── main.mjs /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | max_line_length = 120 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | const { codes: httpStatusCodes } = require('statuses') 2 | 3 | module.exports = { 4 | parser: '@babel/eslint-parser', 5 | parserOptions: { 6 | requireConfigFile: false, 7 | sourceType: 'script', 8 | }, 9 | plugins: ['markdown', 'html', 'fp', 'unicorn'], 10 | extends: [ 11 | 'eslint:recommended', 12 | 'standard', 13 | 'prettier', 14 | 'plugin:eslint-comments/recommended', 15 | 'plugin:n/recommended', 16 | 'plugin:import/recommended', 17 | 'plugin:promise/recommended', 18 | 'plugin:ava/recommended', 19 | 'plugin:react/recommended', 20 | 'plugin:you-dont-need-lodash-underscore/all', 21 | 'plugin:markdown/recommended', 22 | ], 23 | reportUnusedDisableDirectives: true, 24 | rules: { 25 | // Those ESLint rules are not enabled by Prettier, ESLint recommended rules 26 | // nor standard JavaScript. However, they are still useful 27 | 'array-callback-return': [2, { allowImplicit: true, checkForEach: true }], 28 | 'arrow-body-style': 2, 29 | 'block-scoped-var': 2, 30 | 'class-methods-use-this': 2, 31 | complexity: [2, { max: 10 }], 32 | 'consistent-this': 2, 33 | 'default-case': 2, 34 | 'default-param-last': 2, 35 | 'func-name-matching': [2, { considerPropertyDescriptor: true }], 36 | 'func-names': [2, 'as-needed'], 37 | 'func-style': 2, 38 | 'id-length': [2, { exceptions: ['t', '_'] }], 39 | 'line-comment-position': 2, 40 | 'max-classes-per-file': 2, 41 | 'max-depth': [2, 2], 42 | 'max-lines': [2, { max: 150, skipBlankLines: true, skipComments: true }], 43 | 'max-lines-per-function': [2, { max: 100, skipBlankLines: true, skipComments: true, IIFEs: true }], 44 | 'max-nested-callbacks': [2, 2], 45 | 'max-params': [2, { max: 4 }], 46 | 'max-statements': [2, 15], 47 | 'max-statements-per-line': [2, { max: 2 }], 48 | 'multiline-comment-style': [2, 'separate-lines'], 49 | 'no-bitwise': 2, 50 | 'no-constructor-return': 2, 51 | 'no-else-return': [2, { allowElseIf: false }], 52 | 'no-extra-label': 2, 53 | 'no-implicit-coercion': 2, 54 | 'no-implicit-globals': [2, { lexicalBindings: true }], 55 | 'no-inline-comments': 2, 56 | 'no-invalid-this': 2, 57 | 'no-label-var': 2, 58 | 'no-lonely-if': 2, 59 | 'no-loop-func': 2, 60 | 'no-magic-numbers': [ 61 | 2, 62 | { 63 | ignore: [ 64 | ...httpStatusCodes, 65 | // Common small numbers 66 | -2, 67 | -1, 68 | 0, 69 | 1, 70 | 2, 71 | 3, 72 | ], 73 | enforceConst: true, 74 | detectObjects: true, 75 | }, 76 | ], 77 | 'no-multi-assign': 2, 78 | 'no-negated-condition': 2, 79 | // Conflicts with unicorn/no-nested-ternary 80 | 'no-nested-ternary': 0, 81 | 'no-nonoctal-decimal-escape': 2, 82 | 'no-param-reassign': [ 83 | 2, 84 | { 85 | props: true, 86 | ignorePropertyModificationsFor: [ 87 | 'error', 88 | 'errorA', 89 | 'req', 90 | 'request', 91 | 'res', 92 | 'response', 93 | 'state', 94 | 'runState', 95 | 'logs', 96 | 'logsArray', 97 | 'currentEnv', 98 | 't', 99 | ], 100 | }, 101 | ], 102 | 'no-plusplus': [2, { allowForLoopAfterthoughts: true }], 103 | 'no-promise-executor-return': 2, 104 | 'no-shadow': 2, 105 | 'no-underscore-dangle': [2, { enforceInMethodNames: true }], 106 | 'no-undef': [2, { typeof: true }], 107 | 'no-unsafe-optional-chaining': [2, { disallowArithmeticOperators: true }], 108 | 'no-unused-vars': [2, {}], 109 | 'no-useless-computed-key': [2, { enforceForClassMembers: true }], 110 | 'no-useless-concat': 2, 111 | 'no-var': 2, 112 | 'object-shorthand': 2, 113 | 'operator-assignment': 2, 114 | 'padding-line-between-statements': 2, 115 | 'prefer-arrow-callback': [2, { allowNamedFunctions: true }], 116 | 'prefer-destructuring': 2, 117 | 'prefer-exponentiation-operator': 2, 118 | 'prefer-numeric-literals': 2, 119 | 'prefer-object-spread': 2, 120 | 'prefer-rest-params': 2, 121 | 'prefer-spread': 2, 122 | 'prefer-template': 2, 123 | radix: [2, 'as-needed'], 124 | 'require-await': 2, 125 | 126 | // TODO: enable 127 | // strict: 2, 128 | 129 | // The autofix makes it impossible to use those in debugging 130 | 'ava/no-only-test': 0, 131 | 'ava/no-skip-test': 0, 132 | 133 | 'eslint-comments/no-unused-disable': 0, 134 | 'eslint-comments/no-use': [ 135 | 2, 136 | { allow: ['eslint-disable-next-line', 'eslint-disable', 'eslint-enable', 'eslint-env'] }, 137 | ], 138 | 139 | // Those rules are too strict 140 | 'no-await-in-loop': 0, 141 | 142 | 'fp/no-rest-parameters': 0, 143 | 'fp/no-unused-expression': 0, 144 | 'fp/no-nil': 0, 145 | 'fp/no-throw': 0, 146 | 147 | 'import/extensions': [2, 'never', { json: 'always' }], 148 | 'import/max-dependencies': [2, { max: 20 }], 149 | 'import/newline-after-import': 2, 150 | 'import/no-amd': 2, 151 | 'import/no-anonymous-default-export': 2, 152 | 'import/no-cycle': 2, 153 | 'import/no-deprecated': 2, 154 | 'import/no-dynamic-require': [2, { esmodule: true }], 155 | 'import/no-extraneous-dependencies': 2, 156 | 'import/no-mutable-exports': 2, 157 | 'import/no-named-default': 2, 158 | 'import/no-namespace': 2, 159 | 'import/no-self-import': 2, 160 | 'import/no-unassigned-import': [2, { allow: ['*polyfill*', '**/*polyfill*', 'log-process-errors/**'] }], 161 | 'import/no-unresolved': [2, { commonjs: true }], 162 | 'import/no-useless-path-segments': [2, { commonjs: true }], 163 | 'import/order': [ 164 | 2, 165 | { 166 | 'newlines-between': 'always', 167 | alphabetize: { 168 | order: 'asc', 169 | caseInsensitive: true, 170 | }, 171 | }, 172 | ], 173 | 174 | 'n/no-sync': 2, 175 | 'n/callback-return': 2, 176 | 'n/exports-style': 2, 177 | 'n/global-require': 2, 178 | 'n/no-mixed-requires': 2, 179 | // Using path.join() is often not needed when using only core Node.js APIs 180 | 'n/no-path-concat': 0, 181 | // TODO: remove once bug in eslint-plugin-node is fixed: 182 | // https://github.com/mysticatea/eslint-plugin-node/issues/250 183 | 'n/no-unsupported-features/es-syntax': [ 184 | 2, 185 | { 186 | ignores: ['modules', 'dynamicImport'], 187 | }, 188 | ], 189 | // Browser globals should not use `require()`. Non-browser globals should 190 | 'n/prefer-global/console': 2, 191 | 'n/prefer-global/buffer': [2, 'never'], 192 | 'n/prefer-global/process': [2, 'never'], 193 | 'n/prefer-global/url-search-params': 2, 194 | 'n/prefer-global/url': 2, 195 | 'n/prefer-global/text-decoder': 2, 196 | 'n/prefer-global/text-encoder': 2, 197 | 'n/prefer-promises/fs': 2, 198 | 'n/prefer-promises/dns': 2, 199 | // This does not work well in a monorepo 200 | 'n/shebang': 0, 201 | 202 | 'promise/no-callback-in-promise': 2, 203 | 'promise/no-nesting': 2, 204 | 'promise/no-promise-in-callback': 2, 205 | 'promise/no-return-in-finally': 2, 206 | 'promise/prefer-await-to-callbacks': 2, 207 | 'promise/prefer-await-to-then': 2, 208 | 'promise/valid-params': 2, 209 | 210 | 'react/prop-types': 0, 211 | 212 | 'unicorn/custom-error-definition': 2, 213 | 'unicorn/no-unused-properties': 2, 214 | // The additional `non-zero` option is useful for code consistency 215 | 'unicorn/explicit-length-check': [2, { 'non-zero': 'not-equal' }], 216 | // TODO: harmonize with filename snake_case in other Netlify Dev projects 217 | 'unicorn/filename-case': [2, { case: 'snakeCase', ignore: ['.*.md'] }], 218 | // The `sortCharacterClasses` option is not very useful 219 | 'unicorn/better-regex': [2, { sortCharacterClasses: false }], 220 | 221 | // Too strict 222 | 'unicorn/no-null': 0, 223 | 'unicorn/no-array-reduce': 0, 224 | 'unicorn/no-array-for-each': 0, 225 | 'unicorn/prefer-module': 0, 226 | 'unicorn/prefer-object-from-entries': 0, 227 | // Conflicts with no-unresolved and no-missing-import 228 | 'unicorn/prefer-node-protocol': 0, 229 | // This rule gives too many false positives 230 | 'unicorn/prevent-abbreviations': 0, 231 | // Conflicts with Prettier sometimes 232 | 'unicorn/number-literal-case': 0, 233 | // Conflicts with the core ESLint `prefer-destructuring` rule 234 | 'unicorn/no-unreadable-array-destructuring': 0, 235 | // Not useful for us 236 | 'unicorn/expiring-todo-comments': 0, 237 | 'unicorn/no-array-callback-reference': 0, 238 | // TODO: enable those rules 239 | 'unicorn/no-process-exit': 0, 240 | 'unicorn/import-style': 0, 241 | // Useful rules 242 | 'unicorn/catch-error-name': 2, 243 | 'unicorn/consistent-destructuring': 2, 244 | 'unicorn/consistent-function-scoping': 2, 245 | 'unicorn/empty-brace-spaces': 2, 246 | 'unicorn/error-message': 2, 247 | 'unicorn/escape-case': 2, 248 | 'unicorn/import-index': 0, 249 | 'unicorn/new-for-builtins': 2, 250 | 'unicorn/no-abusive-eslint-disable': 2, 251 | 'unicorn/no-array-method-this-argument': 2, 252 | 'unicorn/no-array-push-push': 2, 253 | 'unicorn/no-await-expression-member': 2, 254 | 'unicorn/no-console-spaces': 2, 255 | 'unicorn/no-document-cookie': 2, 256 | 'unicorn/no-empty-file': 2, 257 | 'unicorn/no-for-loop': 2, 258 | 'unicorn/no-hex-escape': 2, 259 | 'unicorn/no-instanceof-array': 2, 260 | 'unicorn/no-invalid-remove-event-listener': 2, 261 | 'unicorn/no-keyword-prefix': 0, 262 | 'unicorn/no-lonely-if': 2, 263 | 'unicorn/no-nested-ternary': 2, 264 | 'unicorn/no-new-array': 2, 265 | 'unicorn/no-new-buffer': 2, 266 | 'unicorn/no-object-as-default-parameter': 2, 267 | 'unicorn/no-static-only-class': 2, 268 | 'unicorn/no-thenable': 2, 269 | 'unicorn/no-this-assignment': 2, 270 | 'unicorn/no-unsafe-regex': 0, 271 | 'unicorn/no-useless-fallback-in-spread': 2, 272 | 'unicorn/no-useless-length-check': 2, 273 | 'unicorn/no-useless-promise-resolve-reject': 2, 274 | 'unicorn/no-useless-spread': 2, 275 | 'unicorn/no-useless-undefined': 2, 276 | 'unicorn/no-zero-fractions': 2, 277 | 'unicorn/numeric-separators-style': 2, 278 | 'unicorn/prefer-add-event-listener': 2, 279 | 'unicorn/prefer-array-find': 2, 280 | 'unicorn/prefer-array-flat': 2, 281 | 'unicorn/prefer-array-flat-map': 2, 282 | 'unicorn/prefer-array-index-of': 2, 283 | 'unicorn/prefer-array-some': 2, 284 | // TODO: Enable this by default when targeting a Node.js version that supports `Array#at`. 285 | 'unicorn/prefer-at': 0, 286 | 'unicorn/prefer-code-point': 2, 287 | 'unicorn/prefer-date-now': 2, 288 | 'unicorn/prefer-default-parameters': 2, 289 | 'unicorn/prefer-dom-node-append': 2, 290 | 'unicorn/prefer-dom-node-dataset': 2, 291 | 'unicorn/prefer-dom-node-remove': 2, 292 | 'unicorn/prefer-dom-node-text-content': 2, 293 | 'unicorn/prefer-export-from': 2, 294 | 'unicorn/prefer-includes': 2, 295 | 'unicorn/prefer-json-parse-buffer': 2, 296 | 'unicorn/prefer-keyboard-event-key': 2, 297 | 'unicorn/prefer-math-trunc': 2, 298 | 'unicorn/prefer-modern-dom-apis': 2, 299 | 'unicorn/prefer-negative-index': 2, 300 | 'unicorn/prefer-number-properties': 2, 301 | 'unicorn/prefer-optional-catch-binding': 2, 302 | 'unicorn/prefer-prototype-methods': 2, 303 | 'unicorn/prefer-query-selector': 2, 304 | 'unicorn/prefer-reflect-apply': 2, 305 | 'unicorn/prefer-regexp-test': 2, 306 | 'unicorn/prefer-set-has': 2, 307 | 'unicorn/prefer-spread': 2, 308 | // TODO: Enable this by default when targeting Node.js 16. 309 | 'unicorn/prefer-string-replace-all': 0, 310 | 'unicorn/prefer-string-slice': 2, 311 | 'unicorn/prefer-string-starts-ends-with': 2, 312 | 'unicorn/prefer-string-trim-start-end': 2, 313 | 'unicorn/prefer-switch': 2, 314 | 'unicorn/prefer-ternary': 2, 315 | // TODO: Enable this by default when targeting Node.js 14. 316 | 'unicorn/prefer-top-level-await': 0, 317 | 'unicorn/prefer-type-error': 2, 318 | 'unicorn/relative-url-style': 2, 319 | 'unicorn/require-array-join-separator': 2, 320 | 'unicorn/require-number-to-fixed-digits-argument': 2, 321 | // Turned off because we can't distinguish `window.postMessage` and `{Worker,MessagePort,Client,BroadcastChannel}#postMessage()` 322 | // See https://github.com/sindresorhus/eslint-plugin-unicorn/issues/1396 323 | 'unicorn/require-post-message-target-origin': 0, 324 | 'unicorn/string-content': 0, 325 | 'unicorn/template-indent': 1, 326 | 'unicorn/throw-new-error': 2, 327 | }, 328 | overrides: [ 329 | { 330 | files: ['**/tests.{cjs,mjs,js}', '**/tests/**/*.{cjs,mjs,js}'], 331 | rules: { 332 | 'max-lines': 0, 333 | 'n/no-unpublished-require': 0, 334 | 'n/no-missing-require': 0, 335 | 'unicorn/no-process-exit': 0, 336 | 'fp/no-mutating-methods': 0, 337 | 'fp/no-mutation': 0, 338 | 'fp/no-delete': 0, 339 | }, 340 | }, 341 | { 342 | files: ['.*.{cjs,mjs,js}'], 343 | rules: { 344 | 'max-lines': 0, 345 | 'no-magic-numbers': 0, 346 | 'n/no-unpublished-require': 0, 347 | }, 348 | }, 349 | { 350 | files: ['scripts/**/*.{cjs,mjs,js}'], 351 | rules: { 352 | 'n/no-unpublished-require': 0, 353 | }, 354 | }, 355 | { 356 | // **/*.md/*.js references code blocks inside markdown files 357 | files: ['**/*.md/*.js'], 358 | rules: { 359 | 'no-undef': 0, 360 | 'no-unused-vars': 0, 361 | 362 | // Inline comments making code samples vertically shorter are useful 363 | 'line-comment-position': 0, 364 | 'no-inline-comments': 0, 365 | 366 | // Using literal numbers is simpler in documentation examples 367 | 'no-magic-numbers': 0, 368 | 369 | strict: 0, 370 | 'import/no-unresolved': 0, 371 | 'n/no-missing-require': 0, 372 | 'n/no-missing-import': 0, 373 | 374 | // code blocks in markdown files have autogenerated file names 375 | 'unicorn/filename-case': 0, 376 | 377 | // Documentation might import dependencies not in package.json 378 | 'n/no-unpublished-require': 0, 379 | 'n/no-extraneous-require': 0, 380 | 'n/no-extraneous-import': 0, 381 | 'import/no-extraneous-dependencies': 0, 382 | }, 383 | }, 384 | // TypeScript-specific settings. 385 | { 386 | files: ['*.cts', '*mts', '*.ts', '*.tsx'], 387 | extends: [ 388 | 'plugin:@typescript-eslint/eslint-recommended', 389 | 'plugin:@typescript-eslint/recommended', 390 | 'plugin:import/typescript', 391 | ], 392 | }, 393 | // React 394 | { 395 | files: ['*.jsx', '*.tsx'], 396 | parserOptions: { 397 | sourceType: 'module', 398 | ecmaFeatures: { jsx: true }, 399 | }, 400 | env: { 401 | browser: true, 402 | }, 403 | rules: { 404 | 'n/no-unsupported-features/es-syntax': 0, 405 | 'unicorn/filename-case': 0, 406 | 'unicorn/import-index': 0, 407 | }, 408 | }, 409 | // HTML files 410 | { 411 | files: ['*.html'], 412 | env: { 413 | browser: true, 414 | }, 415 | }, 416 | { 417 | // ES modules 418 | files: ['*.mjs'], 419 | parserOptions: { 420 | sourceType: 'module', 421 | }, 422 | rules: { 423 | 'import/extensions': [2, 'always'], 424 | }, 425 | }, 426 | // Cypress test files 427 | { 428 | files: ['cypress/**/*.{cjs,mjs,js}'], 429 | parserOptions: { 430 | sourceType: 'module', 431 | }, 432 | env: { 433 | 'cypress/globals': true, 434 | }, 435 | plugins: ['cypress'], 436 | }, 437 | ], 438 | settings: { 439 | 'import/parsers': { 440 | '@typescript-eslint/parser': ['*.cts', '*mts', '.ts', '.tsx'], 441 | }, 442 | 'import/resolver': { 443 | node: { 444 | extensions: ['.cjs', '.mjs', '.js', '.jsx', '.d.ts', '*.cts', '*mts', '.ts', '.tsx'], 445 | }, 446 | typescript: { 447 | alwaysTryTypes: true, 448 | }, 449 | }, 450 | node: { 451 | tryExtensions: ['.cjs', '.mjs', '.js', '*.cts', '*mts', '.ts', '.d.ts'], 452 | }, 453 | react: { 454 | version: '16.13.1', 455 | }, 456 | }, 457 | } 458 | -------------------------------------------------------------------------------- /.eslintrc_esm.cjs: -------------------------------------------------------------------------------- 1 | // CommonJS allows omitting `.js` but not `.cjs` 2 | // eslint-disable-next-line import/extensions 3 | const baseEslintrc = require('./.eslintrc.cjs') 4 | 5 | // ESLint configuration for packages using pure ES modules. 6 | // This should be merged to the main `.eslintrc.js` once all our repositories 7 | // have migrated to pure ES modules. 8 | module.exports = { 9 | ...baseEslintrc, 10 | parserOptions: { 11 | ...baseEslintrc.parserOptions, 12 | sourceType: 'module', 13 | }, 14 | rules: { 15 | ...baseEslintrc.rules, 16 | 'import/extensions': [2, 'ignorePackages'], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.github/.kodiak.toml: -------------------------------------------------------------------------------- 1 | version = 1 2 | 3 | [merge.automerge_dependencies] 4 | versions = ["minor", "patch"] 5 | usernames = ["renovate"] 6 | 7 | [approve] 8 | auto_approve_usernames = ["renovate"] -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @netlify/netlify-dev 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: 'Please replace with a clear and descriptive title' 5 | labels: 'type: bug' 6 | assignees: '' 7 | --- 8 | 9 | Thanks for reporting this bug! 10 | 11 | Please search other issues to make sure this bug has not already been reported. 12 | 13 | Then fill in the sections below. 14 | 15 | **Describe the bug** 16 | 17 | A clear and concise description of what the bug is. 18 | 19 | **Configuration** 20 | 21 | - If possible, please copy/paste below your `netlify.toml`. 22 | - Did you run your build through the UI or the CLI? 23 | - If using the CLI, which flags did you use? 24 | - If using the CLI, please enter the following command in a terminal and copy/paste its output: 25 | 26 | ```bash 27 | npx envinfo --system --binaries 28 | ``` 29 | 30 | **Deploy logs** 31 | 32 | If possible, please share a link to the Deploy that failed. If this is not possible or if the build was run in the CLI, 33 | please copy/paste the deploy logs below instead. 34 | 35 | **Pull requests** 36 | 37 | Pull requests are welcome! If you would like to help us fix this bug, please check our 38 | [contributions guidelines](../blob/main/CONTRIBUTING.md). 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: 'Please replace with a clear and descriptive title' 5 | labels: 'type: feature' 6 | assignees: '' 7 | --- 8 | 9 | 14 | 15 | **Which problem is this feature request solving?** 16 | 17 | 20 | 21 | **Describe the solution you'd like** 22 | 23 | 26 | 27 | **Describe alternatives you've considered** 28 | 29 | 32 | 33 | **Can you submit a pull request?** 34 | 35 | Yes/No. 36 | 37 | 41 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 🎉 Thanks for sending this pull request! 🎉 2 | 3 | Please make sure the title is clear and descriptive. 4 | 5 | If you are fixing a typo or documentation, please skip these instructions. 6 | 7 | Otherwise please fill in the sections below. 8 | 9 | **Which problem is this pull request solving?** 10 | 11 | Example: I'm always frustrated when [...] 12 | 13 | **List other issues or pull requests related to this problem** 14 | 15 | Example: This fixes #5012 16 | 17 | **Describe the solution you've chosen** 18 | 19 | Example: I've fixed this by [...] 20 | 21 | **Describe alternatives you've considered** 22 | 23 | Example: Another solution would be [...] 24 | 25 | **Checklist** 26 | 27 | Please add a `x` inside each checkbox: 28 | 29 | - [ ] I have read the [contribution guidelines](../blob/main/CONTRIBUTING.md). 30 | - [ ] The status checks are successful (continuous integration). Those can be seen below. 31 | -------------------------------------------------------------------------------- /.github/workflows/fossa.yml: -------------------------------------------------------------------------------- 1 | name: Dependency License Scanning 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | - chore/fossa-workflow 8 | 9 | defaults: 10 | run: 11 | shell: bash 12 | 13 | jobs: 14 | fossa: 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Checkout 18 | uses: actions/checkout@v4 19 | - name: Download fossa cli 20 | run: |- 21 | mkdir -p $HOME/.local/bin 22 | curl https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | bash -s -- -b $HOME/.local/bin 23 | echo "$HOME/.local/bin" >> $GITHUB_PATH 24 | 25 | - name: Fossa init 26 | run: fossa init 27 | - name: Set env 28 | run: echo "line_number=$(grep -n "project" .fossa.yml | cut -f1 -d:)" >> $GITHUB_ENV 29 | - name: Configuration 30 | run: |- 31 | sed -i "${line_number}s|.*| project: git@github.com:${GITHUB_REPOSITORY}.git|" .fossa.yml 32 | cat .fossa.yml 33 | - name: Upload dependencies 34 | run: fossa analyze --debug 35 | env: 36 | FOSSA_API_KEY: ${{ secrets.FOSSA_API_KEY }} 37 | -------------------------------------------------------------------------------- /.github/workflows/labeler.yml: -------------------------------------------------------------------------------- 1 | name: Label PR 2 | on: 3 | pull_request: 4 | types: [opened, edited] 5 | 6 | jobs: 7 | label-pr: 8 | if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false 9 | runs-on: ubuntu-latest 10 | strategy: 11 | matrix: 12 | pr: 13 | [ 14 | { prefix: 'fix', type: 'bug' }, 15 | { prefix: 'chore', type: 'chore' }, 16 | { prefix: 'test', type: 'chore' }, 17 | { prefix: 'ci', type: 'chore' }, 18 | { prefix: 'feat', type: 'feature' }, 19 | { prefix: 'security', type: 'security' }, 20 | ] 21 | steps: 22 | - uses: netlify/pr-labeler-action@v1.1.0 23 | if: startsWith(github.event.pull_request.title, matrix.pr.prefix) 24 | with: 25 | token: '${{ secrets.GITHUB_TOKEN }}' 26 | label: 'type: ${{ matrix.pr.type }}' 27 | -------------------------------------------------------------------------------- /.github/workflows/pre-release.yml: -------------------------------------------------------------------------------- 1 | name: prerelease 2 | on: 3 | push: 4 | branches: 5 | # releases// 6 | - releases/*/* 7 | jobs: 8 | prerelease: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - uses: actions/setup-node@v4 13 | with: 14 | node-version: '*' 15 | cache: npm 16 | check-latest: true 17 | registry-url: 'https://registry.npmjs.org' 18 | - name: Extract tag and version 19 | id: extract 20 | run: |- 21 | ref=${{ github.ref }} 22 | branch=${ref:11} 23 | tag_version=${branch:9} 24 | tag=${tag_version%/*} 25 | version=${tag_version##*/} 26 | echo "::set-output name=tag::${tag}" 27 | echo "::set-output name=version::${version}" 28 | - name: Log versions 29 | run: |- 30 | echo tag=${{ steps.extract.outputs.tag }} 31 | echo version=${{ steps.extract.outputs.version }} 32 | - name: Setup git user 33 | run: git config --global user.name github-actions 34 | - name: Setup git email 35 | run: git config --global user.email github-actions@github.com 36 | - name: Run npm version 37 | run: npm version ${{ steps.extract.outputs.version }}-${{ steps.extract.outputs.tag }} 38 | - name: Push changes 39 | run: git push --follow-tags 40 | - name: Run npm publish 41 | run: npm publish --tag=${{ steps.extract.outputs.tag }} 42 | env: 43 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} 44 | -------------------------------------------------------------------------------- /.github/workflows/release-please.yml: -------------------------------------------------------------------------------- 1 | name: release-please 2 | on: 3 | push: 4 | branches: 5 | - main 6 | jobs: 7 | release-please: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: navikt/github-app-token-generator@a8ae52448279d468cfbca5cd899f2457f0b1f643 11 | id: get-token 12 | with: 13 | private-key: ${{ secrets.TOKENS_PRIVATE_KEY }} 14 | app-id: ${{ secrets.TOKENS_APP_ID }} 15 | - uses: GoogleCloudPlatform/release-please-action@v3 16 | id: release 17 | with: 18 | token: ${{ steps.get-token.outputs.token }} 19 | release-type: node 20 | package-name: '@netlify/eslint-config-node' 21 | - uses: actions/checkout@v4 22 | if: ${{ steps.release.outputs.release_created }} 23 | - uses: actions/setup-node@v4 24 | with: 25 | node-version: '*' 26 | cache: npm 27 | check-latest: true 28 | registry-url: 'https://registry.npmjs.org' 29 | if: ${{ steps.release.outputs.release_created }} 30 | - run: npm publish 31 | if: ${{ steps.release.outputs.release_created }} 32 | env: 33 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} 34 | -------------------------------------------------------------------------------- /.github/workflows/workflow.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | on: 3 | # Ensure GitHub actions are not run twice for same commits 4 | push: 5 | branches: [main] 6 | tags: ['*'] 7 | pull_request: 8 | types: [opened, synchronize, reopened] 9 | jobs: 10 | build: 11 | runs-on: ${{ matrix.os }} 12 | timeout-minutes: 30 13 | strategy: 14 | matrix: 15 | os: [ubuntu-latest, macOS-latest, windows-latest] 16 | node-version: ['*'] 17 | fail-fast: false 18 | steps: 19 | - name: Git checkout 20 | uses: actions/checkout@v4 21 | - name: Node.js ${{ matrix.node-version }} 22 | uses: actions/setup-node@v4 23 | with: 24 | node-version: ${{ matrix.node-version }} 25 | cache: npm 26 | check-latest: true 27 | - name: Install dependencies 28 | run: npm ci 29 | - name: Linting 30 | run: npm run format:ci 31 | if: "${{ matrix.node-version == '*' }}" 32 | - name: Tests 33 | run: npm run test:ci 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.swp 3 | npm-debug.log 4 | node_modules 5 | /core 6 | .eslintcache 7 | .npmrc 8 | .yarn-error.log 9 | /build 10 | .vscode 11 | -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx commitlint --edit "$1" 5 | -------------------------------------------------------------------------------- /.husky/pre-push: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npm run format 5 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "printWidth": 120, 5 | "proseWrap": "always", 6 | "trailingComma": "all" 7 | } 8 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [7.0.1](https://github.com/netlify/eslint-config-node/compare/v7.0.0...v7.0.1) (2022-11-28) 4 | 5 | 6 | ### Bug Fixes 7 | 8 | * **deps:** update babel monorepo to v7.18.9 ([#534](https://github.com/netlify/eslint-config-node/issues/534)) ([43c0688](https://github.com/netlify/eslint-config-node/commit/43c068867a14b6e2ef0b536cf27c92b3a988ae70)) 9 | * **deps:** update babel monorepo to v7.19.1 ([#572](https://github.com/netlify/eslint-config-node/issues/572)) ([611e88d](https://github.com/netlify/eslint-config-node/commit/611e88d5f42c23a9e65cc4af8b9eede56b4e83d2)) 10 | * **deps:** update commitlint monorepo to v17.0.3 ([#535](https://github.com/netlify/eslint-config-node/issues/535)) ([583461a](https://github.com/netlify/eslint-config-node/commit/583461a8913cd13a6d3d83800d5fb31c951e4fdf)) 11 | * **deps:** update commitlint monorepo to v17.2.0 ([#595](https://github.com/netlify/eslint-config-node/issues/595)) ([e9598b5](https://github.com/netlify/eslint-config-node/commit/e9598b5ba20d9c4dcd707cfa141017575a724f21)) 12 | * **deps:** update dependency @babel/core to v7.18.10 ([#548](https://github.com/netlify/eslint-config-node/issues/548)) ([2f95a57](https://github.com/netlify/eslint-config-node/commit/2f95a57f7e6fc265b9aadac8990848fadb86f2ff)) 13 | * **deps:** update dependency @babel/core to v7.19.0 ([#569](https://github.com/netlify/eslint-config-node/issues/569)) ([b5ef431](https://github.com/netlify/eslint-config-node/commit/b5ef431fd92b46d5cbc194ed0994891da3c73286)) 14 | * **deps:** update dependency @babel/core to v7.19.3 ([#581](https://github.com/netlify/eslint-config-node/issues/581)) ([8741b5b](https://github.com/netlify/eslint-config-node/commit/8741b5b85561f0edfaab1749090a91fabf20217d)) 15 | * **deps:** update dependency @babel/core to v7.19.6 ([1533048](https://github.com/netlify/eslint-config-node/commit/153304871e27e20bd0b2ae69b27141732e8e57eb)) 16 | * **deps:** update dependency @babel/core to v7.20.2 ([#596](https://github.com/netlify/eslint-config-node/issues/596)) ([fe483e8](https://github.com/netlify/eslint-config-node/commit/fe483e82e8174013fa7f77d3d76c6b2f1ea1b7ce)) 17 | * **deps:** update dependency @commitlint/cli to v17.1.2 ([#562](https://github.com/netlify/eslint-config-node/issues/562)) ([32f4063](https://github.com/netlify/eslint-config-node/commit/32f4063c7e7c951a7ca263dbb87d0d36d43fde32)) 18 | * **deps:** update dependency eslint to v8.21.0 ([#549](https://github.com/netlify/eslint-config-node/issues/549)) ([659577f](https://github.com/netlify/eslint-config-node/commit/659577f6b7438c6257c7bfaa002dac9594af3ae3)) 19 | * **deps:** update dependency eslint to v8.22.0 ([#554](https://github.com/netlify/eslint-config-node/issues/554)) ([7dabc54](https://github.com/netlify/eslint-config-node/commit/7dabc540eb8778599d1fc1f8f181b77cf1054891)) 20 | * **deps:** update dependency eslint to v8.23.1 ([#573](https://github.com/netlify/eslint-config-node/issues/573)) ([04f992a](https://github.com/netlify/eslint-config-node/commit/04f992a32f0b378598855fdcd58f22f3f8156543)) 21 | * **deps:** update dependency eslint to v8.24.0 ([#577](https://github.com/netlify/eslint-config-node/issues/577)) ([69aad4c](https://github.com/netlify/eslint-config-node/commit/69aad4cb38c381cca6818078c4a4b21b4e7a4ac3)) 22 | * **deps:** update dependency eslint to v8.26.0 ([#587](https://github.com/netlify/eslint-config-node/issues/587)) ([903e7af](https://github.com/netlify/eslint-config-node/commit/903e7af1501353ccd9139512fe34bc68070377a3)) 23 | * **deps:** update dependency eslint to v8.27.0 ([#597](https://github.com/netlify/eslint-config-node/issues/597)) ([56e7b30](https://github.com/netlify/eslint-config-node/commit/56e7b30bbd6004f0bf74132a87f4ab83a7a3d4df)) 24 | * **deps:** update dependency eslint-import-resolver-typescript to v3.3.0 ([#539](https://github.com/netlify/eslint-config-node/issues/539)) ([a3526fc](https://github.com/netlify/eslint-config-node/commit/a3526fc31c307b23f056cc8787ab97502f9e281e)) 25 | * **deps:** update dependency eslint-import-resolver-typescript to v3.4.0 ([#550](https://github.com/netlify/eslint-config-node/issues/550)) ([df7e2ba](https://github.com/netlify/eslint-config-node/commit/df7e2bad6723b0fba083a3e816747ef2d4b97729)) 26 | * **deps:** update dependency eslint-import-resolver-typescript to v3.4.1 ([#553](https://github.com/netlify/eslint-config-node/issues/553)) ([aee22c0](https://github.com/netlify/eslint-config-node/commit/aee22c091ad1f5582665822f1dc2729ca809ac29)) 27 | * **deps:** update dependency eslint-import-resolver-typescript to v3.4.2 ([#557](https://github.com/netlify/eslint-config-node/issues/557)) ([0e02b79](https://github.com/netlify/eslint-config-node/commit/0e02b793aefb60fff2cb2aa6239aee0cbe6cfbcd)) 28 | * **deps:** update dependency eslint-import-resolver-typescript to v3.5.1 ([#566](https://github.com/netlify/eslint-config-node/issues/566)) ([3ae8ee3](https://github.com/netlify/eslint-config-node/commit/3ae8ee3d2aaa7bc23f09cc5172df520fc84826e1)) 29 | * **deps:** update dependency eslint-import-resolver-typescript to v3.5.2 ([#592](https://github.com/netlify/eslint-config-node/issues/592)) ([354e5ac](https://github.com/netlify/eslint-config-node/commit/354e5ac38c49ca4fafeb8178ac14461dda093797)) 30 | * **deps:** update dependency eslint-plugin-html to v7 ([#540](https://github.com/netlify/eslint-config-node/issues/540)) ([b8c55b2](https://github.com/netlify/eslint-config-node/commit/b8c55b23a7ec98b7d602f38ab4df278ca7bf9421)) 31 | * **deps:** update dependency eslint-plugin-html to v7.1.0 ([#545](https://github.com/netlify/eslint-config-node/issues/545)) ([970ee31](https://github.com/netlify/eslint-config-node/commit/970ee31579159ceadb0bbdef10ed3cc305f52d92)) 32 | * **deps:** update dependency eslint-plugin-n to v15 ([#491](https://github.com/netlify/eslint-config-node/issues/491)) ([47e445b](https://github.com/netlify/eslint-config-node/commit/47e445b31d31d0e42270377b09e01820134a457c)) 33 | * **deps:** update dependency eslint-plugin-n to v15.3.0 ([#578](https://github.com/netlify/eslint-config-node/issues/578)) ([9748b20](https://github.com/netlify/eslint-config-node/commit/9748b20688f04f732a2f77daa15ac6e1cbbcc0be)) 34 | * **deps:** update dependency eslint-plugin-n to v15.5.0 ([#598](https://github.com/netlify/eslint-config-node/issues/598)) ([bb90c65](https://github.com/netlify/eslint-config-node/commit/bb90c654f7417915a3c3b04a1bdd2985141a3898)) 35 | * **deps:** update dependency eslint-plugin-n to v15.5.1 ([#601](https://github.com/netlify/eslint-config-node/issues/601)) ([10b2211](https://github.com/netlify/eslint-config-node/commit/10b2211d319785279f28a5e303cf8c0abc297fde)) 36 | * **deps:** update dependency eslint-plugin-promise to v6.1.1 ([#590](https://github.com/netlify/eslint-config-node/issues/590)) ([182bd2d](https://github.com/netlify/eslint-config-node/commit/182bd2db3bea2a2f352a143b19a356071f1c216b)) 37 | * **deps:** update dependency eslint-plugin-react to v7.31.10 ([#586](https://github.com/netlify/eslint-config-node/issues/586)) ([f3cde61](https://github.com/netlify/eslint-config-node/commit/f3cde61cdc7b08f0b7236d30265358b790931bd8)) 38 | * **deps:** update dependency eslint-plugin-react to v7.31.6 ([#563](https://github.com/netlify/eslint-config-node/issues/563)) ([6b18b64](https://github.com/netlify/eslint-config-node/commit/6b18b648bba19b696e0035a0bfded637602674a7)) 39 | * **deps:** update dependency eslint-plugin-react to v7.31.8 ([#567](https://github.com/netlify/eslint-config-node/issues/567)) ([34e127c](https://github.com/netlify/eslint-config-node/commit/34e127c3945dc6fb2f6eb84b4e23acc56294a971)) 40 | * **deps:** update dependency eslint-plugin-unicorn to v43.0.2 ([#536](https://github.com/netlify/eslint-config-node/issues/536)) ([c660bc3](https://github.com/netlify/eslint-config-node/commit/c660bc330f047adb097e67b209df9d3e877519dc)) 41 | * **deps:** update dependency husky to v8.0.1 ([#537](https://github.com/netlify/eslint-config-node/issues/537)) ([e1631bf](https://github.com/netlify/eslint-config-node/commit/e1631bf08766b0503062e4bd9240948929a71309)) 42 | * **deps:** update dependency husky to v8.0.2 ([#602](https://github.com/netlify/eslint-config-node/issues/602)) ([f894a5f](https://github.com/netlify/eslint-config-node/commit/f894a5f0c925c52d898fa49214dd2b53fa376e96)) 43 | * **deps:** update typescript-eslint monorepo to v5.30.7 ([#538](https://github.com/netlify/eslint-config-node/issues/538)) ([219d625](https://github.com/netlify/eslint-config-node/commit/219d625714bf9d6680676fa1c4b687d6be0051a2)) 44 | * **deps:** update typescript-eslint monorepo to v5.31.0 ([#542](https://github.com/netlify/eslint-config-node/issues/542)) ([4b79cb9](https://github.com/netlify/eslint-config-node/commit/4b79cb95c832de6c5b6dea92d4ba28d34b36a152)) 45 | * **deps:** update typescript-eslint monorepo to v5.32.0 ([#551](https://github.com/netlify/eslint-config-node/issues/551)) ([414a192](https://github.com/netlify/eslint-config-node/commit/414a1924d49ea0057c8360427fe3235d676b78e6)) 46 | * **deps:** update typescript-eslint monorepo to v5.33.0 ([#555](https://github.com/netlify/eslint-config-node/issues/555)) ([10fa8b5](https://github.com/netlify/eslint-config-node/commit/10fa8b5292277557e527bb0c2a1d16071e363551)) 47 | * **deps:** update typescript-eslint monorepo to v5.33.1 ([#558](https://github.com/netlify/eslint-config-node/issues/558)) ([d7668cc](https://github.com/netlify/eslint-config-node/commit/d7668cc7592cbe4c1cd8dbceee1c83d28a88dfcf)) 48 | * **deps:** update typescript-eslint monorepo to v5.36.1 ([#564](https://github.com/netlify/eslint-config-node/issues/564)) ([e6d83af](https://github.com/netlify/eslint-config-node/commit/e6d83af167bf34671f5c0c7180ec3b36016ad28e)) 49 | * **deps:** update typescript-eslint monorepo to v5.36.2 ([#568](https://github.com/netlify/eslint-config-node/issues/568)) ([7d4cf1b](https://github.com/netlify/eslint-config-node/commit/7d4cf1b4e4add3d12e7dc20b7327ddf1dd547970)) 50 | * **deps:** update typescript-eslint monorepo to v5.37.0 ([#574](https://github.com/netlify/eslint-config-node/issues/574)) ([74f31f5](https://github.com/netlify/eslint-config-node/commit/74f31f5dea1bc518a54771a6edaa154188ef6d34)) 51 | * **deps:** update typescript-eslint monorepo to v5.38.0 ([#579](https://github.com/netlify/eslint-config-node/issues/579)) ([712b9f3](https://github.com/netlify/eslint-config-node/commit/712b9f32ab2c6ac5dbfafb45bc9c514156725627)) 52 | * **deps:** update typescript-eslint monorepo to v5.38.1 ([#582](https://github.com/netlify/eslint-config-node/issues/582)) ([c55311f](https://github.com/netlify/eslint-config-node/commit/c55311f78a67baf2204835112aa00f43fa8ee10b)) 53 | * **deps:** update typescript-eslint monorepo to v5.40.1 ([#588](https://github.com/netlify/eslint-config-node/issues/588)) ([9420b15](https://github.com/netlify/eslint-config-node/commit/9420b158cecd46200b6029180562c9d1e5e0fde3)) 54 | * **deps:** update typescript-eslint monorepo to v5.42.0 ([#599](https://github.com/netlify/eslint-config-node/issues/599)) ([4f9e08a](https://github.com/netlify/eslint-config-node/commit/4f9e08a40dfcfe63394a45ae878829c2c7913fd8)) 55 | * **deps:** update typescript-eslint monorepo to v5.42.1 ([#603](https://github.com/netlify/eslint-config-node/issues/603)) ([0b24ef2](https://github.com/netlify/eslint-config-node/commit/0b24ef29a0af882c9d0b0b2e0c4ed805ae49b4df)) 56 | 57 | ## [7.0.0](https://github.com/netlify/eslint-config-node/compare/v6.0.0...v7.0.0) (2022-07-19) 58 | 59 | 60 | ### ⚠ BREAKING CHANGES 61 | 62 | * double max complexity (#533) 63 | 64 | ### Features 65 | 66 | * double max complexity ([#533](https://github.com/netlify/eslint-config-node/issues/533)) ([4d7c366](https://github.com/netlify/eslint-config-node/commit/4d7c366ccb1e1bb71f10762b3baf00089d6a3b8e)) 67 | 68 | 69 | ### Bug Fixes 70 | 71 | * **deps:** update babel monorepo to v7.18.2 ([#510](https://github.com/netlify/eslint-config-node/issues/510)) ([3cb10b4](https://github.com/netlify/eslint-config-node/commit/3cb10b4446630bdda8f1fee973ed93b1749663d1)) 72 | * **deps:** update commitlint monorepo to v16.2.4 ([#495](https://github.com/netlify/eslint-config-node/issues/495)) ([8563705](https://github.com/netlify/eslint-config-node/commit/8563705a98e54b712f3cf391629061ed04a931cb)) 73 | * **deps:** update commitlint monorepo to v17 ([#508](https://github.com/netlify/eslint-config-node/issues/508)) ([1902d62](https://github.com/netlify/eslint-config-node/commit/1902d62e732372893c55a26c1b1810e2e84f2875)) 74 | * **deps:** update dependency @babel/core to v7.17.10 ([#496](https://github.com/netlify/eslint-config-node/issues/496)) ([27173f6](https://github.com/netlify/eslint-config-node/commit/27173f67a90750a8a5d39d1632bde41d95134ac3)) 75 | * **deps:** update dependency @babel/core to v7.17.9 ([#484](https://github.com/netlify/eslint-config-node/issues/484)) ([879e61d](https://github.com/netlify/eslint-config-node/commit/879e61d9dccd6325b37586243224d632d9793979)) 76 | * **deps:** update dependency @babel/core to v7.18.0 ([#504](https://github.com/netlify/eslint-config-node/issues/504)) ([a7499bb](https://github.com/netlify/eslint-config-node/commit/a7499bb32d563081a9e902aabb3bab1be3ebea93)) 77 | * **deps:** update dependency @babel/core to v7.18.5 ([#516](https://github.com/netlify/eslint-config-node/issues/516)) ([fa989de](https://github.com/netlify/eslint-config-node/commit/fa989ded1c2e44e9382e7e711c39405b7769d61e)) 78 | * **deps:** update dependency @babel/core to v7.18.6 ([#524](https://github.com/netlify/eslint-config-node/issues/524)) ([2a911ce](https://github.com/netlify/eslint-config-node/commit/2a911ce0ad6858a6a44c3d6e4d8d1db8dc4afb17)) 79 | * **deps:** update dependency @commitlint/cli to v16.3.0 ([#502](https://github.com/netlify/eslint-config-node/issues/502)) ([49f3c93](https://github.com/netlify/eslint-config-node/commit/49f3c934840cac75311b9c5d3e8f204d80470120)) 80 | * **deps:** update dependency eslint to v8.13.0 ([#488](https://github.com/netlify/eslint-config-node/issues/488)) ([56fb65a](https://github.com/netlify/eslint-config-node/commit/56fb65a5b3fbb34cf47c703cbea5643e55e57682)) 81 | * **deps:** update dependency eslint to v8.14.0 ([#497](https://github.com/netlify/eslint-config-node/issues/497)) ([664f92b](https://github.com/netlify/eslint-config-node/commit/664f92bc3575bdc46ad5b563b3ba6d00b44afd90)) 82 | * **deps:** update dependency eslint to v8.15.0 ([#499](https://github.com/netlify/eslint-config-node/issues/499)) ([6a01ca0](https://github.com/netlify/eslint-config-node/commit/6a01ca016abcf2287365e09c8bd61a099ed4f7e0)) 83 | * **deps:** update dependency eslint to v8.16.0 ([#505](https://github.com/netlify/eslint-config-node/issues/505)) ([56c98e3](https://github.com/netlify/eslint-config-node/commit/56c98e3757875d6376868c2fabf830fa707b70d5)) 84 | * **deps:** update dependency eslint to v8.17.0 ([#513](https://github.com/netlify/eslint-config-node/issues/513)) ([f9e3001](https://github.com/netlify/eslint-config-node/commit/f9e3001d9604f873120b2a3ff08f80b3ab65ffba)) 85 | * **deps:** update dependency eslint to v8.18.0 ([#517](https://github.com/netlify/eslint-config-node/issues/517)) ([2cced31](https://github.com/netlify/eslint-config-node/commit/2cced31a14dc14aad6d1390437683f486f55d1c7)) 86 | * **deps:** update dependency eslint to v8.19.0 ([#525](https://github.com/netlify/eslint-config-node/issues/525)) ([fce9590](https://github.com/netlify/eslint-config-node/commit/fce95901fe45e74fe4dbe6db2b25d410e53afa9a)) 87 | * **deps:** update dependency eslint to v8.20.0 ([#531](https://github.com/netlify/eslint-config-node/issues/531)) ([eb40520](https://github.com/netlify/eslint-config-node/commit/eb4052025a6f011127ad9d179891f8ab4d4e9274)) 88 | * **deps:** update dependency eslint-import-resolver-typescript to v2.7.1 ([#485](https://github.com/netlify/eslint-config-node/issues/485)) ([4366564](https://github.com/netlify/eslint-config-node/commit/436656458b81e4c10af6d437bae45245e9364e63)) 89 | * **deps:** update dependency eslint-import-resolver-typescript to v3 ([#523](https://github.com/netlify/eslint-config-node/issues/523)) ([58b81f2](https://github.com/netlify/eslint-config-node/commit/58b81f2cbda46eca49f5ac23717a1861fe613382)) 90 | * **deps:** update dependency eslint-plugin-import to v2.26.0 ([#489](https://github.com/netlify/eslint-config-node/issues/489)) ([62357a2](https://github.com/netlify/eslint-config-node/commit/62357a20b026abcc9a76be0d707fdfa5f4a7502b)) 91 | * **deps:** update dependency eslint-plugin-markdown to v3 ([#532](https://github.com/netlify/eslint-config-node/issues/532)) ([6ab5576](https://github.com/netlify/eslint-config-node/commit/6ab557649be10f425f31b59598e14c79f0df6fd0)) 92 | * **deps:** update dependency eslint-plugin-react to v7.30.0 ([#506](https://github.com/netlify/eslint-config-node/issues/506)) ([4175fd8](https://github.com/netlify/eslint-config-node/commit/4175fd8ecd9f53e7e235d487e72f900a8f3f60c6)) 93 | * **deps:** update dependency eslint-plugin-react to v7.30.1 ([#520](https://github.com/netlify/eslint-config-node/issues/520)) ([d83cd49](https://github.com/netlify/eslint-config-node/commit/d83cd491bf7a3fd9ab4c20b1c59a7589d20b69a9)) 94 | * **deps:** update dependency eslint-plugin-unicorn to v43 ([#527](https://github.com/netlify/eslint-config-node/issues/527)) ([bb129ce](https://github.com/netlify/eslint-config-node/commit/bb129ce54878c4a9b2f7eb78e67b79993960de93)) 95 | * **deps:** update dependency husky to v8 ([#501](https://github.com/netlify/eslint-config-node/issues/501)) ([a5b8a23](https://github.com/netlify/eslint-config-node/commit/a5b8a23e92b109af69cdd0f2d3748c0d577baee2)) 96 | * **deps:** update dependency prettier to v2.6.2 ([#486](https://github.com/netlify/eslint-config-node/issues/486)) ([b20c9ee](https://github.com/netlify/eslint-config-node/commit/b20c9ee853c911b6a5b3f3f99cc7dd56a5e9d10c)) 97 | * **deps:** update dependency prettier to v2.7.1 ([#518](https://github.com/netlify/eslint-config-node/issues/518)) ([e04cf32](https://github.com/netlify/eslint-config-node/commit/e04cf327199e430060c50f035bd3a1745cc14e0b)) 98 | * **deps:** update typescript-eslint monorepo to v5.18.0 ([#490](https://github.com/netlify/eslint-config-node/issues/490)) ([cf78471](https://github.com/netlify/eslint-config-node/commit/cf784718b6ed61b67f9134e5236a6a60c83f8f6e)) 99 | * **deps:** update typescript-eslint monorepo to v5.19.0 ([#494](https://github.com/netlify/eslint-config-node/issues/494)) ([efcf964](https://github.com/netlify/eslint-config-node/commit/efcf96493a5372b0fc15ff74d7744367e15377fc)) 100 | * **deps:** update typescript-eslint monorepo to v5.21.0 ([#498](https://github.com/netlify/eslint-config-node/issues/498)) ([850e730](https://github.com/netlify/eslint-config-node/commit/850e730aeebaf0abb82d6a6f67fd021ea28b7737)) 101 | * **deps:** update typescript-eslint monorepo to v5.22.0 ([#500](https://github.com/netlify/eslint-config-node/issues/500)) ([e95b5be](https://github.com/netlify/eslint-config-node/commit/e95b5be0b7fd1cf63d1cf8e34c36b3eed098a461)) 102 | * **deps:** update typescript-eslint monorepo to v5.23.0 ([#503](https://github.com/netlify/eslint-config-node/issues/503)) ([50362ef](https://github.com/netlify/eslint-config-node/commit/50362efb3a1266dd352ec7d7aa0f216ec82cacf7)) 103 | * **deps:** update typescript-eslint monorepo to v5.25.0 ([#507](https://github.com/netlify/eslint-config-node/issues/507)) ([07c03c9](https://github.com/netlify/eslint-config-node/commit/07c03c9ad5f680b030a1b91a889a5c668dfd9863)) 104 | * **deps:** update typescript-eslint monorepo to v5.26.0 ([#511](https://github.com/netlify/eslint-config-node/issues/511)) ([a00a52f](https://github.com/netlify/eslint-config-node/commit/a00a52f47a39f8fa783b16cc32aaf45668210896)) 105 | * **deps:** update typescript-eslint monorepo to v5.27.0 ([#514](https://github.com/netlify/eslint-config-node/issues/514)) ([3ae0fd9](https://github.com/netlify/eslint-config-node/commit/3ae0fd9b5b976fa7bd81bbf9eedaca27a3a2ca23)) 106 | * **deps:** update typescript-eslint monorepo to v5.27.1 ([#515](https://github.com/netlify/eslint-config-node/issues/515)) ([6b33836](https://github.com/netlify/eslint-config-node/commit/6b3383663fd62003907d3b9b7e07ec881a803d85)) 107 | * **deps:** update typescript-eslint monorepo to v5.28.0 ([#519](https://github.com/netlify/eslint-config-node/issues/519)) ([1210276](https://github.com/netlify/eslint-config-node/commit/121027660d6fd7dbb9567308474ccba8356974f6)) 108 | * **deps:** update typescript-eslint monorepo to v5.29.0 ([#522](https://github.com/netlify/eslint-config-node/issues/522)) ([4f1d77c](https://github.com/netlify/eslint-config-node/commit/4f1d77ceaa57584ef9980a25387c65d82cc70518)) 109 | * **deps:** update typescript-eslint monorepo to v5.30.4 ([#526](https://github.com/netlify/eslint-config-node/issues/526)) ([0cdab63](https://github.com/netlify/eslint-config-node/commit/0cdab63f0d66c684cab315b7126b5b69bb45fecd)) 110 | * **deps:** update typescript-eslint monorepo to v5.30.5 ([#529](https://github.com/netlify/eslint-config-node/issues/529)) ([cf044cb](https://github.com/netlify/eslint-config-node/commit/cf044cb90047c68034072b00f73fe212f2cf446e)) 111 | * **deps:** update typescript-eslint monorepo to v5.30.6 ([#530](https://github.com/netlify/eslint-config-node/issues/530)) ([76e73b4](https://github.com/netlify/eslint-config-node/commit/76e73b4f0b2598dacb11031215ee7930ae09f364)) 112 | 113 | ## [6.0.0](https://github.com/netlify/eslint-config-node/compare/v5.1.8...v6.0.0) (2022-04-01) 114 | 115 | 116 | ### ⚠ BREAKING CHANGES 117 | 118 | * use `eslint-plugin-n` instead of `eslint-plugin-node` (#482) 119 | 120 | ### Bug Fixes 121 | 122 | * **deps:** update dependency eslint to v8 ([#321](https://github.com/netlify/eslint-config-node/issues/321)) ([473d3bc](https://github.com/netlify/eslint-config-node/commit/473d3bc7901b3a7ab9c16faadcf3b46d462b9413)) 123 | * use `eslint-plugin-n` instead of `eslint-plugin-node` ([#482](https://github.com/netlify/eslint-config-node/issues/482)) ([df03ffe](https://github.com/netlify/eslint-config-node/commit/df03ffeb07bc1581d8e4bb391d40e7341330302f)) 124 | 125 | ### [5.1.8](https://github.com/netlify/eslint-config-node/compare/v5.1.7...v5.1.8) (2022-03-28) 126 | 127 | 128 | ### Bug Fixes 129 | 130 | * **deps:** update dependency eslint-import-resolver-typescript to v2.7.0 ([#479](https://github.com/netlify/eslint-config-node/issues/479)) ([f1fb6cb](https://github.com/netlify/eslint-config-node/commit/f1fb6cb0629744cb7bd784101332284d7120a3e3)) 131 | * **deps:** update dependency prettier to v2.6.1 ([#478](https://github.com/netlify/eslint-config-node/issues/478)) ([30b8070](https://github.com/netlify/eslint-config-node/commit/30b807040489a581b70773d9250d5ab60dce2dd3)) 132 | * **deps:** update typescript-eslint monorepo to v5.16.0 ([#480](https://github.com/netlify/eslint-config-node/issues/480)) ([31178a0](https://github.com/netlify/eslint-config-node/commit/31178a03b1a9c6dfe8437e0c999d40666f56ec82)) 133 | 134 | ### [5.1.7](https://github.com/netlify/eslint-config-node/compare/v5.1.6...v5.1.7) (2022-03-21) 135 | 136 | 137 | ### Bug Fixes 138 | 139 | * **deps:** update dependency @babel/core to v7.17.8 ([#474](https://github.com/netlify/eslint-config-node/issues/474)) ([d8b2bf7](https://github.com/netlify/eslint-config-node/commit/d8b2bf7906b17dca9a63047ac710ec4d100247f2)) 140 | * **deps:** update dependency @commitlint/cli to v16.2.3 ([#475](https://github.com/netlify/eslint-config-node/issues/475)) ([591445e](https://github.com/netlify/eslint-config-node/commit/591445ed305089a5b67b68c8185dfe74ea2b5a59)) 141 | * **deps:** update dependency eslint-config-prettier to v8.5.0 ([#468](https://github.com/netlify/eslint-config-node/issues/468)) ([1b7825e](https://github.com/netlify/eslint-config-node/commit/1b7825e9adb6657c21dd3a92b2b028b557d8d1a6)) 142 | * **deps:** update dependency eslint-plugin-react to v7.29.3 ([#466](https://github.com/netlify/eslint-config-node/issues/466)) ([555bbfe](https://github.com/netlify/eslint-config-node/commit/555bbfe0f473ad0c32bcf8d3cff3c616b136f0e5)) 143 | * **deps:** update dependency eslint-plugin-react to v7.29.4 ([#472](https://github.com/netlify/eslint-config-node/issues/472)) ([ec5c3f7](https://github.com/netlify/eslint-config-node/commit/ec5c3f7d0948756cc0fed0fee8d0c9af14adb3ea)) 144 | * **deps:** update dependency prettier to v2.6.0 ([#476](https://github.com/netlify/eslint-config-node/issues/476)) ([159f927](https://github.com/netlify/eslint-config-node/commit/159f927c7ade93373d3d265263f9501c567f8be4)) 145 | * **deps:** update typescript-eslint monorepo to v5.13.0 ([#469](https://github.com/netlify/eslint-config-node/issues/469)) ([d5e9b80](https://github.com/netlify/eslint-config-node/commit/d5e9b805b4ae20001420ad275a8e198c6e76f190)) 146 | * **deps:** update typescript-eslint monorepo to v5.14.0 ([#473](https://github.com/netlify/eslint-config-node/issues/473)) ([df93087](https://github.com/netlify/eslint-config-node/commit/df93087622a8e8287687eb4495d98413a8713f89)) 147 | * **deps:** update typescript-eslint monorepo to v5.15.0 ([#477](https://github.com/netlify/eslint-config-node/issues/477)) ([96e091d](https://github.com/netlify/eslint-config-node/commit/96e091dbb8e98bc296ae60397003a6b8f18298fa)) 148 | 149 | ### [5.1.6](https://github.com/netlify/eslint-config-node/compare/v5.1.5...v5.1.6) (2022-02-28) 150 | 151 | 152 | ### Bug Fixes 153 | 154 | * **deps:** update dependency eslint-plugin-react to v7.29.2 ([#463](https://github.com/netlify/eslint-config-node/issues/463)) ([e22c4bc](https://github.com/netlify/eslint-config-node/commit/e22c4bcc0f55c65c8dd37d29f06228801f088160)) 155 | * **deps:** update typescript-eslint monorepo to v5.12.1 ([#462](https://github.com/netlify/eslint-config-node/issues/462)) ([c53c1ac](https://github.com/netlify/eslint-config-node/commit/c53c1ac499c066b172cce701845c271e38115f66)) 156 | 157 | ### [5.1.5](https://github.com/netlify/eslint-config-node/compare/v5.1.4...v5.1.5) (2022-02-21) 158 | 159 | 160 | ### Bug Fixes 161 | 162 | * **deps:** update commitlint monorepo to v16.2.1 ([#454](https://github.com/netlify/eslint-config-node/issues/454)) ([cb476b9](https://github.com/netlify/eslint-config-node/commit/cb476b90399f6708cb0d2b857cad1db9fdd239e7)) 163 | * **deps:** update dependency @babel/core to v7.17.2 ([#453](https://github.com/netlify/eslint-config-node/issues/453)) ([7625c57](https://github.com/netlify/eslint-config-node/commit/7625c574453a93b6254830181788772fb5a74803)) 164 | * **deps:** update dependency @babel/core to v7.17.5 ([#458](https://github.com/netlify/eslint-config-node/issues/458)) ([4e6bc2b](https://github.com/netlify/eslint-config-node/commit/4e6bc2b3f2ca3a396d32a763e7d502427ae705a9)) 165 | * **deps:** update dependency eslint-config-prettier to v8.4.0 ([#459](https://github.com/netlify/eslint-config-node/issues/459)) ([1d92771](https://github.com/netlify/eslint-config-node/commit/1d9277113b5cf4a1b128858a9c75c5ee2029579e)) 166 | * **deps:** update dependency execa to v6.1.0 ([#455](https://github.com/netlify/eslint-config-node/issues/455)) ([a476b60](https://github.com/netlify/eslint-config-node/commit/a476b600dd2cc7c790c3db01762dab39bddea2ff)) 167 | * **deps:** update typescript-eslint monorepo to v5.11.0 ([#456](https://github.com/netlify/eslint-config-node/issues/456)) ([66b1e4e](https://github.com/netlify/eslint-config-node/commit/66b1e4e2879abb6be4a524618d2137df2178668e)) 168 | * **deps:** update typescript-eslint monorepo to v5.12.0 ([#460](https://github.com/netlify/eslint-config-node/issues/460)) ([bd067de](https://github.com/netlify/eslint-config-node/commit/bd067de311972bf7a6ec77f8cee0f7afbe236e4a)) 169 | 170 | ### [5.1.4](https://github.com/netlify/eslint-config-node/compare/v5.1.3...v5.1.4) (2022-02-07) 171 | 172 | 173 | ### Bug Fixes 174 | 175 | * **deps:** update dependency execa to v6 ([#448](https://github.com/netlify/eslint-config-node/issues/448)) ([7988ddb](https://github.com/netlify/eslint-config-node/commit/7988ddb3c4f20b0cc0b669f88622765cd60f653d)) 176 | 177 | ### [5.1.3](https://github.com/netlify/eslint-config-node/compare/v5.1.2...v5.1.3) (2022-02-07) 178 | 179 | 180 | ### Bug Fixes 181 | 182 | * **deps:** update babel monorepo to v7.17.0 ([#450](https://github.com/netlify/eslint-config-node/issues/450)) ([6941729](https://github.com/netlify/eslint-config-node/commit/6941729f499aa7ac52c7b52e402179a3c26c5c2b)) 183 | * **deps:** update typescript-eslint monorepo to v5.10.2 ([#449](https://github.com/netlify/eslint-config-node/issues/449)) ([9f25645](https://github.com/netlify/eslint-config-node/commit/9f2564539d5e5be1823ae999f9b2dd50e47661e4)) 184 | 185 | ### [5.1.2](https://github.com/netlify/eslint-config-node/compare/v5.1.1...v5.1.2) (2022-02-03) 186 | 187 | 188 | ### Bug Fixes 189 | 190 | * ESM-specific configuration bugs ([#445](https://github.com/netlify/eslint-config-node/issues/445)) ([d37f52d](https://github.com/netlify/eslint-config-node/commit/d37f52d00590e4aaa4a01f01594b39f0412cb415)) 191 | 192 | ### [5.1.1](https://github.com/netlify/eslint-config-node/compare/v5.1.0...v5.1.1) (2022-02-02) 193 | 194 | 195 | ### Bug Fixes 196 | 197 | * missing file extension with ESM configuration ([#443](https://github.com/netlify/eslint-config-node/issues/443)) ([c245636](https://github.com/netlify/eslint-config-node/commit/c245636194842b79c7293e3d4768dcda899ef893)) 198 | 199 | ## [5.1.0](https://github.com/netlify/eslint-config-node/compare/v5.0.1...v5.1.0) (2022-02-02) 200 | 201 | 202 | ### Features 203 | 204 | * add ESM-specific rules ([#441](https://github.com/netlify/eslint-config-node/issues/441)) ([239d4ec](https://github.com/netlify/eslint-config-node/commit/239d4ecb770f6aed97449e1e84a8627a0c3a2d36)) 205 | 206 | ### [5.0.1](https://github.com/netlify/eslint-config-node/compare/v5.0.0...v5.0.1) (2022-02-02) 207 | 208 | 209 | ### Bug Fixes 210 | 211 | * missing export for Prettier configuration ([#439](https://github.com/netlify/eslint-config-node/issues/439)) ([1b152a9](https://github.com/netlify/eslint-config-node/commit/1b152a9485c269a385dba6c65feef8102a7cdc3b)) 212 | 213 | ## [5.0.0](https://github.com/netlify/eslint-config-node/compare/v4.1.7...v5.0.0) (2022-02-02) 214 | 215 | 216 | ### ⚠ BREAKING CHANGES 217 | 218 | * use pure ES modules (#435) 219 | 220 | ### Bug Fixes 221 | 222 | * **deps:** update typescript-eslint monorepo to v5.10.1 ([#436](https://github.com/netlify/eslint-config-node/issues/436)) ([bcb3d6e](https://github.com/netlify/eslint-config-node/commit/bcb3d6ef5ce4fc024c4b020f84ad966c0b7fdbdb)) 223 | 224 | 225 | ### Miscellaneous Chores 226 | 227 | * use pure ES modules ([#435](https://github.com/netlify/eslint-config-node/issues/435)) ([81221e1](https://github.com/netlify/eslint-config-node/commit/81221e1da3dc40730c8d3a3f99d18c26393a0aed)) 228 | 229 | ### [4.1.7](https://github.com/netlify/eslint-config-node/compare/v4.1.6...v4.1.7) (2022-01-24) 230 | 231 | 232 | ### Bug Fixes 233 | 234 | * **deps:** update dependency @babel/core to v7.16.12 ([#429](https://github.com/netlify/eslint-config-node/issues/429)) ([56153ce](https://github.com/netlify/eslint-config-node/commit/56153cec078d6e156df8744612a166216f4bca8f)) 235 | * **deps:** update dependency @commitlint/cli to v16.1.0 ([#430](https://github.com/netlify/eslint-config-node/issues/430)) ([63a69fd](https://github.com/netlify/eslint-config-node/commit/63a69fd810327c0f57b5dfed760dd10ac91d83b9)) 236 | * **deps:** update typescript-eslint monorepo to v5.10.0 ([#431](https://github.com/netlify/eslint-config-node/issues/431)) ([7c4b100](https://github.com/netlify/eslint-config-node/commit/7c4b10095a54a78bccd56f480a6b799db69a06bb)) 237 | 238 | ### [4.1.6](https://github.com/netlify/eslint-config-node/compare/v4.1.5...v4.1.6) (2022-01-21) 239 | 240 | 241 | ### Bug Fixes 242 | 243 | * remove broken duplicate rule ([#427](https://github.com/netlify/eslint-config-node/issues/427)) ([3fa84d5](https://github.com/netlify/eslint-config-node/commit/3fa84d5db9e62e17908d89a92dc0511996a47576)) 244 | 245 | ### [4.1.5](https://github.com/netlify/eslint-config-node/compare/v4.1.4...v4.1.5) (2022-01-17) 246 | 247 | 248 | ### Bug Fixes 249 | 250 | * inline `eslint-plugin-unicorn` recommended rules ([#423](https://github.com/netlify/eslint-config-node/issues/423)) ([71f44e9](https://github.com/netlify/eslint-config-node/commit/71f44e976e91f54ec7c9c7814c85038d61d943eb)) 251 | 252 | ### [4.1.4](https://github.com/netlify/eslint-config-node/compare/v4.1.3...v4.1.4) (2022-01-17) 253 | 254 | 255 | ### Bug Fixes 256 | 257 | * **deps:** update dependency eslint-plugin-unicorn to v40.1.0 ([#420](https://github.com/netlify/eslint-config-node/issues/420)) ([9b9501b](https://github.com/netlify/eslint-config-node/commit/9b9501bd9f698f46a2851a27a6e4524f22de77b3)) 258 | * **deps:** update typescript-eslint monorepo to v5.9.1 ([#419](https://github.com/netlify/eslint-config-node/issues/419)) ([3151761](https://github.com/netlify/eslint-config-node/commit/315176153f86d55e81559f9cc33c5d576a1cdd66)) 259 | 260 | ### [4.1.3](https://github.com/netlify/eslint-config-node/compare/v4.1.2...v4.1.3) (2022-01-14) 261 | 262 | 263 | ### Bug Fixes 264 | 265 | * add `npx` to `commitlint` ([#417](https://github.com/netlify/eslint-config-node/issues/417)) ([8bed0ef](https://github.com/netlify/eslint-config-node/commit/8bed0efe2a8aa9816dd02abd1ad262cccb790a75)) 266 | 267 | ### [4.1.2](https://github.com/netlify/eslint-config-node/compare/v4.1.1...v4.1.2) (2022-01-12) 268 | 269 | 270 | ### Bug Fixes 271 | 272 | * `commitlint` Git hook ([#415](https://github.com/netlify/eslint-config-node/issues/415)) ([674068b](https://github.com/netlify/eslint-config-node/commit/674068b96d1981bdaa64d3b3030f56e63c43eea3)) 273 | * make Git hooks executable ([#413](https://github.com/netlify/eslint-config-node/issues/413)) ([a2b2557](https://github.com/netlify/eslint-config-node/commit/a2b255742fbe8812f8a4e1ab40689cc01dedfb53)) 274 | 275 | ### [4.1.1](https://github.com/netlify/eslint-config-node/compare/v4.1.0...v4.1.1) (2022-01-12) 276 | 277 | 278 | ### Bug Fixes 279 | 280 | * **deps:** update husky package to the latest ([#403](https://github.com/netlify/eslint-config-node/issues/403)) ([d056fa8](https://github.com/netlify/eslint-config-node/commit/d056fa8690e82cfe9c2f3d0946031fcf193f69fe)) 281 | 282 | ## [4.1.0](https://github.com/netlify/eslint-config-node/compare/v4.0.8...v4.1.0) (2022-01-10) 283 | 284 | 285 | ### Features 286 | 287 | * Enable a few more newer Node.js rules ([#397](https://github.com/netlify/eslint-config-node/issues/397)) ([3367a21](https://github.com/netlify/eslint-config-node/commit/3367a21a02e2fb59a79089a9de416b1476ea0522)) 288 | 289 | 290 | ### Bug Fixes 291 | 292 | * **deps:** update dependency eslint-plugin-unicorn to v40 ([#392](https://github.com/netlify/eslint-config-node/issues/392)) ([f81380d](https://github.com/netlify/eslint-config-node/commit/f81380d6b48c732b03ba448507edfc313e444eb2)) 293 | 294 | ### [4.0.8](https://github.com/netlify/eslint-config-node/compare/v4.0.7...v4.0.8) (2022-01-10) 295 | 296 | 297 | ### Bug Fixes 298 | 299 | * downgrade eslint-plugin-promise to v5.2.0 ([#401](https://github.com/netlify/eslint-config-node/issues/401)) ([1ea31bf](https://github.com/netlify/eslint-config-node/commit/1ea31bfc2b692a1ecd4e274d14a1cb03360b1823)) 300 | 301 | ### [4.0.7](https://github.com/netlify/eslint-config-node/compare/v4.0.6...v4.0.7) (2022-01-10) 302 | 303 | 304 | ### Bug Fixes 305 | 306 | * **deps:** update dependency @commitlint/cli to v16.0.2 ([#404](https://github.com/netlify/eslint-config-node/issues/404)) ([7ab7698](https://github.com/netlify/eslint-config-node/commit/7ab76989a0cfd525a8f948b40fef7cd81c62a29c)) 307 | * **deps:** update dependency eslint-plugin-ava to v13.2.0 ([#405](https://github.com/netlify/eslint-config-node/issues/405)) ([bb0588e](https://github.com/netlify/eslint-config-node/commit/bb0588ed9b197c2e5e7f336a177095f76b21024c)) 308 | * **deps:** update typescript-eslint monorepo to v5.9.0 ([#406](https://github.com/netlify/eslint-config-node/issues/406)) ([baa55b8](https://github.com/netlify/eslint-config-node/commit/baa55b8c606d1844c92ae100eff9e982bef24676)) 309 | 310 | ### [4.0.6](https://github.com/netlify/eslint-config-node/compare/v4.0.5...v4.0.6) (2022-01-03) 311 | 312 | 313 | ### Bug Fixes 314 | 315 | * disable no-await-in-loop ([#395](https://github.com/netlify/eslint-config-node/issues/395)) ([0b9052f](https://github.com/netlify/eslint-config-node/commit/0b9052fdaf32554911d8548863e046276eb6d17f)) 316 | 317 | ### [4.0.5](https://github.com/netlify/eslint-config-node/compare/v4.0.4...v4.0.5) (2022-01-03) 318 | 319 | 320 | ### Bug Fixes 321 | 322 | * **deps:** update dependency @babel/core to v7.16.7 ([#387](https://github.com/netlify/eslint-config-node/issues/387)) ([254790c](https://github.com/netlify/eslint-config-node/commit/254790c4b06505bf14516a612b31fde451e4b2af)) 323 | * **deps:** update dependency @commitlint/cli to v16.0.1 ([#388](https://github.com/netlify/eslint-config-node/issues/388)) ([56e0b8c](https://github.com/netlify/eslint-config-node/commit/56e0b8ceace70c31e0a3c470de4af94107279a45)) 324 | * **deps:** update dependency eslint-plugin-import to v2.25.4 ([#389](https://github.com/netlify/eslint-config-node/issues/389)) ([ffe4e09](https://github.com/netlify/eslint-config-node/commit/ffe4e09a7fb25a4c54901b154fe7081a3b237c84)) 325 | * **deps:** update typescript-eslint monorepo to v5.8.1 ([#390](https://github.com/netlify/eslint-config-node/issues/390)) ([39819e4](https://github.com/netlify/eslint-config-node/commit/39819e4297c798ac9ce78fbfa04f142fc82e17be)) 326 | 327 | ### [4.0.4](https://www.github.com/netlify/eslint-config-node/compare/v4.0.3...v4.0.4) (2021-12-27) 328 | 329 | 330 | ### Bug Fixes 331 | 332 | * **deps:** update commitlint monorepo to v16 ([#384](https://www.github.com/netlify/eslint-config-node/issues/384)) ([3f31939](https://www.github.com/netlify/eslint-config-node/commit/3f31939f794acdfc954dcc45cf33ae9b16df4137)) 333 | 334 | ### [4.0.3](https://www.github.com/netlify/eslint-config-node/compare/v4.0.2...v4.0.3) (2021-12-27) 335 | 336 | 337 | ### Bug Fixes 338 | 339 | * **deps:** update dependency eslint-plugin-react to v7.28.0 ([#382](https://www.github.com/netlify/eslint-config-node/issues/382)) ([bb5144d](https://www.github.com/netlify/eslint-config-node/commit/bb5144d97e3c190182629fe87f839b693c2ffb17)) 340 | 341 | ### [4.0.2](https://www.github.com/netlify/eslint-config-node/compare/v4.0.1...v4.0.2) (2021-12-20) 342 | 343 | 344 | ### Bug Fixes 345 | 346 | * **deps:** update babel monorepo to v7.16.5 ([#378](https://www.github.com/netlify/eslint-config-node/issues/378)) ([a49b0db](https://www.github.com/netlify/eslint-config-node/commit/a49b0db097a830b7c6e003b1c90d3132e15833cf)) 347 | * **deps:** update dependency eslint-plugin-promise to v6 ([#380](https://www.github.com/netlify/eslint-config-node/issues/380)) ([16257df](https://www.github.com/netlify/eslint-config-node/commit/16257dfc04e490fe7d6b6256e0dd97a103fc9885)) 348 | * **deps:** update typescript-eslint monorepo to v5.7.0 ([#379](https://www.github.com/netlify/eslint-config-node/issues/379)) ([7bd94de](https://www.github.com/netlify/eslint-config-node/commit/7bd94decdb0acc6aaccd121026ea798bf8b8ed45)) 349 | 350 | ### [4.0.1](https://www.github.com/netlify/eslint-config-node/compare/v4.0.0...v4.0.1) (2021-12-16) 351 | 352 | 353 | ### Bug Fixes 354 | 355 | * linting `*.mjs`, `*.cjs`, `*.mts` and `*.cts` ([#376](https://www.github.com/netlify/eslint-config-node/issues/376)) ([1c8845e](https://www.github.com/netlify/eslint-config-node/commit/1c8845e046792717316d5a235e9934790116a3ca)) 356 | 357 | ## [4.0.0](https://www.github.com/netlify/eslint-config-node/compare/v3.3.11...v4.0.0) (2021-12-06) 358 | 359 | 360 | ### ⚠ BREAKING CHANGES 361 | 362 | * inline react and HTML linting configs (#368) 363 | 364 | ### Features 365 | 366 | * add Cypress linting configuration ([#369](https://www.github.com/netlify/eslint-config-node/issues/369)) ([a93112f](https://www.github.com/netlify/eslint-config-node/commit/a93112f3a0dd240533e04935be099758edb98c87)) 367 | 368 | 369 | ### Bug Fixes 370 | 371 | * **deps:** update dependency eslint-plugin-promise to v5.2.0 ([#371](https://www.github.com/netlify/eslint-config-node/issues/371)) ([179cb1d](https://www.github.com/netlify/eslint-config-node/commit/179cb1d501ebeb4a69e93ff9d35676974d013ede)) 372 | * **deps:** update dependency prettier to v2.5.1 ([#370](https://www.github.com/netlify/eslint-config-node/issues/370)) ([78cf772](https://www.github.com/netlify/eslint-config-node/commit/78cf772c8bc3fd0e533058a73d1b7fab702f2168)) 373 | * **deps:** update typescript-eslint monorepo to v5.5.0 ([#372](https://www.github.com/netlify/eslint-config-node/issues/372)) ([80e1fea](https://www.github.com/netlify/eslint-config-node/commit/80e1fea0a77be810d271f4cbcb44721e4166d004)) 374 | 375 | 376 | ### Miscellaneous Chores 377 | 378 | * inline react and HTML linting configs ([#368](https://www.github.com/netlify/eslint-config-node/issues/368)) ([ad43851](https://www.github.com/netlify/eslint-config-node/commit/ad438518e7f4d8ebf92733bce40834c7404b104c)) 379 | 380 | ### [3.3.11](https://www.github.com/netlify/eslint-config-node/compare/v3.3.10...v3.3.11) (2021-12-02) 381 | 382 | 383 | ### Bug Fixes 384 | 385 | * linting for dynamic imports ([#366](https://www.github.com/netlify/eslint-config-node/issues/366)) ([3f4a131](https://www.github.com/netlify/eslint-config-node/commit/3f4a1312ce1b8baecb2075769965125ca63936f4)) 386 | 387 | ### [3.3.10](https://www.github.com/netlify/eslint-config-node/compare/v3.3.9...v3.3.10) (2021-11-30) 388 | 389 | 390 | ### Bug Fixes 391 | 392 | * enable new rules since dropping Node 10/11 support ([#361](https://www.github.com/netlify/eslint-config-node/issues/361)) ([bfe54c0](https://www.github.com/netlify/eslint-config-node/commit/bfe54c06ebc88d69aea4395af00831221b6c4414)) 393 | 394 | ### [3.3.9](https://www.github.com/netlify/eslint-config-node/compare/v3.3.8...v3.3.9) (2021-11-29) 395 | 396 | 397 | ### Bug Fixes 398 | 399 | * add `node/no-missing-import` exception for README.md ([#362](https://www.github.com/netlify/eslint-config-node/issues/362)) ([dbf806c](https://www.github.com/netlify/eslint-config-node/commit/dbf806ce58218522b62c17504187089864d98816)) 400 | * **deps:** update dependency prettier to v2.5.0 ([#363](https://www.github.com/netlify/eslint-config-node/issues/363)) ([f20d022](https://www.github.com/netlify/eslint-config-node/commit/f20d02279033ba6513bd2d9c57f87387ff6c2dbc)) 401 | 402 | ### [3.3.8](https://www.github.com/netlify/eslint-config-node/compare/v3.3.7...v3.3.8) (2021-11-22) 403 | 404 | 405 | ### Bug Fixes 406 | 407 | * **deps:** update commitlint monorepo to v15 (major) ([#357](https://www.github.com/netlify/eslint-config-node/issues/357)) ([20be7e1](https://www.github.com/netlify/eslint-config-node/commit/20be7e1d4c9192d98b7144eab6cd89535f3af92b)) 408 | * **deps:** update dependency eslint-plugin-react to v7.27.1 ([#355](https://www.github.com/netlify/eslint-config-node/issues/355)) ([03eae3d](https://www.github.com/netlify/eslint-config-node/commit/03eae3db2fb440973db268b4562463e5067e2745)) 409 | * **deps:** update dependency eslint-plugin-unicorn to v39 ([#358](https://www.github.com/netlify/eslint-config-node/issues/358)) ([68c8c53](https://www.github.com/netlify/eslint-config-node/commit/68c8c53be02bbce3182d35445af83e1ebc39e3b6)) 410 | * **deps:** update typescript-eslint monorepo to v5.4.0 ([#356](https://www.github.com/netlify/eslint-config-node/issues/356)) ([ab58c79](https://www.github.com/netlify/eslint-config-node/commit/ab58c796728c199f4b6e04b4a897cb95f8d2384a)) 411 | 412 | ### [3.3.7](https://www.github.com/netlify/eslint-config-node/compare/v3.3.6...v3.3.7) (2021-11-15) 413 | 414 | 415 | ### Bug Fixes 416 | 417 | * **deps:** update dependency @babel/eslint-parser to v7.16.3 ([#350](https://www.github.com/netlify/eslint-config-node/issues/350)) ([98ca26b](https://www.github.com/netlify/eslint-config-node/commit/98ca26b66b633afbe440a6c0f6fde2b23228d96b)) 418 | * **deps:** update dependency eslint-plugin-import to v2.25.3 ([#351](https://www.github.com/netlify/eslint-config-node/issues/351)) ([3ec0905](https://www.github.com/netlify/eslint-config-node/commit/3ec0905976ca1a2b91bfe9d456640f752430981b)) 419 | * **deps:** update dependency eslint-plugin-react to v7.27.0 ([#353](https://www.github.com/netlify/eslint-config-node/issues/353)) ([db408fa](https://www.github.com/netlify/eslint-config-node/commit/db408fab3341442dda64359e3a9d1ab797e6206d)) 420 | * **deps:** update typescript-eslint monorepo to v5.3.1 ([#352](https://www.github.com/netlify/eslint-config-node/issues/352)) ([602db92](https://www.github.com/netlify/eslint-config-node/commit/602db92a49c874a0aa8139714439ada45d151ee0)) 421 | 422 | ### [3.3.6](https://www.github.com/netlify/eslint-config-node/compare/v3.3.5...v3.3.6) (2021-11-08) 423 | 424 | 425 | ### Bug Fixes 426 | 427 | * **deps:** update commitlint monorepo to v14 (major) ([#346](https://www.github.com/netlify/eslint-config-node/issues/346)) ([b1c309a](https://www.github.com/netlify/eslint-config-node/commit/b1c309a86ed9623a58b3607c2b132ed3ac40bbac)) 428 | * **deps:** update dependency eslint-plugin-unicorn to v38 ([#347](https://www.github.com/netlify/eslint-config-node/issues/347)) ([c88a054](https://www.github.com/netlify/eslint-config-node/commit/c88a054373c45c5e05f35122c6868f3c5bd3c29f)) 429 | * **deps:** update typescript-eslint monorepo to v5.3.0 ([#345](https://www.github.com/netlify/eslint-config-node/issues/345)) ([28eedd4](https://www.github.com/netlify/eslint-config-node/commit/28eedd4e1389ad2bf3503c431dbebf3386fdb411)) 430 | 431 | ### [3.3.5](https://www.github.com/netlify/eslint-config-node/compare/v3.3.4...v3.3.5) (2021-11-01) 432 | 433 | 434 | ### Bug Fixes 435 | 436 | * **deps:** update babel monorepo to v7.16.0 ([8bb0c75](https://www.github.com/netlify/eslint-config-node/commit/8bb0c75e3bb3a8a5c5605334cd77f17c27382d0b)) 437 | * **deps:** update dependency is-ci to v3.0.1 ([8a51beb](https://www.github.com/netlify/eslint-config-node/commit/8a51bebc43144b3e9133ff8cdb31171079ce3197)) 438 | * **deps:** update typescript-eslint monorepo to v5.2.0 ([2ed0bd6](https://www.github.com/netlify/eslint-config-node/commit/2ed0bd66805809379a16ca2500a38068af9d8565)) 439 | 440 | ### [3.3.4](https://www.github.com/netlify/eslint-config-node/compare/v3.3.3...v3.3.4) (2021-10-25) 441 | 442 | 443 | ### Bug Fixes 444 | 445 | * **deps:** update dependency eslint-plugin-ava to v13.1.0 ([#333](https://www.github.com/netlify/eslint-config-node/issues/333)) ([d34555a](https://www.github.com/netlify/eslint-config-node/commit/d34555a60179ad14609bec221fea5e370232ce96)) 446 | * **deps:** update dependency eslint-plugin-import to v2.25.2 ([#330](https://www.github.com/netlify/eslint-config-node/issues/330)) ([358157b](https://www.github.com/netlify/eslint-config-node/commit/358157b0ecfafc3c3bbc0fdf84f24bd5ec936edc)) 447 | * **deps:** update dependency eslint-plugin-promise to v5.1.1 ([#332](https://www.github.com/netlify/eslint-config-node/issues/332)) ([6b2c835](https://www.github.com/netlify/eslint-config-node/commit/6b2c8352b4eeaa2d8e6e941a319b9c1501be86b3)) 448 | * **deps:** update typescript-eslint monorepo to v5.1.0 ([#334](https://www.github.com/netlify/eslint-config-node/issues/334)) ([f9d6431](https://www.github.com/netlify/eslint-config-node/commit/f9d64313760d29f2026c646b00b6a1b833ac94af)) 449 | 450 | ### [3.3.3](https://www.github.com/netlify/eslint-config-node/compare/v3.3.2...v3.3.3) (2021-10-12) 451 | 452 | 453 | ### Bug Fixes 454 | 455 | * **deps:** update dependency eslint-plugin-import to v2.25.1 ([#326](https://www.github.com/netlify/eslint-config-node/issues/326)) ([6a5a6fb](https://www.github.com/netlify/eslint-config-node/commit/6a5a6fb1ded3a800060c38b4c8ed12b2f7ac1b65)) 456 | 457 | ### [3.3.2](https://www.github.com/netlify/eslint-config-node/compare/v3.3.1...v3.3.2) (2021-10-12) 458 | 459 | 460 | ### Bug Fixes 461 | 462 | * **deps:** update typescript-eslint monorepo to v5 ([#327](https://www.github.com/netlify/eslint-config-node/issues/327)) ([6d725dc](https://www.github.com/netlify/eslint-config-node/commit/6d725dcb5aea0b7625ba874787778086dc2d46c1)) 463 | 464 | ### [3.3.1](https://www.github.com/netlify/eslint-config-node/compare/v3.3.0...v3.3.1) (2021-10-12) 465 | 466 | 467 | ### Bug Fixes 468 | 469 | * **deps:** update babel monorepo to v7.15.8 ([#318](https://www.github.com/netlify/eslint-config-node/issues/318)) ([e8d70d0](https://www.github.com/netlify/eslint-config-node/commit/e8d70d041c7aa980909c3636f513d83080db121e)) 470 | * **deps:** update dependency eslint-plugin-unicorn to v37 ([#325](https://www.github.com/netlify/eslint-config-node/issues/325)) ([169ce77](https://www.github.com/netlify/eslint-config-node/commit/169ce771d0c120fa3a7cc79f006f907ddecc8361)) 471 | * **deps:** update typescript-eslint monorepo to v4.33.0 ([#320](https://www.github.com/netlify/eslint-config-node/issues/320)) ([8e20833](https://www.github.com/netlify/eslint-config-node/commit/8e20833802f14476f914b842990008a3bc28e0cb)) 472 | 473 | ## [3.3.0](https://www.github.com/netlify/eslint-config-node/compare/v3.2.11...v3.3.0) (2021-10-04) 474 | 475 | 476 | ### Features 477 | 478 | * add TypeScript rules ([#230](https://www.github.com/netlify/eslint-config-node/issues/230)) ([f995360](https://www.github.com/netlify/eslint-config-node/commit/f995360b1f62cfffdfb640f2873812f665688432)) 479 | 480 | 481 | ### Bug Fixes 482 | 483 | * **deps:** update commitlint monorepo to v13.2.0 ([#314](https://www.github.com/netlify/eslint-config-node/issues/314)) ([0d27568](https://www.github.com/netlify/eslint-config-node/commit/0d2756804c75fa3e6a71b7a3e47a58819b350733)) 484 | * **deps:** update dependency eslint-plugin-react to v7.26.1 ([#313](https://www.github.com/netlify/eslint-config-node/issues/313)) ([38560e7](https://www.github.com/netlify/eslint-config-node/commit/38560e77c9d9e6ededf216a87dbd02fd1a82d0ef)) 485 | * **deps:** update typescript-eslint monorepo to v4.32.0 ([#315](https://www.github.com/netlify/eslint-config-node/issues/315)) ([5edc92a](https://www.github.com/netlify/eslint-config-node/commit/5edc92abddfafbc7de32ea9b4733fba3f4c802ff)) 486 | 487 | ### [3.2.11](https://www.github.com/netlify/eslint-config-node/compare/v3.2.10...v3.2.11) (2021-09-29) 488 | 489 | 490 | ### Bug Fixes 491 | 492 | * add ES modules linting ([#309](https://www.github.com/netlify/eslint-config-node/issues/309)) ([c61acbc](https://www.github.com/netlify/eslint-config-node/commit/c61acbc98521bdf93d67a1beebf5e76564a32464)) 493 | 494 | ### [3.2.10](https://www.github.com/netlify/eslint-config-node/compare/v3.2.9...v3.2.10) (2021-09-21) 495 | 496 | 497 | ### Bug Fixes 498 | 499 | * **deps:** update dependency eslint-plugin-react to v7.26.0 ([#303](https://www.github.com/netlify/eslint-config-node/issues/303)) ([6b84476](https://www.github.com/netlify/eslint-config-node/commit/6b84476fa5612c6407205231999936c116a5666e)) 500 | 501 | ### [3.2.9](https://www.github.com/netlify/eslint-config-node/compare/v3.2.8...v3.2.9) (2021-09-20) 502 | 503 | 504 | ### Bug Fixes 505 | 506 | * **deps:** update dependency eslint-plugin-ava to v13 ([#304](https://www.github.com/netlify/eslint-config-node/issues/304)) ([a532797](https://www.github.com/netlify/eslint-config-node/commit/a532797edcd02f8e7ea088281e3d5bbbd381bb99)) 507 | 508 | ### [3.2.8](https://www.github.com/netlify/eslint-config-node/compare/v3.2.7...v3.2.8) (2021-09-16) 509 | 510 | 511 | ### Bug Fixes 512 | 513 | * **deps:** update dependency prettier to v2.4.1 ([#297](https://www.github.com/netlify/eslint-config-node/issues/297)) ([d756b06](https://www.github.com/netlify/eslint-config-node/commit/d756b0652dd05f8310554cbf8997a53462c3e9e0)) 514 | 515 | ### [3.2.7](https://www.github.com/netlify/eslint-config-node/compare/v3.2.6...v3.2.7) (2021-09-13) 516 | 517 | 518 | ### Bug Fixes 519 | 520 | * **deps:** update dependency eslint-plugin-unicorn to v36 ([#298](https://www.github.com/netlify/eslint-config-node/issues/298)) ([ee5d3e5](https://www.github.com/netlify/eslint-config-node/commit/ee5d3e54c7c31f62ed741bcdb885a31c8493cf13)) 521 | 522 | ### [3.2.6](https://www.github.com/netlify/eslint-config-node/compare/v3.2.5...v3.2.6) (2021-09-01) 523 | 524 | 525 | ### Bug Fixes 526 | 527 | * `import/no-cycle` rule makes linting fail in CI ([#292](https://www.github.com/netlify/eslint-config-node/issues/292)) ([4700216](https://www.github.com/netlify/eslint-config-node/commit/47002160891f7893851abc8111e4bf74b0c425c9)) 528 | 529 | ### [3.2.5](https://www.github.com/netlify/eslint-config-node/compare/v3.2.4...v3.2.5) (2021-08-30) 530 | 531 | 532 | ### Bug Fixes 533 | 534 | * **deps:** update dependency eslint-plugin-react to v7.25.1 ([#289](https://www.github.com/netlify/eslint-config-node/issues/289)) ([b07ed09](https://www.github.com/netlify/eslint-config-node/commit/b07ed09fe3ae06fe01e8cd85a77a62bbb83eb96d)) 535 | 536 | ### [3.2.4](https://www.github.com/netlify/eslint-config-node/compare/v3.2.3...v3.2.4) (2021-08-25) 537 | 538 | 539 | ### Bug Fixes 540 | 541 | * **deps:** update dependency eslint-plugin-import to v2.24.2 ([#287](https://www.github.com/netlify/eslint-config-node/issues/287)) ([34bd226](https://www.github.com/netlify/eslint-config-node/commit/34bd226e36915324e435e6dd79ac17fb20ef4e01)) 542 | 543 | ### [3.2.3](https://www.github.com/netlify/eslint-config-node/compare/v3.2.2...v3.2.3) (2021-08-23) 544 | 545 | 546 | ### Bug Fixes 547 | 548 | * **deps:** update dependency eslint-plugin-import to v2.24.1 ([f34f9ea](https://www.github.com/netlify/eslint-config-node/commit/f34f9ea681c78a49a9d7858fbfcb381405329dd0)) 549 | 550 | ### [3.2.2](https://www.github.com/netlify/eslint-config-node/compare/v3.2.1...v3.2.2) (2021-08-16) 551 | 552 | 553 | ### Bug Fixes 554 | 555 | * **deps:** update dependency eslint-import-resolver-node to v0.3.6 ([983f5dd](https://www.github.com/netlify/eslint-config-node/commit/983f5dddf95e1b924acddb1cea8d74cc8af94544)) 556 | 557 | ### [3.2.1](https://www.github.com/netlify/eslint-config-node/compare/v3.2.0...v3.2.1) (2021-08-09) 558 | 559 | 560 | ### Bug Fixes 561 | 562 | * disable `unicorn/prefer-object-from-entries` ([#275](https://www.github.com/netlify/eslint-config-node/issues/275)) ([3acbfd4](https://www.github.com/netlify/eslint-config-node/commit/3acbfd43a01affbc8fed39ea7ece45a65db0d5a3)) 563 | 564 | ## [3.2.0](https://www.github.com/netlify/eslint-config-node/compare/v3.1.11...v3.2.0) (2021-08-09) 565 | 566 | 567 | ### Features 568 | 569 | * use new options from latest version of `eslint-plugin-import` ([#273](https://www.github.com/netlify/eslint-config-node/issues/273)) ([979ab61](https://www.github.com/netlify/eslint-config-node/commit/979ab61f1b6075686a8b12d97300aa443d59d243)) 570 | 571 | ### [3.1.11](https://www.github.com/netlify/eslint-config-node/compare/v3.1.10...v3.1.11) (2021-08-09) 572 | 573 | 574 | ### Bug Fixes 575 | 576 | * **deps:** update dependency eslint-import-resolver-node to v0.3.5 ([f5df83c](https://www.github.com/netlify/eslint-config-node/commit/f5df83c0fa7e3479ab9a54ee54284c9fd59ede7a)) 577 | * **deps:** update dependency eslint-plugin-import to v2.24.0 ([cd3924c](https://www.github.com/netlify/eslint-config-node/commit/cd3924c21d3801be868222598d6f7618a760725c)) 578 | * **deps:** update dependency eslint-plugin-unicorn to v35 ([#269](https://www.github.com/netlify/eslint-config-node/issues/269)) ([157984c](https://www.github.com/netlify/eslint-config-node/commit/157984c6958b3b85c0ccf530e118989b98c0be04)) 579 | 580 | ### [3.1.10](https://www.github.com/netlify/eslint-config-node/compare/v3.1.9...v3.1.10) (2021-08-02) 581 | 582 | 583 | ### Bug Fixes 584 | 585 | * **deps:** update dependency @babel/eslint-parser to v7.14.9 ([619c64b](https://www.github.com/netlify/eslint-config-node/commit/619c64b5b41fa3e314cbf74b7b7ff93f2790d14a)) 586 | * **deps:** update dependency eslint to v7.32.0 ([f3dfc82](https://www.github.com/netlify/eslint-config-node/commit/f3dfc8262956445de6b402f4fd23946198d4ec8f)) 587 | 588 | ### [3.1.9](https://www.github.com/netlify/eslint-config-node/compare/v3.1.8...v3.1.9) (2021-07-26) 589 | 590 | 591 | ### Bug Fixes 592 | 593 | * **deps:** update commitlint monorepo to v13 ([#257](https://www.github.com/netlify/eslint-config-node/issues/257)) ([481713c](https://www.github.com/netlify/eslint-config-node/commit/481713ccbd5e2e2d700c2fe811ecd59737c49092)) 594 | * **deps:** update dependency @babel/core to v7.14.8 ([544c11d](https://www.github.com/netlify/eslint-config-node/commit/544c11d16094880cb5711097ec9bf4474cb4a9d2)) 595 | 596 | ### [3.1.8](https://www.github.com/netlify/eslint-config-node/compare/v3.1.7...v3.1.8) (2021-07-19) 597 | 598 | 599 | ### Bug Fixes 600 | 601 | * **deps:** update dependency eslint to v7.31.0 ([37895ec](https://www.github.com/netlify/eslint-config-node/commit/37895ecdc120283fd1a6c17c897954bee9ffe439)) 602 | 603 | ### [3.1.7](https://www.github.com/netlify/eslint-config-node/compare/v3.1.6...v3.1.7) (2021-07-05) 604 | 605 | 606 | ### Bug Fixes 607 | 608 | * **deps:** update dependency eslint to v7.30.0 ([5d3b2be](https://www.github.com/netlify/eslint-config-node/commit/5d3b2be2615673a286b77ff48813857ff327815e)) 609 | * **deps:** update dependency eslint-plugin-unicorn to v34 ([#246](https://www.github.com/netlify/eslint-config-node/issues/246)) ([95c0a29](https://www.github.com/netlify/eslint-config-node/commit/95c0a299a7063a11a97b1af70019739f44f86ae3)) 610 | 611 | ### [3.1.6](https://www.github.com/netlify/eslint-config-node/compare/v3.1.5...v3.1.6) (2021-06-28) 612 | 613 | 614 | ### Bug Fixes 615 | 616 | * **deps:** update dependency @babel/eslint-parser to v7.14.7 ([5376afa](https://www.github.com/netlify/eslint-config-node/commit/5376afac3dc8e9b1ff90db4d66a233fc828ba244)) 617 | 618 | ### [3.1.5](https://www.github.com/netlify/eslint-config-node/compare/v3.1.4...v3.1.5) (2021-06-22) 619 | 620 | 621 | ### Bug Fixes 622 | 623 | * **deps:** update dependency @babel/core to v7.14.6 ([fbf6ff6](https://www.github.com/netlify/eslint-config-node/commit/fbf6ff6d01466e498317d535f96567fb3819a097)) 624 | 625 | ### [3.1.4](https://www.github.com/netlify/eslint-config-node/compare/v3.1.3...v3.1.4) (2021-06-14) 626 | 627 | 628 | ### Bug Fixes 629 | 630 | * **deps:** update babel monorepo to v7.14.5 ([de0cb89](https://www.github.com/netlify/eslint-config-node/commit/de0cb89008e9f2e70ea0963278d3f8d7841b223d)) 631 | 632 | ### [3.1.3](https://www.github.com/netlify/eslint-config-node/compare/v3.1.2...v3.1.3) (2021-06-07) 633 | 634 | 635 | ### Bug Fixes 636 | 637 | * **linting:** disable prefer-prototype-methods ([#228](https://www.github.com/netlify/eslint-config-node/issues/228)) ([6f7ed31](https://www.github.com/netlify/eslint-config-node/commit/6f7ed3103c3b3314a1a56283f2cbc286fab8480d)) 638 | 639 | ### [3.1.2](https://www.github.com/netlify/eslint-config-node/compare/v3.1.1...v3.1.2) (2021-06-07) 640 | 641 | 642 | ### Bug Fixes 643 | 644 | * **deps:** update dependency eslint to v7.28.0 ([b625be7](https://www.github.com/netlify/eslint-config-node/commit/b625be7b96fb62071ec8ee069b625f56d9053c34)) 645 | * **deps:** update dependency eslint-plugin-unicorn to v33 ([#223](https://www.github.com/netlify/eslint-config-node/issues/223)) ([2411134](https://www.github.com/netlify/eslint-config-node/commit/2411134f380c416bd6930e563d69ae0fafdcf3e4)) 646 | * **deps:** update dependency execa to v5.1.1 ([bea1012](https://www.github.com/netlify/eslint-config-node/commit/bea101260cedab3d287a6032e12fd661beb04c28)) 647 | 648 | ### [3.1.1](https://www.github.com/netlify/eslint-config-node/compare/v3.1.0...v3.1.1) (2021-06-02) 649 | 650 | 651 | ### Bug Fixes 652 | 653 | * **deps:** update dependency execa to v5.0.1 ([#212](https://www.github.com/netlify/eslint-config-node/issues/212)) ([49c8640](https://www.github.com/netlify/eslint-config-node/commit/49c864083cf1d72cdee9e0e2f8efb5a5c28b2fb4)) 654 | 655 | ## [3.1.0](https://www.github.com/netlify/eslint-config-node/compare/v3.0.4...v3.1.0) (2021-06-02) 656 | 657 | 658 | ### Features 659 | 660 | * add more status codes to `no-magic-numbers` ([#217](https://www.github.com/netlify/eslint-config-node/issues/217)) ([a30ae28](https://www.github.com/netlify/eslint-config-node/commit/a30ae28cae5d2b068731a01c8370aa4b0c3afc0c)) 661 | 662 | ### [3.0.4](https://www.github.com/netlify/eslint-config-node/compare/v3.0.3...v3.0.4) (2021-05-31) 663 | 664 | 665 | ### Bug Fixes 666 | 667 | * **deps:** update dependency @babel/eslint-parser to v7.14.4 ([b8357bd](https://www.github.com/netlify/eslint-config-node/commit/b8357bdb8b3c10ee88d43e807df9ea493967b893)) 668 | * **deps:** update dependency eslint-plugin-import to v2.23.4 ([381290d](https://www.github.com/netlify/eslint-config-node/commit/381290db67d23545f488fa71c863a3b8959adcc6)) 669 | 670 | ### [3.0.3](https://www.github.com/netlify/eslint-config-node/compare/v3.0.2...v3.0.3) (2021-05-30) 671 | 672 | 673 | ### Bug Fixes 674 | 675 | * **deps:** update dependency eslint-config-standard to v16.0.3 ([#208](https://www.github.com/netlify/eslint-config-node/issues/208)) ([f84e75a](https://www.github.com/netlify/eslint-config-node/commit/f84e75a22d9cb38d68d35873a800d56d0539f834)) 676 | * **deps:** update dependency eslint-plugin-promise to v5 ([#160](https://www.github.com/netlify/eslint-config-node/issues/160)) ([55275bd](https://www.github.com/netlify/eslint-config-node/commit/55275bd3c96dd44fdf588e2a278fb836fe7b1265)) 677 | 678 | ### [3.0.2](https://www.github.com/netlify/eslint-config-node/compare/v3.0.1...v3.0.2) (2021-05-30) 679 | 680 | 681 | ### Bug Fixes 682 | 683 | * make functional programming linting opt-in ([#206](https://www.github.com/netlify/eslint-config-node/issues/206)) ([d984904](https://www.github.com/netlify/eslint-config-node/commit/d984904ab053a0ccb44f278bbbd51ed6a3255d11)) 684 | 685 | ### [3.0.1](https://www.github.com/netlify/eslint-config-node/compare/v3.0.0...v3.0.1) (2021-05-24) 686 | 687 | 688 | ### Bug Fixes 689 | 690 | * **deps:** update dependency eslint to v7.27.0 ([eda1dba](https://www.github.com/netlify/eslint-config-node/commit/eda1dbac7370d39cf3e54ccc5506bd66c4c7b463)) 691 | * **deps:** update dependency eslint-plugin-import to v2.23.3 ([2cbc2c3](https://www.github.com/netlify/eslint-config-node/commit/2cbc2c3a68990250913c66322e5ffabe3dd15e80)) 692 | 693 | ## [3.0.0](https://www.github.com/netlify/eslint-config-node/compare/v2.6.11...v3.0.0) (2021-05-20) 694 | 695 | 696 | ### ⚠ BREAKING CHANGES 697 | 698 | * require Node 16 (#198) 699 | 700 | ### Miscellaneous Chores 701 | 702 | * require Node 16 ([#198](https://www.github.com/netlify/eslint-config-node/issues/198)) ([2ccd619](https://www.github.com/netlify/eslint-config-node/commit/2ccd619f19b06eabfcc561184a2ccece12c69874)) 703 | 704 | ### [2.6.11](https://www.github.com/netlify/eslint-config-node/compare/v2.6.10...v2.6.11) (2021-05-19) 705 | 706 | 707 | ### Bug Fixes 708 | 709 | * remove file-extension-in-import ([#193](https://www.github.com/netlify/eslint-config-node/issues/193)) ([6609f96](https://www.github.com/netlify/eslint-config-node/commit/6609f96f72073cb476c75d795ef071f2aadf50e0)) 710 | 711 | ### [2.6.10](https://www.github.com/netlify/eslint-config-node/compare/v2.6.9...v2.6.10) (2021-05-17) 712 | 713 | 714 | ### Miscellaneous Chores 715 | 716 | * release 2.6.10 ([eaf516d](https://www.github.com/netlify/eslint-config-node/commit/eaf516d94018e9fdad2f5c3c649f5540a0dc87f8)) 717 | 718 | ### [2.6.9](https://www.github.com/netlify/eslint-config-node/compare/v2.6.8...v2.6.9) (2021-05-17) 719 | 720 | 721 | ### Bug Fixes 722 | 723 | * import/extensions rule ([c7ccba7](https://www.github.com/netlify/eslint-config-node/commit/c7ccba70a7669436d1ed565ff936a4ad986c573a)) 724 | 725 | ### [2.6.8](https://www.github.com/netlify/eslint-config-node/compare/v2.6.7...v2.6.8) (2021-05-17) 726 | 727 | 728 | ### Bug Fixes 729 | 730 | * **deps:** update babel monorepo to v7.14.2 ([d608dc2](https://www.github.com/netlify/eslint-config-node/commit/d608dc250774f29ef317887c654e497e90976da3)) 731 | * **deps:** update commitlint monorepo to v12.1.4 ([783c317](https://www.github.com/netlify/eslint-config-node/commit/783c317f1209f662a726e64982aa23c79933732d)) 732 | * **deps:** update dependency eslint-plugin-import to v2.23.2 ([33e02d3](https://www.github.com/netlify/eslint-config-node/commit/33e02d396d841a663b7e54b6c2affb264f51d503)) 733 | 734 | ### [2.6.7](https://www.github.com/netlify/eslint-config-node/compare/v2.6.6...v2.6.7) (2021-05-10) 735 | 736 | 737 | ### Bug Fixes 738 | 739 | * disable unicorn flat and flatmap rules ([#182](https://www.github.com/netlify/eslint-config-node/issues/182)) ([c198c3d](https://www.github.com/netlify/eslint-config-node/commit/c198c3de9a567de3a5c8f79733e8a84934f43f65)) 740 | 741 | ### [2.6.6](https://www.github.com/netlify/eslint-config-node/compare/v2.6.5...v2.6.6) (2021-05-10) 742 | 743 | 744 | ### Bug Fixes 745 | 746 | * **deps:** update dependency eslint to v7.26.0 ([eb68a13](https://www.github.com/netlify/eslint-config-node/commit/eb68a13c72fe664bee485a4975d70b3f0b2df8ae)) 747 | * **deps:** update dependency eslint-plugin-unicorn to v32 ([#179](https://www.github.com/netlify/eslint-config-node/issues/179)) ([1bf39d3](https://www.github.com/netlify/eslint-config-node/commit/1bf39d35ef583182b4a180298168732eecd503a4)) 748 | 749 | ### [2.6.5](https://www.github.com/netlify/eslint-config-node/compare/v2.6.4...v2.6.5) (2021-05-03) 750 | 751 | 752 | ### Bug Fixes 753 | 754 | * **deps:** update dependency @babel/core to v7.14.0 ([c622d54](https://www.github.com/netlify/eslint-config-node/commit/c622d549731d1eaebc6b004777946b1a6064d9b8)) 755 | 756 | ### [2.6.4](https://www.github.com/netlify/eslint-config-node/compare/v2.6.3...v2.6.4) (2021-04-26) 757 | 758 | 759 | ### Bug Fixes 760 | 761 | * disable prefer-node-protocol ([#171](https://www.github.com/netlify/eslint-config-node/issues/171)) ([d5b8fd9](https://www.github.com/netlify/eslint-config-node/commit/d5b8fd9fd7886f2eb82dc43653909683f7b1f300)) 762 | 763 | ### [2.6.3](https://www.github.com/netlify/eslint-config-node/compare/v2.6.2...v2.6.3) (2021-04-26) 764 | 765 | 766 | ### Bug Fixes 767 | 768 | * **deps:** update dependency @babel/core to v7.13.16 ([4231849](https://www.github.com/netlify/eslint-config-node/commit/42318490d18ac18b16c5e3a355ccfde2073f2f34)) 769 | * **deps:** update dependency eslint to v7.25.0 ([1d1782f](https://www.github.com/netlify/eslint-config-node/commit/1d1782f46464ca884e83b13114d5fd04c7d16b86)) 770 | * **deps:** update dependency eslint-config-prettier to v8.3.0 ([98d6089](https://www.github.com/netlify/eslint-config-node/commit/98d6089643c4ed58e508c57ab52592974af98aa5)) 771 | * **deps:** update dependency eslint-plugin-unicorn to v31 ([#168](https://www.github.com/netlify/eslint-config-node/issues/168)) ([1a598c6](https://www.github.com/netlify/eslint-config-node/commit/1a598c6a89883b248fb3a64ea6d7cdcdfb5e4b03)) 772 | 773 | ### [2.6.2](https://www.github.com/netlify/eslint-config-node/compare/v2.6.1...v2.6.2) (2021-04-12) 774 | 775 | 776 | ### Bug Fixes 777 | 778 | * **deps:** update dependency @babel/core to v7.13.15 ([1b2f2b5](https://www.github.com/netlify/eslint-config-node/commit/1b2f2b5deee03cd2a1b9af28761607debcc2aaa8)) 779 | * **deps:** update dependency eslint to v7.24.0 ([af91d9b](https://www.github.com/netlify/eslint-config-node/commit/af91d9b6d4fb24b03ae723de96c69a70aab6f131)) 780 | * **deps:** update dependency eslint-plugin-react to v7.23.2 ([55b0191](https://www.github.com/netlify/eslint-config-node/commit/55b0191dfe0ddee6f788c9d3c86e90b3b6bcc9fb)) 781 | 782 | ### [2.6.1](https://www.github.com/netlify/eslint-config-node/compare/v2.6.0...v2.6.1) (2021-04-05) 783 | 784 | 785 | ### Bug Fixes 786 | 787 | * **deps:** update babel monorepo to v7.13.14 ([e2f3c51](https://www.github.com/netlify/eslint-config-node/commit/e2f3c51a336e7b488aa00e33f99eb2f1a0b6d421)) 788 | * **deps:** update commitlint monorepo to v12.1.1 ([63af7fc](https://www.github.com/netlify/eslint-config-node/commit/63af7fc6acbc6ceb274e89f56d0af3b0b48d4ef4)) 789 | * **deps:** update dependency is-ci to v3 ([#153](https://www.github.com/netlify/eslint-config-node/issues/153)) ([8d3fdc0](https://www.github.com/netlify/eslint-config-node/commit/8d3fdc084d3a3d14b49daa7fada80a2fbb6fe9ed)) 790 | 791 | ## [2.6.0](https://www.github.com/netlify/eslint-config-node/compare/v2.5.4...v2.6.0) (2021-03-30) 792 | 793 | 794 | ### Features 795 | 796 | * add run-ci and run-local bins ([#148](https://www.github.com/netlify/eslint-config-node/issues/148)) ([35eceb5](https://www.github.com/netlify/eslint-config-node/commit/35eceb59d64a87020dcf9b6394a8789100c47fc7)) 797 | 798 | ### [2.5.4](https://www.github.com/netlify/eslint-config-node/compare/v2.5.3...v2.5.4) (2021-03-29) 799 | 800 | 801 | ### Bug Fixes 802 | 803 | * **deps:** update dependency eslint-plugin-ava to v12 ([#144](https://www.github.com/netlify/eslint-config-node/issues/144)) ([599a60c](https://www.github.com/netlify/eslint-config-node/commit/599a60c5b8deac10208adf3a65beab7ceba42598)) 804 | 805 | ### [2.5.3](https://www.github.com/netlify/eslint-config-node/compare/v2.5.2...v2.5.3) (2021-03-22) 806 | 807 | 808 | ### Bug Fixes 809 | 810 | * **deps:** update dependency eslint-plugin-unicorn to v29 ([#136](https://www.github.com/netlify/eslint-config-node/issues/136)) ([6f7a336](https://www.github.com/netlify/eslint-config-node/commit/6f7a33685d713563ae1fcb1d6b615a91fe871b72)) 811 | 812 | ### [2.5.2](https://www.github.com/netlify/eslint-config-node/compare/v2.5.1...v2.5.2) (2021-03-01) 813 | 814 | 815 | ### Bug Fixes 816 | 817 | * **deps:** use @babel/eslint-parser ([#125](https://www.github.com/netlify/eslint-config-node/issues/125)) ([fc3d102](https://www.github.com/netlify/eslint-config-node/commit/fc3d1020a90b038ba86d235fd9cd5549e7c463d1)) 818 | 819 | ### [2.5.1](https://www.github.com/netlify/eslint-config-node/compare/v2.5.0...v2.5.1) (2021-02-22) 820 | 821 | 822 | ### Bug Fixes 823 | 824 | * **deps:** update dependency eslint-config-prettier to v8 ([#118](https://www.github.com/netlify/eslint-config-node/issues/118)) ([a1d7432](https://www.github.com/netlify/eslint-config-node/commit/a1d7432751c18f560e5815447947bee44ca16be9)) 825 | 826 | ## [2.5.0](https://www.github.com/netlify/eslint-config-node/compare/v2.4.0...v2.5.0) (2021-02-16) 827 | 828 | 829 | ### Features 830 | 831 | * fix linting in Markdown files ([8c8b371](https://www.github.com/netlify/eslint-config-node/commit/8c8b3713f3f55e3015ca2794af992469fa7f0891)) 832 | 833 | ## [2.4.0](https://www.github.com/netlify/eslint-config-node/compare/v2.3.0...v2.4.0) (2021-02-16) 834 | 835 | 836 | ### Features 837 | 838 | * update markdown code blocks rules ([#112](https://www.github.com/netlify/eslint-config-node/issues/112)) ([0b5ce18](https://www.github.com/netlify/eslint-config-node/commit/0b5ce1817c10fff4dcfcf5f3a05be0cfdc7eb0d0)) 839 | 840 | ## [2.3.0](https://www.github.com/netlify/eslint-config-node/compare/v2.2.7...v2.3.0) (2021-02-15) 841 | 842 | 843 | ### Features 844 | 845 | * add husky to readme ([#110](https://www.github.com/netlify/eslint-config-node/issues/110)) ([133da46](https://www.github.com/netlify/eslint-config-node/commit/133da46306c30efa270d068b0553409c0cf49350)) 846 | 847 | ### [2.2.7](https://www.github.com/netlify/eslint-config-node/compare/v2.2.6...v2.2.7) (2021-02-15) 848 | 849 | 850 | ### Bug Fixes 851 | 852 | * **deps:** update dependency eslint-plugin-markdown to v2 ([#105](https://www.github.com/netlify/eslint-config-node/issues/105)) ([09b54ff](https://www.github.com/netlify/eslint-config-node/commit/09b54ff82640b22ea7c8ef96c0b86e181270e4d5)) 853 | * **deps:** update dependency eslint-plugin-unicorn to v28 ([#106](https://www.github.com/netlify/eslint-config-node/issues/106)) ([1d1e45c](https://www.github.com/netlify/eslint-config-node/commit/1d1e45c6d8383e2ec189dea96c5b2b970f7bed13)) 854 | 855 | ### [2.2.6](https://www.github.com/netlify/eslint-config-node/compare/v2.2.5...v2.2.6) (2021-01-25) 856 | 857 | 858 | ### Bug Fixes 859 | 860 | * **deps:** update dependency eslint-plugin-unicorn to v27 ([#92](https://www.github.com/netlify/eslint-config-node/issues/92)) ([46c7967](https://www.github.com/netlify/eslint-config-node/commit/46c796781382214c45d3fcc829b99e8db9f0a404)) 861 | * disable `unicorn/no-array-for-each` ESLint rule ([e2ae70a](https://www.github.com/netlify/eslint-config-node/commit/e2ae70aad3ab213684a8f9c7124b64e5ec936784)) 862 | 863 | ### [2.2.5](https://www.github.com/netlify/eslint-config-node/compare/v2.2.4...v2.2.5) (2021-01-04) 864 | 865 | 866 | ### Bug Fixes 867 | 868 | * unicorn ESLint plugin upgrade ([c8defbd](https://www.github.com/netlify/eslint-config-node/commit/c8defbda06128906e67df8ec62fe9abfd41acf0f)) 869 | 870 | ### [2.2.4](https://www.github.com/netlify/eslint-config-node/compare/v2.2.3...v2.2.4) (2021-01-04) 871 | 872 | 873 | ### Bug Fixes 874 | 875 | * **deps:** update dependency eslint to v7.17.0 ([#71](https://www.github.com/netlify/eslint-config-node/issues/71)) ([4bdef08](https://www.github.com/netlify/eslint-config-node/commit/4bdef0802ffe69820c916b871a694f837aaab1e1)) 876 | * **deps:** update dependency eslint-plugin-unicorn to v25 ([#73](https://www.github.com/netlify/eslint-config-node/issues/73)) ([7b6d64e](https://www.github.com/netlify/eslint-config-node/commit/7b6d64e4044ec4847cf2993e742391a2548b99a7)) 877 | 878 | ### [2.2.3](https://www.github.com/netlify/eslint-config-node/compare/v2.2.2...v2.2.3) (2020-12-21) 879 | 880 | 881 | ### Bug Fixes 882 | 883 | * **deps:** update dependency eslint-plugin-unicorn to v24 ([#66](https://www.github.com/netlify/eslint-config-node/issues/66)) ([1c28700](https://www.github.com/netlify/eslint-config-node/commit/1c2870012ecf3185265410335eeb9bd66dfba3a5)) 884 | 885 | ### [2.2.2](https://www.github.com/netlify/eslint-config-node/compare/v2.2.1...v2.2.2) (2020-12-17) 886 | 887 | 888 | ### Bug Fixes 889 | 890 | * **eslint-react:** disable unicorn/import-index ([#61](https://www.github.com/netlify/eslint-config-node/issues/61)) ([0322114](https://www.github.com/netlify/eslint-config-node/commit/0322114d908fced7388468ff6b63e589503ce4bc)) 891 | 892 | ### [2.2.1](https://www.github.com/netlify/eslint-config-node/compare/v2.2.0...v2.2.1) (2020-12-17) 893 | 894 | 895 | ### Bug Fixes 896 | 897 | * add missing linting configurations ([#59](https://www.github.com/netlify/eslint-config-node/issues/59)) ([4dfcdad](https://www.github.com/netlify/eslint-config-node/commit/4dfcdad54cf0a39588e05da6c3e6f4ae87f82b30)) 898 | 899 | ## [2.2.0](https://www.github.com/netlify/eslint-config-node/compare/v2.1.0...v2.2.0) (2020-12-17) 900 | 901 | 902 | ### Features 903 | 904 | * add browser configs ([#57](https://www.github.com/netlify/eslint-config-node/issues/57)) ([1d4c7c7](https://www.github.com/netlify/eslint-config-node/commit/1d4c7c70533b035f1e1111338fd5f4e13cf95c76)) 905 | 906 | ## [2.1.0](https://www.github.com/netlify/eslint-config-node/compare/v2.0.2...v2.1.0) (2020-12-16) 907 | 908 | 909 | ### Features 910 | 911 | * document commit linting ([#53](https://www.github.com/netlify/eslint-config-node/issues/53)) ([d14e1d2](https://www.github.com/netlify/eslint-config-node/commit/d14e1d2c2f5909945d71df40142a497d56d22842)) 912 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making 6 | participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, 7 | disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, 8 | religion, or sexual identity and orientation. 9 | 10 | ## Our Standards 11 | 12 | Examples of behavior that contributes to creating a positive environment include: 13 | 14 | - Using welcoming and inclusive language 15 | - Being respectful of differing viewpoints and experiences 16 | - Gracefully accepting constructive criticism 17 | - Focusing on what is best for the community 18 | - Showing empathy towards other community members 19 | 20 | Examples of unacceptable behavior by participants include: 21 | 22 | - The use of sexualized language or imagery and unwelcome sexual attention or advances 23 | - Trolling, insulting/derogatory comments, and personal or political attacks 24 | - Public or private harassment 25 | - Publishing others' private information, such as a physical or electronic address, without explicit permission 26 | - Other conduct which could reasonably be considered inappropriate in a professional setting 27 | 28 | ## Our Responsibilities 29 | 30 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take 31 | appropriate and fair corrective action in response to any instances of unacceptable behavior. 32 | 33 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, 34 | issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any 35 | contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 36 | 37 | ## Scope 38 | 39 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the 40 | project or its community. Examples of representing a project or community include using an official project e-mail 41 | address, posting via an official social media account, or acting as an appointed representative at an online or offline 42 | event. Representation of a project may be further defined and clarified by project maintainers. 43 | 44 | ## Enforcement 45 | 46 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at 47 | david@netlify.com. All complaints will be reviewed and investigated and will result in a response that is deemed 48 | necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to 49 | the reporter of an incident. Further details of specific enforcement policies may be posted separately. 50 | 51 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent 52 | repercussions as determined by other members of the project's leadership. 53 | 54 | ## Attribution 55 | 56 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at 57 | [http://contributor-covenant.org/version/1/4][version] 58 | 59 | [homepage]: http://contributor-covenant.org 60 | [version]: http://contributor-covenant.org/version/1/4/ 61 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributions 2 | 3 | 🎉 Thanks for considering contributing to this project! 🎉 4 | 5 | These guidelines will help you send a pull request. 6 | 7 | Please note that this project is not intended to be used outside my own projects so new features are unlikely to be 8 | accepted. 9 | 10 | If you're submitting an issue instead, please skip this document. 11 | 12 | If your pull request is related to a typo or the documentation being unclear, please click on the relevant page's `Edit` 13 | button (pencil icon) and directly suggest a correction instead. 14 | 15 | This project was made with ❤️. The simplest way to give back is by starring and sharing it online. 16 | 17 | Everyone is welcome regardless of personal background. We enforce a [Code of conduct](CODE_OF_CONDUCT.md) in order to 18 | promote a positive and inclusive environment. 19 | 20 | # Development process 21 | 22 | First fork and clone the repository. If you're not sure how to do this, please watch 23 | [these videos](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github). 24 | 25 | Run: 26 | 27 | ```bash 28 | npm install 29 | ``` 30 | 31 | Make sure everything is correctly setup with: 32 | 33 | ```bash 34 | npm test 35 | ``` 36 | 37 | After submitting the pull request, please make sure the Continuous Integration checks are passing. 38 | 39 | ## Releasing 40 | 41 | 1. Merge the release PR 42 | 43 | ### Creating a prerelease 44 | 45 | 1. Create a branch named `releases//` with the version you'd like to release. 46 | 2. Push the branch to the repo. 47 | 48 | For example, a branch named `releases/rc/4.0.0` will create the version `v4.0.0-rc` and publish it under the `rc` tag. 49 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 Netlify 2 | 3 | MIT License 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build](https://github.com/netlify/eslint-config-node/workflows/Build/badge.svg)](https://github.com/netlify/node-eslint-config/actions) 2 | [![Node](https://img.shields.io/node/v/@netlify/eslint-config-node.svg?logo=node.js)](https://www.npmjs.com/package/@netlify/node-eslint-config) 3 | 4 | Linting and formatting configuration shared by Netlify Node.js repositories: 5 | 6 | - [ESLint](https://eslint.org/) 7 | - [Prettier](https://prettier.io/) 8 | - [Editorconfig](https://editorconfig.org/) 9 | - `.gitattributes` 10 | - `.husky/` 11 | 12 | ## How to add to a new Node.js repository 13 | 14 | If you're creating a new repository, you can use the 15 | [following GitHub template](https://github.com/netlify/node-template). Otherwise, please follow those steps: 16 | 17 | - Add a `.eslintrc.cjs` file to the root of the project. Individual `rules` and `overrides` can be tweaked for the 18 | specific project. 19 | 20 | ```js 21 | // Use '@netlify/eslint-config-node/esm' if the repository is using pure ES modules 22 | const { overrides } = require('@netlify/eslint-config-node') 23 | 24 | module.exports = { 25 | extends: '@netlify/eslint-config-node', 26 | rules: {}, 27 | overrides: [...overrides], 28 | } 29 | ``` 30 | 31 | - Add the following `.prettierrc.json` to the root of the project: 32 | 33 | ```json 34 | "@netlify/eslint-config-node/.prettierrc.json" 35 | ``` 36 | 37 | - Copy the `commitlint.config.cjs`, `.editorconfig` and `.gitattributes` files to the root of the project. 38 | - Add the following properties to the `package.json`. Please replace the `config` globbing expressions to match the 39 | files where the source JavaScript/Markdown/HTML/JSON/YAML files are located. `npm run format` should also be run 40 | during `npm test` and `npm run format:ci` during CI 41 | ([example](https://github.com/netlify/cli/blob/main/.github/workflows/main.yml)). 42 | 43 | ```json 44 | { 45 | "scripts": { 46 | "format": "run-s format:check-fix:*", 47 | "format:ci": "run-s format:check:*", 48 | "format:check-fix:lint": "run-e format:check:lint format:fix:lint", 49 | "format:check:lint": "cross-env-shell eslint $npm_package_config_eslint", 50 | "format:fix:lint": "cross-env-shell eslint --fix $npm_package_config_eslint", 51 | "format:check-fix:prettier": "run-e format:check:prettier format:fix:prettier", 52 | "format:check:prettier": "cross-env-shell prettier --check $npm_package_config_prettier", 53 | "format:fix:prettier": "cross-env-shell prettier --write $npm_package_config_prettier" 54 | }, 55 | "config": { 56 | "eslint": "--ignore-path .gitignore --cache --format=codeframe --max-warnings=0 \"{src,scripts,tests,.github}/**/*.{cjs,mjs,js,md,html}\" \"*.{cjs,mjs,js,md,html}\" \".*.{cjs,mjs,js,md,html}\"", 57 | "prettier": "--ignore-path .gitignore --loglevel=warn \"{src,scripts,tests,.github}/**/*.{cjs,mjs,js,md,yml,json,html}\" \"*.{cjs,mjs,js,yml,json,html}\" \".*.{cjs,mjs,js,yml,json,html}\" \"!package-lock.json\"" 58 | } 59 | } 60 | ``` 61 | 62 | - Add `.eslintcache` to the `.gitignore` 63 | -------------------------------------------------------------------------------- /bin/run_ci.mjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import { argv } from 'process' 3 | 4 | import { execaCommand } from 'execa' 5 | import isCI from 'is-ci' 6 | 7 | const [, , command] = argv 8 | 9 | const runCI = async function () { 10 | if (isCI) { 11 | await execaCommand(command, { stdio: 'inherit' }) 12 | } 13 | } 14 | 15 | runCI() 16 | -------------------------------------------------------------------------------- /bin/run_e.mjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import process, { argv } from 'process' 3 | 4 | import { execaCommand } from 'execa' 5 | 6 | const [, , npmScript, npmScriptOnError] = argv 7 | 8 | // Run a npm script. If that script fails, another npm script is run. 9 | // We use this for example with ESLint and Prettier to be able to fail if 10 | // anything should be autofixed, while still autofixing it. Those tools do not 11 | // provide good CLI flags for this. 12 | const runOnError = async function () { 13 | const { failed, exitCode = DEFAULT_ERROR_EXIT_CODE } = await runNpmScript(npmScript) 14 | if (!failed) { 15 | return 16 | } 17 | 18 | await runNpmScript(npmScriptOnError) 19 | process.exitCode = exitCode 20 | } 21 | 22 | const runNpmScript = function (npmScriptName) { 23 | return execaCommand(`npm run ${npmScriptName}`, { stdio: 'inherit', reject: false }) 24 | } 25 | 26 | const DEFAULT_ERROR_EXIT_CODE = 1 27 | 28 | runOnError() 29 | -------------------------------------------------------------------------------- /bin/run_local.mjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import { argv } from 'process' 3 | 4 | import { execaCommand } from 'execa' 5 | import isCI from 'is-ci' 6 | 7 | const [, , command] = argv 8 | 9 | const runLocal = async function () { 10 | if (!isCI) { 11 | await execaCommand(command, { stdio: 'inherit' }) 12 | } 13 | } 14 | 15 | runLocal() 16 | -------------------------------------------------------------------------------- /commitlint.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { extends: ['@commitlint/config-conventional'] } 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@netlify/eslint-config-node", 3 | "version": "7.0.1", 4 | "type": "commonjs", 5 | "exports": { 6 | ".": "./.eslintrc.cjs", 7 | "./.eslintrc_esm.cjs": "./.eslintrc_esm.cjs", 8 | "./.prettierrc.json": "./.prettierrc.json" 9 | }, 10 | "main": "./.eslintrc.cjs", 11 | "files": [ 12 | ".eslintrc.cjs", 13 | ".eslintrc_esm.cjs", 14 | ".prettierrc.json", 15 | ".editorconfig", 16 | ".gitattributes", 17 | "bin/*.mjs", 18 | ".husky/*" 19 | ], 20 | "bin": { 21 | "run-e": "./bin/run_e.mjs", 22 | "run-ci": "./bin/run_ci.mjs", 23 | "run-local": "./bin/run_local.mjs" 24 | }, 25 | "scripts": { 26 | "test": "run-s format test:dev", 27 | "format": "run-s format:check-fix:*", 28 | "format:ci": "run-s format:check:*", 29 | "format:check-fix:lint": "node ./bin/run_e.mjs format:check:lint format:fix:lint", 30 | "format:check:lint": "cross-env-shell eslint $npm_package_config_eslint", 31 | "format:fix:lint": "cross-env-shell eslint --fix $npm_package_config_eslint", 32 | "format:check-fix:prettier": "node ./bin/run_e.mjs format:check:prettier format:fix:prettier", 33 | "format:check:prettier": "cross-env-shell prettier --check $npm_package_config_prettier", 34 | "format:fix:prettier": "cross-env-shell prettier --write $npm_package_config_prettier", 35 | "test:dev": "run-s test:dev:*", 36 | "test:ci": "run-s test:ci:*", 37 | "test:dev:ava": "ava", 38 | "test:ci:ava": "ava", 39 | "prepublishOnly": "npm ci && npm test", 40 | "prepare": "husky install" 41 | }, 42 | "config": { 43 | "eslint": "--ignore-path .gitignore --cache --format=codeframe --max-warnings=0 \"{bin,.github}/**/*.{cjs,mjs,js,html}\" \".*.{cjs,mjs,js}\"", 44 | "prettier": "--ignore-path .gitignore --loglevel=warn \"{bin,.github}/**/*.{cjs,mjs,js,md,yml,json,html}\" \"*.{cjs,mjs,js,yml,json,html}\" \"!**/package-lock.json\" \"!CHANGELOG.md\"" 45 | }, 46 | "description": "ESLint and Prettier configuration for Netlify Node.js projects", 47 | "keywords": [ 48 | "eslint", 49 | "eslintconfig", 50 | "prettier", 51 | "prettierrc", 52 | "standard", 53 | "standard style", 54 | "JavaScript Standard Style", 55 | "editorconfig", 56 | "lint", 57 | "configuration", 58 | "config", 59 | "strict", 60 | "modern", 61 | "modularity", 62 | "functional", 63 | "fp" 64 | ], 65 | "license": "Apache-2.0", 66 | "repository": { 67 | "type": "git", 68 | "url": "git+https://github.com/netlify/eslint-config-node.git" 69 | }, 70 | "bugs": { 71 | "url": "https://github.com/netlify/node-eslint-config/issues" 72 | }, 73 | "homepage": "https://github.com/netlify/eslint-config-node#readme", 74 | "author": "Netlify Inc.", 75 | "directories": { 76 | "test": "test" 77 | }, 78 | "dependencies": { 79 | "@babel/core": "^7.13.8", 80 | "@babel/eslint-parser": "^7.13.8", 81 | "@commitlint/cli": "^17.0.0", 82 | "@commitlint/config-conventional": "^17.0.0", 83 | "@typescript-eslint/eslint-plugin": "^5.0.0", 84 | "@typescript-eslint/parser": "^5.0.0", 85 | "cross-env": "^7.0.2", 86 | "eslint": "^8.0.0", 87 | "eslint-config-prettier": "^8.0.0", 88 | "eslint-config-standard": "^17.0.0", 89 | "eslint-formatter-codeframe": "^7.32.1", 90 | "eslint-import-resolver-node": "^0.3.4", 91 | "eslint-import-resolver-typescript": "^3.0.0", 92 | "eslint-plugin-ava": "^13.0.0", 93 | "eslint-plugin-cypress": "^2.12.1", 94 | "eslint-plugin-eslint-comments": "^3.2.0", 95 | "eslint-plugin-fp": "^2.3.0", 96 | "eslint-plugin-html": "^7.0.0", 97 | "eslint-plugin-import": "^2.25.1", 98 | "eslint-plugin-markdown": "^3.0.0", 99 | "eslint-plugin-n": "^15.2.4", 100 | "eslint-plugin-promise": "^6.0.0", 101 | "eslint-plugin-react": "^7.21.5", 102 | "eslint-plugin-unicorn": "^43.0.0", 103 | "eslint-plugin-you-dont-need-lodash-underscore": "^6.10.0", 104 | "execa": "^6.0.0", 105 | "husky": "^8.0.0", 106 | "is-ci": "^3.0.0", 107 | "npm-run-all2": "^5.0.0", 108 | "prettier": "^2.1.2", 109 | "statuses": "^2.0.1" 110 | }, 111 | "devDependencies": { 112 | "ava": "^4.0.0" 113 | }, 114 | "engines": { 115 | "node": ">=16.0.0" 116 | }, 117 | "ava": { 118 | "verbose": true 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /renovate.json5: -------------------------------------------------------------------------------- 1 | { 2 | extends: ['github>netlify/renovate-config:esm'], 3 | ignorePresets: [':prHourlyLimit2'], 4 | semanticCommits: true, 5 | dependencyDashboard: true, 6 | rebaseWhen: 'conflicted', 7 | lockFileMaintenance: { enabled: true }, 8 | } 9 | -------------------------------------------------------------------------------- /test/fixtures/_valid.mjs: -------------------------------------------------------------------------------- 1 | export const test = true 2 | -------------------------------------------------------------------------------- /test/main.mjs: -------------------------------------------------------------------------------- 1 | import { fileURLToPath } from 'url' 2 | 3 | import test from 'ava' 4 | import { execa } from 'execa' 5 | 6 | const ESLINT_CONFIG = fileURLToPath(new URL('../.eslintrc.cjs', import.meta.url)) 7 | const TEST_FILE = fileURLToPath(new URL('fixtures/_valid.mjs', import.meta.url)) 8 | 9 | test('Smoke test', async (t) => { 10 | const { exitCode, stdout, stderr } = await execa('eslint', [TEST_FILE, '--config', ESLINT_CONFIG], { 11 | preferLocal: true, 12 | }) 13 | t.is(exitCode, 0) 14 | t.is(stdout.trim(), '') 15 | t.is(stderr.trim(), '') 16 | }) 17 | --------------------------------------------------------------------------------