Skip to content

Releases: ovos/coding-standard

v3.0.0

12 Feb 10:53
Compare
Choose a tag to compare

v3 brings eslint v9

All related dependencies are also updated.
The rules config has been refreshed. Breaking changes were tried to be avoided, but there might be a few.

- indent rule

indent rule should work better now - although it's still buggy - there might be reports on code which was not reported before.

- no-unused-vars rule

The biggest pain point might be that typeof does not mark a variable as used by no-unused-vars rule - now error is reported.

Related thread: typescript-eslint/typescript-eslint#10266

- Added perfectionist/sort-named-imports and perfectionist/sort-named-exports

We had named imports sorted in v1 when tslint was taking care of that. But it got lost during migration to eslint, as I wrongly assumed that import/order will take care of that.

Later on, the support for sorting named imports (but still not exports) was added to the original eslint-plugin-import import-js/eslint-plugin-import#3043 but we have switched to eslint-plugin-import-x since and the porting request of that feature is still pending. un-ts/eslint-plugin-import-x#225

We could consider switching back to eslint-plugin-import but it still has a set of its own, still unresolved issues.
Instead, I decided to try eslint-plugin-perfectionist and the sorting rules from that. Note we are sticking with import/order for sorting and grouping imports for the time being, as more time would be needed to convert the sorting and grouping config to achieve similar behaviour with the perfectionist/sort-imports rule.

There is also perfectionist/sort-exports rule, but it does not provide config options to define grouping and custom sorting, to achieve similar behaviour to import/order with our custom config applied, so for now we won't enforce that rule.

- @stylistic/quotes now configured with allowTemplateLiterals: 'avoidEscape'

It's a breaking change, but auto-fixable. It comes with the update of @stylistic/eslint-plugin to v3.

For more info check the PRs: #9 and #10

Full Changelog: v2.0.2...v3.0.0

v2.0.2

28 Sep 08:35
Compare
Choose a tag to compare

v2.0.1

01 Aug 17:04
Compare
Choose a tag to compare

Reconfigured @stylistic/no-multiple-empty-lines to { max: 1, maxEOF: 0, maxBOF: 0 } (default is { max: 2 }) - to disallow consecutive empty lines and empty lines at the beginning and end of a file.

v2.0.0

01 Aug 08:20
Compare
Choose a tag to compare

v2 introduces ESLint as the main linting tool in the coding-standard package, replacing TSLint which has been deprecated for many years already.

The configuration is based on the recommended rulesets from ESLint and typescript-eslint.

It also includes ESLint Stylistic which replaces deprecated rules from eslint and typescript-eslint.

Currently, it uses ESLint v8 and typescript-eslint v6.
The upgrade to ESLint v9 and typescript-eslint v8 is planned for the next major release.

@ovos-media/coding-standard/eslint exports a function that accepts an object with the following options:

  • console: ban, ban-log or allow - whether to ban or allow console usage. Defaults to:
    • ban-log (which only allows console.error(), console.warn() and console.info()) when react: true,
    • allow otherwise.
  • disableTypeChecked: List ts files which should be linted, but are not covered by tsconfig.json
    to avoid Parsing error (...) TSConfig does not include this file. read more »
    Example: ['dangerfile.ts', '.storybook/*.ts?(x)']
  • indent (default: 2): number of spaces to use for indentation or tab for tabs
  • testsDir (default: {spec,test,tests}): directory where test files are located.
    Example: src for single directory, {spec,tests} to include multiple directories.
    In addition, files in __tests__ folders and files with *.spec.*/*.test.* filenames are picked up as test files, even outside of testsDir.
  • cypress (default: false): enable Cypress-specific rules
  • jest (default: false): enable Jest-specific rules
  • mocha (default: false): enable Mocha-specific rules
  • react (default: false): enable React-specific rules
  • vitest (default: false): enable Vitest-specific rules

The function returns an array of ESLint "Flat Config" objects.
You may further customize the default configuration by adding your own configuration objects to the exported array.

const eslint = require('@ovos-media/coding-standard/eslint');

module.exports = [
  ...eslint({ react: true, vitest: true }),
  // your custom config and overrides
  {
    ignores: ['public'],
  },
  {
    rules: {
      // toggle off unwanted rules
      'import/order': 'off',
    },
  },
  {
    files: ['**/*.?(m|c)[jt]s?(x)'],
    rules: {
      // your custom rules
    },
  },
];

v1.5.0

19 Apr 07:48
Compare
Choose a tag to compare

Ensure file names are also linted and adhere to standards.

v1.4.2

16 Jun 19:47
Compare
Choose a tag to compare

restore prettier's arrowParens to the default value, which is "always" in prettier v2.0+

v1.4.1

17 Apr 09:26
Compare
Choose a tag to compare
  • disable ter-arrow-parens: since we're using TypeScript and typing a function arguments requires parens, it would be more streamlined to allow parens usage.

v1.4.0

15 Apr 16:05
Compare
Choose a tag to compare

v1.3.2

19 Dec 18:26
Compare
Choose a tag to compare

ter-prefer-arrow-callback - added allowNamedFunctions: true, suits react's functional components better

v1.3.1

13 Sep 09:11
Compare
Choose a tag to compare

adjusted group names for easier read in lint warnings