Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

eslint-config-interfaced

interfaced41MIT2.1.3

ESLint config for the approaches adopted by Interfaced company

closure compiler, config, eslint, esm, externs, interfaced, lint, node, zombiebox

readme

eslint-config-interfaced

This package provides extendable shared ESLint config for the approaches adopted by Interfaced company.

Config's target environment leverages ECMAScript 6 with Closure Compiler.

Also there is a few sub configs:

Usage

1) Install the package and the required plugins:

npm info "eslint-config-interfaced@latest" peerDependencies
npm i \
    eslint-config-interfaced@latest \
    eslint-plugin-interfaced@<versionFromPeerDependencies> \
    eslint-plugin-node@<versionFromPeerDependencies> \
    eslint-plugin-import@<versionFromPeerDependencies> \
    eslint-plugin-jsdoc@<versionFromPeerDependencies>
--save-dev

Or using npx's shortcut:

npx install-peerdeps eslint-config-interfaced@latest --dev

Note: eslint-plugin-node and eslint-plugin-import are required only for interafced/node and interfaced/esm respectively, so if you are not going to use one of these sub configs you can omit them.

2) Add "extends": "interfaced" (or one of the sub configs) to your .eslintrc file.

{
    "extends": "interfaced",
    "overrides": [{
        "files": "scripts/**",
        "extends": "interfaced/node"
    }]
}

changelog

Change log

2.1.1 (release date: 25.06.2020)

  • Fix syntax errors in 2.1.0 configs

2.1.0 (release date: 25.06.2020)

  • Update to ESLint 7 (7.3.1)
  • Added new rules:
    • default-case-last
    • no-loss-of-precision
    • no-promise-executor-return
    • no-restricted-exports
    • no-unreachable-loop
    • no-useless-backreference

2.0.0 (release date: 27.12.2019)

  • Enabled jsdoc/no-undefined-types
  • Added new rules:
    • node/no-exports-assign
    • default-param-last
    • grouped-accessor-pairs
    • no-constructor-return
    • prefer-regex-literals
    • no-import-assign
    • no-dupe-else-if
    • no-setter-return
    • function-call-argument-newline
    • prefer-exponentiation-operator

2.0.0-beta.3 (release date: 09.09.2019)

  • Disabled no-unassigned-import
  • Re-enabled jsdoc/valid-types
  • Disabled require-atomic-updates
  • Configured jsdoc/check-tag-names with proprietary GCC tags
  • Configured prefer-promise-reject-errors with allowEmptyReject: true

2.0.0-beta.2 (release date: 09.08.2019)

  • Removed 'jsdoc/no-undefined-types' rule temporally
  • Removed 'jsdoc/valid-types' rule temporally

2.0.0-beta.1 (release date: 24.06.2019)

  • `eslint@6.0.0`
  • `eslint-plugin-import@2.17.3`
  • `eslint-plugin-node@9.1.0`
  • Added eslint-plugin-jsdoc and most of its rules
  • Removed eslint-plugin-goog
  • Removed zombiebox override and goog config
  • Dropped support for node 6

  • Added rules:

    • prefer-object-spread
    • no-extend-native
    • no-extra-bind
    • no-invalid-this
    • no-iterator
    • no-multi-str
    • no-throw-literal
    • no-useless-catch
    • prefer-promise-reject-errors
    • handle-callback-err
    • no-restricted-modules (color, fs-promise, walk)
    • no-mixed-requires
    • import/no-unused-modules
    • node/prefer-global/text-decoder
    • node/prefer-global/text-encoder
    • node/file-extension-in-import
    • jsdoc/check-alignment
    • jsdoc/check-examples
    • jsdoc/check-param-names
    • jsdoc/check-tag-names
    • jsdoc/implements-on-classes
    • jsdoc/match-description
    • jsdoc/no-undefined-types
    • jsdoc/require-hyphen-before-param-description
    • jsdoc/require-jsdoc
    • jsdoc/require-param
    • jsdoc/require-param-name
    • jsdoc/require-param-type
    • jsdoc/require-returns
    • jsdoc/require-returns-check
    • jsdoc/require-returns-type
    • jsdoc/valid-types
  • Removed rules:

    • interfaced/camelcase
    • interfaced/require-jsdoc
    • interfaced/valid-jsdoc
    • node/prefer-global/url

