npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

eslint-plugin-crisp

v1.0.77

Published

Custom ESLint Rules for Crisp

Downloads

151

Readme

ESLint Plugin Crisp

Build and Release NPM Downloads

A set of custom ESLint configurations and rules for Crisp.

😘 Maintainers: @baptistejamin, @eliottvincent

Usage

The plugin provides two configurations:

  • crisp/recommended: JS rules targetting backend code (Node.js)
  • crisp/recommended-vue: JS rules targetting frontend code (Vue.js)

Add the plugin in your ESLint config object, then extend the desired configuration:

{
  "plugins": [
    "eslint-plugin-crisp"
  ],

  "extends": [
    "plugin:crisp/recommended"
    // OR "plugin:crisp/recommended-vue"
  ]
}

Documentation

This is the list of plugins and rules used by ESLint Plugin Crisp, and what they do.

Each item has emojis denoting:

  • 🟠: enabled in plugin:crisp/recommended
  • 🟢: enabled in plugin:crisp/recommended-vue

Configurations

| Name | Description | 🟠 | 🟢 | | :- | :- | :- | :- | | eslint:recommended | Core ESLint rules | | 🟢 | | plugin:jsdoc/recommended | JSDoc linting rules | 🟠 | 🟢 | | plugin:vue/vue3-recommended | Vue.js 3 linting rules | | 🟢 | | plugin:vue-pug/vue3-recommended | Pug templates support for Vue.js linting rules | | 🟢 |

Plugins

| Name | Description | 🟠 | 🟢 | | :- | :- | :- | :- | | eslint-plugin-jsdoc | JSDoc linting rules for ESLint | 🟠 | 🟢 |

Rules

General JS rules

| Name | Description | 🟠 | 🟢 | | :- | :- | :- | :- | | arrow-parens | Requires parentheses around arrow function arguments | 🟠 | 🟢 | | brace-style | Enforces one true brace style for blocks | 🟠 | 🟢 | | comma-dangle | Disallows trailing commas | 🟠 | 🟢 | | comma-style | Requires a comma after and on the same line | 🟠 | 🟢 | | curly | Ensures block statements are always wrapped in curly braces | 🟠 | 🟢 | | computed-property-spacing | Disallows spaces inside computed property brackets | | 🟢 | | default-param-last | Enforces default parameters to be last | 🟠 | 🟢 | | default-case-last | Enforces default clauses in switch statements to be last | 🟠 | 🟢 | | dot-notation | Enforces dot notation instead of square-bracket notation | 🟠 | 🟢 | | eqeqeq | Requires the use of === and !== | 🟠 | 🟢 | | eol-last | Requires newline at the end of files | 🟠 | 🟢 | | indent | Enforces 2-space indentation, and specific indentation levels for some nodes | 🟠 | 🟢 | | for-direction | Prevents for-loops to have stop condition that can never be reached | 🟠 | 🟢 | | key-spacing | Enforces consistent spacing in object literal properties (no space between the key and the colon, one space between the colon and the value) | | 🟢 | | keyword-spacing | Enforces consistent spacing before and after keywords | 🟠 | 🟢 | | linebreak-style | Enforces Unix-style line endings | 🟠 | 🟢 | | max-len | Enforces a maximum line length of 80 characters | 🟠 | | newline-per-chained-call | Requires a newline after each call in a method chain | | 🟢 | | no-console | Disallows the use of console | 🟠 | 🟢 | | no-debugger | Disallows the use of debugger | 🟠 | 🟢 | | no-eval | Disallows the use of eval | 🟠 | 🟢 | | no-magic-numbers | Disallows magic numbers (except the ones in the context of array indexes and in default value assignments) | 🟠 | | no-multi-str | Disallows multiline strings | 🟠 | 🟢 | | no-multiple-empty-lines | Allows a maximum of 1 consecutive empty lines | | 🟢 | | no-mixed-spaces-and-tabs | Disallows mixed spaces and tabs for indentation | 🟠 | 🟢 | | no-restricted-syntax | Enforces switch case's content to be enclosed in braces | | 🟢 | | no-tabs | Disallows tabs | 🟠 | 🟢 | | no-trailing-spaces | Disallows trailing whitespace at the end of lines | 🟠 | 🟢 | | no-undef | Disallows use of undeclared variables | 🟠 | 🟢 | | no-unused-vars | Disallows unused variables | 🟠 | 🟢 | | no-unsafe-optional-chaining | Disallows use of optional chaining in contexts where the undefined value is not allowed | 🟠 | 🟢 | | object-curly-newline | Requires line breaks after opening and before closing braces | 🟠 | 🟢 | | object-curly-spacing | Requires spacing inside of braces | 🟠 | 🟢 | | padded-blocks | Disallows empty lines at the beginning and ending of blocks | 🟠 | 🟢 | | padding-line-between-statements | Requires padding lines between various statements | 🟠 | 🟢 | | prefer-arrow-callback | Requires using arrow functions for callbacks | | 🟢 | | quotes | Enforces the consistent use of double quotes (while allowing single quotes in order to avoid escape, and backticks for template literals) | 🟠 | 🟢 | | quote-props | Disallows quotes around object literal property names that are not strictly required | 🟠 | 🟢 | | semi | Requires semicolons at the end of statements | 🟠 | 🟢 | | semi-style | Enforces that semicolons are at the end of statements | 🟠 | 🟢 | | semi-spacing | Disallows space before semicolons, enforces spaces after | | 🟢 | | space-before-blocks | Enforces consistent spacing before blocks | 🟠 | 🟢 | | space-in-parens | Enforces zero spaces inside of parentheses | 🟠 | 🟢 |

