0.0.1 • Published 12 months ago

eslint-plugin-composable-plugin v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

eslint-plugin-composable-plugin

Plugin that adds a rule to allow defining Vue composables without a return type.

Overview

This ESLint plugin provides a rule that extends the functionality of the @typescript-eslint/explicit-function-return-type rule. It allows defining Vue composables without specifying an explicit return type, with one key difference: it excludes functions that start with the 'use' keyword.

Rule Details

This rule uses all the options available from the extended rule, which can be found here. The main functionality is similar, with the exception that functions starting with 'use' are excluded from this rule.

Options

type Options = [
  {
    /** Whether to allow arrow functions that start with the `void` keyword. */
    allowConciseArrowFunctionExpressionsStartingWithVoid?: boolean;
    /** Whether to ignore arrow functions immediately returning a `as const` value. */
    allowDirectConstAssertionInArrowFunctions?: boolean;
    /** Whether to ignore function expressions (functions which are not part of a declaration). */
    allowExpressions?: boolean;
    /** Whether to ignore functions that don't have generic type parameters. */
    allowFunctionsWithoutTypeParameters?: boolean;
    /** Whether to ignore functions immediately returning another function expression. */
    allowHigherOrderFunctions?: boolean;
    /** Whether to ignore immediately invoked function expressions (IIFEs). */
    allowIIFEs?: boolean;
    /** Whether to ignore type annotations on the variable of function expressions. */
    allowTypedFunctionExpressions?: boolean;
    /** An array of function/method names that will not have their arguments or return values checked. */
    allowedNames?: string[];
  },
];

const defaultOptions: Options = [
  {
    allowExpressions: false,
    allowTypedFunctionExpressions: true,
    allowHigherOrderFunctions: true,
    allowDirectConstAssertionInArrowFunctions: true,
    allowConciseArrowFunctionExpressionsStartingWithVoid: false,
    allowFunctionsWithoutTypeParameters: false,
    allowedNames: [],
    allowIIFEs: false,
  },
];

Installation

You'll first need to install ESLint:

npm i eslint --save-dev

Next, install eslint-plugin-composable-plugin:

npm install eslint-plugin-composable-plugin --save-dev

Usage

Add composable-plugin to the plugins section of your .eslintrc configuration file. You can omit the eslint-plugin- prefix:

{
    "plugins": [
        "composable-plugin"
    ]
}

Then configure the rules you want to use under the rules section.

{
    "rules": {
        "composable-plugin/no-return-type": 'error'
    }
}

Rules

Name          Description
no-return-typeThis rule enforces that functions have an explicit return type annotation unless the function starts with "use" keyword