1.5.0 (release date: 26.12.2018)

  • `eslint-plugin-import@2.14`
  • `eslint-plugin-interfaced@1.6`

  • Added rules:

    • import/no-unresolved
    • import/named
    • import/default
    • import/namespace
    • import/no-restricted-paths
    • import/no-absolute-path
    • import/no-dynamic-require
    • import/no-internal-modules
    • import/no-webpack-loader-syntax
    • import/no-self-import
    • import/no-cycle
    • import/no-useless-path-segments
    • import/no-relative-parent-imports
    • import/export
    • import/no-named-as-default
    • import/no-named-as-default-member
    • import/no-deprecated
    • import/no-extraneous-dependencies
    • import/no-mutable-exports
    • import/unambiguous
    • import/no-commonjs
    • import/no-amd
    • import/no-nodejs-modules
    • import/first
    • import/exports-last
    • import/no-duplicates
    • import/no-namespace
    • import/extensions
    • import/order
    • import/newline-after-import
    • import/prefer-default-export
    • import/max-dependencies
    • import/no-unassigned-import
    • import/no-named-default
    • import/no-default-export
    • import/no-named-export
    • import/no-anonymous-default-export
    • import/group-exports
    • import/dynamic-import-chunkname
    • interfaced/no-jsdoc-type-multi-spaces
    • interfaced/singular-enum
  • Removed rules:

    • interfaced/prevent-unused-typedef-vars
    • interfaced/lines-between-statics
    • interfaced/statics-order
  • Renamed rules:

    • interfaced/no-tabs-in-jsdoc-type -> interfaced/no-jsdoc-type-tabs
  • ESLint's rules for Node moved to interfaced/node [BREAKING]

1.4.1 (release date: 19.10.2018)

  • Tracked esm.js file

1.4.0 (release date: 19.10.2018)

  • `eslint-plugin-node@7.0`
  • `eslint-plugin-interfaced@1.5`

  • New sub configs:

    • interfaced/node
    • interfaced/esm
    • interfaced/externs
    • interfaced/mocha-chai
  • Added rules:

    • node/no-extraneous-import
    • node/no-extraneous-require
    • node/no-missing-import
    • node/no-missing-require
    • node/no-missing-require
    • node/no-unpublished-import
    • node/no-unpublished-require
    • node/no-unsupported-features/es-builtins
    • node/no-unsupported-features/es-syntax
    • node/no-unsupported-features/node-builtins
    • node/process-exit-as-throw
    • node/shebang
    • node/no-deprecated-api
    • node/exports-style
    • node/prefer-global/buffer
    • node/prefer-global/console
    • node/prefer-global/process
    • node/prefer-global/url-search-params
    • node/prefer-global/url
    • interfaced/prevent-unused-jsdoc-types

1.3.0 (release date: 09.10.2018)

1.2.0 (release date: 30.08.2018)

  • `eslint@5.3`
  • `eslint-plugin-interfaced@1.2`

  • Added rules:

    • require-unicode-regexp
    • require-atomic-updates
    • no-async-promise-executor
    • no-misleading-character-class
    • interfaced/no-param-reassign (instead of no-param-reassign)
  • Removed deprecated rules:

    • no-catch-shadow

1.1.0 (release date: 30.07.2018)

1.0.0 (release date: 03.07.2018)

0.7.1 (release date: 25.06.2018)

  • Tracked rule.js file

0.7.0 (release date: 25.06.2018)

  • `eslint@4.19`
  • `eslint-plugin-interfaced@0.6`
  • wrap-iife: set to "inside"
  • prefer-arrow-callback: disallow unbound "this"

  • Added rules:

    • interfaced/event-const-value
  • Turned off rules:

    • consistent-return
    • capitalized-comments
    • no-unmodified-loop-condition
  • Fixed a critical npm audit report