Crisp JS rules

| Name | Description | 🟠 | 🟢 | | :- | :- | :- | :- | | crisp/align-consecutive-class-assignements | Enforces alignment of consecutive assignment statements in a class constructor | 🟠 | | crisp/align-one-var | Enforces alignment of variables in 'one-var' statements | 🟠 | | crisp/align-requires | Enforces alignment of require statements | 🟠 | | crisp/const | Enforces that const variables start with __ or are all uppercase | 🟠 | | crisp/constructor-variables | Ensures all class properties in the constructor start with _ | 🟠 | | crisp/enforce-optional | Enforces use of optional chaining | 🟠 | 🟢 | | crisp/header-check | Enforces files to start with Crisp header | 🟠 | 🟢 | | crisp/header-comments-check | Enforces different comment blocks before different groups (imports, constants, instances and exports) | 🟠 | 🟢 | | crisp/import-group-comment | Ensures import statements are preceded by a comment stating their type | | 🟢 | | crisp/import-group-order | Ensures import statements are correctly ordered | | 🟢 | | crisp/methods-naming | Ensures methods are named according to their access (public, private, protected) | 🟠 | 🟢 | | crisp/methods-ordering | Ensures methods order according to their access: public then protected then private | 🟠 | 🟢 | | crisp/multiline-comment-end-backslash | Enforces multiline comments to end with a backslash | 🟠 | 🟢 | | crisp/newline-after-switch-case | Requires newline between switch cases | 🟠 | 🟢 | | crisp/no-async | Disallows the use of async/syntax, in favor of Promise | 🟠 | 🟢 | | crisp/no-short-parameters | Disallow parameter names shorter than 3 characters | 🟠 | 🟢 | | crisp/no-space-in-optional-arguments | Disallows space before or after = in optional parameters | 🟠 | | crisp/no-useless-template-literals | Disallows unnecessary use of template literals | | 🟢 | | crisp/no-var-in-blocks | Disallows var declarations inside function, method, or class block | 🟠 | 🟢 | | crisp/one-space-after-operator | Enforces at least one space before and one space after = and : operators | 🟠 | 🟢 | | crisp/regex-in-constructor | Ensures regular expressions are defined in the class constructor | 🟠 | 🟢 | | crisp/ternary-parenthesis | Enforces parentheses around conditions with operators in ternary expressions | 🟠 | 🟢 | | crisp/two-lines-between-class-members | Requires exactly two line breaks between class methods | 🟠 | | crisp/variable-names | Requires variables defined within a method to start with _ | 🟠 | 🟢 |

General JSDoc rules

| Name | Description | 🟠 | 🟢 | | :- | :- | :- | :- | | jsdoc/no-undefined-types | Rule is disabled to allow some undefined types | 🟠 | | jsdoc/require-description | Requires all functions to have a description in their JSDoc | | 🟢 | | jsdoc/require-param-description | Rule is disabled as we don't write any description for @param tags | 🟠 | 🟢 | | jsdoc/require-jsdoc | Enforces JSDoc comments on functions and classes | 🟠 | 🟢 | | jsdoc/sort-tags | Enforces specific order for tags | 🟠 | 🟢 |

Crisp JSDoc rules