0.6.2 (release date: 22.01.2018)

  • Prevent base config polluting by zombiebox config

0.6.1 (release date: 15.01.2018)

  • Tracked zombiebox.js file

0.6.0 (release date: 15.01.2018)

  • `eslint-plugin-interfaced@0.5`
  • no-unused-vars: don't ignore args
  • interfaced/jsdoc-tags-order: added @suppress, @this
  • goog/no-undeclared-deps, goog/no-unused-deps: set "zb" domain only in zombiebox config [BREAKING]

  • Added rules:

    • interfaced/prefer-shorthand-jsdoc-types
    • interfaced/prevent-unused-typedef-vars
    • interfaced/prevent-unused-meta-params
  • Separate config for zombiebox environment

  • Added zombiebox-specific globals to zombiebox config

0.5.0 (release date: 11.12.2017)

  • `eslint@4.12`
  • `eslint-plugin-goog@0.4`
  • `eslint-plugin-interfaced@0.4`
  • interfaced/jsdoc-tags-order: added @deprecated

  • Added rules:

    • implicit-arrow-linebreak
    • interfaced/interface-name-prefix
    • interfaced/abstract-class-name-prefix
    • interfaced/no-tabs-in-jsdoc-type
    • interfaced/camelcase (instead of camelcase)
    • interfaced/require-jsdoc (instead of require-jsdoc)
  • Described specifying of domains and knownNamespaces by shared settings instead of rules redefining

0.4.0 (release date: 21.11.2017)

  • npm@5
  • `eslint-plugin-interfaced@0.3`
  • valid-jsdoc: prefer @throws over @throw
  • interfaced/jsdoc-tags-order: added @throws

  • Added rules:

    • interfaced/capitalized-enum
    • interfaced/capitalized-typedef
    • interfaced/jsdoc-type-spacing
    • interfaced/jsdoc-type-application-dot
    • interfaced/valid-jsdoc (instead of valid-jsdoc)
    • interfaced/no-unused-expressions (instead of no-unused-expressions)

0.3.0 (release date: 7.11.2017)

  • `eslint@4.9`
  • `eslint-plugin-goog@0.3`
  • `eslint-plugin-interfaced@0.2`

  • Added rules:

    • prefer-promise-reject-errors
    • prefer-destructuring
    • no-buffer-constructor
    • for-direction
    • getter-return
    • no-await-in-loop
    • no-compare-neg-zero
    • array-bracket-newline
    • array-element-newline
    • function-paren-newline
    • lines-between-class-members
    • multiline-comment-style
    • no-multi-assign
    • nonblock-statement-body-position
    • padding-line-between-statements
    • semi-style
    • switch-colon-spacing
    • template-tag-spacing
  • Removed deprecated rules:

    • lines-around-directive
    • newline-after-var
    • newline-before-return
  • Use .yaml for configuration

0.2.0 (release date: 8.06.2017)

  • `eslint-plugin-goog@0.2.0`
  • `eslint-plugin-interfaced@0.1.0`

  • valid-jsdoc: removed @virtual from the blacklist

  • no-empty-function: allow methods (for extending by interfaced/no-empty-method)

  • New rules:

    • interfaced/space-in-typecast
    • interfaced/caps-const
    • interfaced/event-const-desc
    • interfaced/no-empty-method
    • interfaced/no-public-underscore
    • interfaced/no-restricted-jsdoc-tags
    • interfaced/newline-between-methods
    • interfaced/newline-between-props
    • interfaced/newline-between-statics
    • interfaced/newline-before-after-class
    • interfaced/methods-order
    • interfaced/props-order
    • interfaced/statics-order
    • interfaced/jsdoc-tags-order
    • goog/no-undeclared-deps
    • goog/no-unused-deps
    • goog/right-order
    • goog/no-duplicates
  • Added goog and interfaced to plugins section

0.1.0 (release date: 29.03.2017)

  • Initial release