| Name | Description | 🟠 | 🟢 | | :- | :- | :- | :- | | crisp/jsdoc-align-params | Enforces various alignments | 🟠 | 🟢 | | crisp/jsdoc-check-indentation | Enforces consistent indentation | 🟠 | 🟢 | | crisp/jsdoc-check-optional-params | Requires optional parameters to be surrounded by brackets | | 🟢 | | crisp/jsdoc-enforce-access | Requires one of @public, @private, or @protected for functions | | 🟢 | | crisp/jsdoc-enforce-classdesc | Ensures JSDoc for class headers to include a non-empty @classdesc | 🟠 | 🟢 |

General Vue rules

| Name | Description | 🟠 | 🟢 | | :- | :- | :- | :- | | vue/attributes-order | Enforces order of attributes | | 🟢 | | vue/block-lang | Allows script blocks to have no lang attribute | | 🟢 | | vue/block-order | Enforces order of component top-level elements (template, then script, then style) | | 🟢 | | vue/block-tag-newline | Requires one line break after opening and before closing block-level tags | | 🟢 | | vue/comma-dangle | Disallows trailing commas in <template> | | 🟢 | | vue/component-api-style | Enforces Options API style | | 🟢 | | vue/component-name-in-template-casing | Enforces tag names to kebab case | | 🟢 | | vue/component-options-name-casing | Enforces component names in components options to pascal case | | 🟢 | | vue/custom-event-name-casing | Enforces custom event names to camel case | | 🟢 | | vue/eqeqeq | Requires the use of === and !== in <template> | | 🟢 | | vue/html-comment-content-spacing | Requires one space before and after HTML comment tags | | 🟢 | | vue/html-quotes | Rule is disabled in order to allow backticks in HTML attributes | | 🟢 | | vue/key-spacing | Enforces consistent spacing in object literal properties in <template> (no space between the key and the colon, one space between the colon and the value) | | 🟢 | | vue/match-component-import-name | Requires the registered component name to match the imported component name | | 🟢 | | vue/max-len | Enforces a maximum line length of 80 characters (only for <script>) | | 🟢 | | vue/new-line-between-multi-line-property | Requires new lines between multi-line props | | 🟢 | | vue/no-bare-strings-in-template | Disallows the use of bare strings in <template> | | 🟢 | | vue/no-irregular-whitespace | Disallows irregular / invalid whitespaces | | 🟢 | | vue/no-multiple-objects-in-class | Disallows to pass multiple objects into array to class HTML property | | 🟢 | | vue/no-mutating-props | Disallows mutation of component props (except shallow mutation) | | 🟢 | | vue/no-static-inline-styles | Disallows static inline style attributes | | 🟢 | | vue/no-use-v-else-with-v-for | Disallows using v-else-if/v-else on the same element as v-for (works but confusing) | | 🟢 | | vue/no-useless-v-bind | Disallows unnecessary v-bind directives | | 🟢 | | vue/no-v-html | Rule is disabled in order to allow the use of v-html | | 🟢 | | vue/padding-line-between-blocks | Requires padding lines between blocks | | 🟢 | | vue/padding-lines-in-component-definition | Requires padding lines in component definition | | 🟢 | | vue/prefer-true-attribute-shorthand | Requires shorthand form attribute when v-bind value is true | | 🟢 | | vue/require-direct-export | Requires the component to be directly exported | | 🟢 | | vue/v-for-delimiter-style | Enforces the use of in delimiter in v-for directive | | 🟢 | | vue/v-slot-style | Disallows v-slot shorthand style | | 🟢 |

Crisp Vue rules

| Name | Description | 🟠 | 🟢 | | :- | :- | :- | :- | | crisp/vue-computed-order | Ensures computed properties are alphabetically ordered | | 🟢 | | crisp/vue-emits-order | Ensures emits properties are alphabetically ordered | | 🟢 | | crisp/vue-header-check | Ensures script, template and style tags start with corresponding comment block | | 🟢 | | crisp/vue-html-quotes | Enforces HTML attributes to be enclosed with double quotes | | 🟢 | | crisp/vue-no-regex-data | Disallows regular expressions to be declared in Vue data object | | 🟢 | | crisp/vue-props-declaration-multiline | Enforces props declarations to be multiline | | 🟢 | | crisp/vue-props-declaration-order | Ensures props declarations are alphabetically ordered | | 🟢 |

License

eslint-plugin-crisp is released under the MIT License. See the bundled LICENSE file for details.