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-n8n-nodes-base

v1.16.1

Published

[![NPM version](https://img.shields.io/npm/v/eslint-plugin-n8n-nodes-base.svg?style=flat)](https://npmjs.org/package/eslint-plugin-n8n-nodes-base) [![Tests](https://github.com/ivov/eslint-plugin-n8n-nodes-base/actions/workflows/on-push.yml/badge.svg)](htt

Downloads

48,713

Readme

eslint-plugin-n8n-nodes-base

NPM version Tests

ESLint plugin for linting n8n nodes.

Usage

Install this plugin:

pnpm i -D eslint-plugin-n8n-nodes-base

Create an ESLint configuration file and decide how to set up the plugin.

Specify only plugin

If you specify only the plugin, all rules in the plugin are disabled by default and must be individually enabled:

{
  plugins: [ "eslint-plugin-n8n-nodes-base" ],
  rules: {
    "n8n-nodes-base/node-param-array-type-assertion": "warning",
    "n8n-nodes-base/node-param-default-wrong-for-collection": "error"
  }
}

Specify plugin and config

If you specify both the plugin and a config, all config rules are enabled by default and must be individually disabled:

{
  plugins: [ "eslint-plugin-n8n-nodes-base" ],
  extends: [ "plugin:n8n-nodes-base/nodes" ],
  rules: {
    "n8n-nodes-base/node-param-array-type-assertion": "off",
    "n8n-nodes-base/node-param-default-wrong-for-collection": "off"
  }
}

| Config | Content | | ------------- | --------------------------------------------------- | | nodes | Ruleset for n8n nodes | | credentials | Ruleset for n8n credentials | | community | Ruleset for package.json in n8n community package |

User-defined defaults

In the community ruleset, the five *-still-default rules allow you to define your own default values:

{
  plugins: [ "eslint-plugin-n8n-nodes-base" ],
  extends: [ "plugin:n8n-nodes-base/nodes" ],
  rules: {
    "n8n-nodes-base/community-package-json-author-name-still-default": [
      "error",
      { authorName: "Neil Armstrong" }, // user-defined default
    ],
  }
}

Ruleset

| Name                                         | Description | Autofixable | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------- | | community-package-json-author-email-still-default | The author.email value in the package.json of a community package must be different from the default value '' (empty string) or a user-defined default. | No | | community-package-json-author-missing | The author key must be present in the package.json of a community package. | No | | community-package-json-author-name-missing | The author.name key must be present in the package.json of a community package. | No | | community-package-json-author-name-still-default | The author.name value in the package.json of a community package must be different from the default value '' (empty string) or a user-defined default. | No | | community-package-json-description-missing | The description key must be present in the package.json of a community package. | No | | community-package-json-description-still-default | The description value in the package.json of a community package must be different from the default value '' (empty string) or a user-defined default. | No | | community-package-json-keywords-missing | The keywords key must be present in the package.json of a community package. | No | | community-package-json-keywords-without-official-tag | The keywords value in the package.json of a community package must be an array containing the value 'n8n-community-node-package'. | No | | community-package-json-license-missing | The description key must be present in the package.json of a community package. | No | | community-package-json-license-not-default | The license key in the package.json of a community package must be the default value MIT. | No | | community-package-json-n8n-api-version-missing | The n8n.n8nNodesApiVersion key must be present in the package.json of a community package. | No | | community-package-json-n8n-api-version-not-number | The n8n.n8nNodesApiVersion value in the package.json of a community package must be a number. | No | | community-package-json-n8n-missing | The n8n key must be present in the package.json of a community package. | No | | community-package-json-n8n-nodes-empty | The n8n.nodes value in the package.json of a community package must contain at least one filepath. | No | | community-package-json-n8n-nodes-missing | The n8n.nodes key must be present in the package.json of a community package. | No | | community-package-json-name-missing | The name key must be present in the package.json of a community package. | No | | community-package-json-name-still-default | The name key in the package.json of a community package must be different from the default value n8n-nodes-<...> or a user-defined default. | No | | community-package-json-repository-url-still-default | The repository.url value in the package.json of a community package must be different from the default value https://github.com/<...>/n8n-nodes-<...>.git or a user-defined default. | No | | community-package-json-version-missing | The version key must be present in the package.json of a community package. | No | | cred-class-field-authenticate-type-assertion | In a credential class, the field authenticate must be typed IAuthenticateGeneric | Yes | | cred-class-field-display-name-miscased | displayName field in credential class must be title cased, except for n8n API and E-goi API | Yes | | cred-class-field-display-name-missing-api | displayName field in credential class must be end with API. | Yes | | cred-class-field-display-name-missing-oauth2 | displayName field in credential class must mention OAuth2 if the credential is OAuth2. | No | | cred-class-field-documentation-url-miscased | documentationUrl field in credential class must be camel cased. Only applicable to nodes in the main repository. | Yes | | cred-class-field-documentation-url-missing | documentationUrl field in credential class must be present. | Yes | | cred-class-field-documentation-url-not-http-url | documentationUrl field in credential class must be an HTTP URL. Only applicable to community credentials. | No | | cred-class-field-name-missing-oauth2 | name field in credential class must mention OAuth2 if the credential is OAuth2. | No | | cred-class-field-name-unsuffixed | name field in credential class must be suffixed with -Api. | Yes | | cred-class-field-name-uppercase-first-char | First char in name in credential class must be lowercase. | Yes | | cred-class-field-placeholder-url-missing-eg | placeholder for a URL in credential class must be prepended with e.g.. | Yes | | cred-class-field-properties-assertion | In a credential class, the field properties must be typed INodeProperties and individual properties must have no assertions. | Yes | | cred-class-field-type-options-password-missing | In a sensitive string-type field, typeOptions.password must be set to true to obscure the input. A field name is sensitive if it contains the strings: secret,password,token,key. See exceptions in source. | Yes | | cred-class-name-missing-oauth2-suffix | Credential class name must mention OAuth2 if the credential is OAuth2. | No | | cred-class-name-unsuffixed | Credential class name must be suffixed with -Api. | Yes | | cred-filename-against-convention | Credentials filename must match credentials class name, excluding the filename suffix. Example: TestApi.credentials.ts matches TestApi in class TestApi implements ICredentialType. | No | | node-class-description-credentials-name-unsuffixed | name under credentials in node class description must be suffixed with -Api. | Yes | | node-class-description-display-name-unsuffixed-trigger-node | displayName in node class description for trigger node must be suffixed with -Trigger. | Yes | | node-class-description-empty-string | description in node class description must be filled out. | No | | node-class-description-icon-not-svg | icon in node class description should be an SVG icon. | No | | node-class-description-inputs-wrong-regular-node | The number of inputs in node class description for regular node should be one, or two for Merge node. | Yes | | node-class-description-inputs-wrong-trigger-node | The number of inputs in node class description for trigger node should be zero. | Yes | | node-class-description-missing-subtitle | subtitle in node class description must be present. | Yes | | node-class-description-name-miscased | name in node class description must be camel cased. | Yes | | node-class-description-name-unsuffixed-trigger-node | name in node class description for trigger node must be suffixed with -Trigger. | Yes | | node-class-description-non-core-color-present | color in node class description is deprecated and must not be present, except for nodes whose icon is a Font Awesome icon - usually core nodes. | Yes | | node-class-description-outputs-wrong | The number of outputs in node class description for any node must be one, or two for If node, or four for Switch node. | Yes | | node-dirname-against-convention | Node dirname must match node filename, excluding the filename suffix. Example: Test node dirname matches Test section of Test.node.ts node filename. | No | | node-execute-block-double-assertion-for-items | In the execute() method there is no need to double assert the type of items.length. | Yes | | node-execute-block-error-missing-item-index | In the operations in the execute() method in a node, NodeApiError and NodeOperationError must specify itemIndex as the third argument. | No | | node-execute-block-missing-continue-on-fail | The execute() method in a node must implement continueOnFail in a try-catch block. | No | | node-execute-block-wrong-error-thrown | The execute() method in a node may only throw NodeApiError for failed API requests and NodeOperationError for internal errors, not the built-in Error. Refer to NodeErrors.ts. | No | | node-filename-against-convention | name in node class description must match the node filename without the .node.ts suffix. Example: If description.name is Test, then filename must be Test.node.ts. | No | | node-param-array-type-assertion | Array of node parameters must be typed, not type-asserted. | Yes | | node-param-collection-type-item-required | Items in collection-type node parameter must not have a required property. | Yes | | node-param-collection-type-unsorted-items | Items in collection-type node parameter must be alphabetized by name if five or more than five. | Yes | | node-param-color-type-unused | string-type color-related node parameter must be color-type. | Yes | | node-param-default-missing | default must be present in a node parameter, except in node parameters under modes. | Yes | | node-param-default-wrong-for-boolean | default for boolean-type node parameter must be a boolean. | Yes | | node-param-default-wrong-for-collection | default for collection-type node parameter must be an object. | Yes | | node-param-default-wrong-for-fixed-collection | default for fixed-collection-type node parameter must be an object. | Yes | | node-param-default-wrong-for-limit | default for a Limit node parameter must be 50. | Yes | | node-param-default-wrong-for-multi-options | default for a multi-options-type node parameter must be an array. | Yes | | node-param-default-wrong-for-number | default for a number-type node parameter must be a number, except for a number-type ID parameter. | Yes | | node-param-default-wrong-for-options | default for an options-type node parameter must be one of the options. | Yes | | node-param-default-wrong-for-simplify | default for a Simplify node parameter must be true. | Yes | | node-param-default-wrong-for-string | default for a string-type node parameter must be a string, unless typeOptions.multipleValues is set to true. | Yes | | node-param-description-boolean-without-whether | description in a boolean node parameter must start with Whether. | No | | node-param-description-comma-separated-hyphen | The string comma-separated in description must be hyphenated. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-empty-string | description in node parameter or in option in options-type and multi-options-type param must be filled out or removed. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-excess-final-period | description in node parameter must end without a final period if a single-sentence description. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-excess-inner-whitespace | description in node parameter must not contain excess inner whitespace. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-identical-to-display-name | description in node parameter must not be identical to displayName. | Yes | | node-param-description-line-break-html-tag | description in node parameter must not contain an HTML line break. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-lowercase-first-char | First char in description in node parameter must be uppercase. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-miscased-id | ID in description in node parameter must be fully uppercased. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-miscased-json | JSON in description in node parameter must be fully uppercased. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-miscased-url | URL in description in node parameter must be fully uppercased. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-missing-final-period | description in node parameter must end with a final period if a multiple-sentence description, unless ending with </code>. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-missing-for-ignore-ssl-issues | description for Ignore SSL node parameter must be present. | Yes | | node-param-description-missing-for-return-all | description for Return All node parameter must be present. | Yes | | node-param-description-missing-for-simplify | description for Simplify node parameter must be present. | Yes | | node-param-description-missing-from-dynamic-multi-options | description in dynamic-multi-options-type node parameter must be present. | Yes | | node-param-description-missing-from-dynamic-options | description in dynamic-options-type node parameter must be present. | Yes | | node-param-description-missing-from-limit | description in Limit node parameter must be present. | Yes | | node-param-description-unencoded-angle-brackets | description in node parameter must encode angle brackets for them to render. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-unneeded-backticks | description in node parameter must not use unneeded backticks. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-untrimmed | description in node parameter must be trimmed. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-url-missing-protocol | description in node parameter must include protocol e.g. https:// when containing a URL. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-weak | description in node parameter must be either useful or omitted. Applicable by extension to description in option in options-type and multi-options-type node parameter. | Yes | | node-param-description-wrong-for-dynamic-multi-options | description in dynamic-multi-options-type node parameter must be Choose from the list, or specify IDs using an <a href="https://docs.n8n.io/code/expressions/">expression</a> | Yes | | node-param-description-wrong-for-dynamic-options | description in dynamic-options-type node parameter must be Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a> | Yes | | node-param-description-wrong-for-ignore-ssl-issues | description for Ignore SSL node parameter must be Whether to connect even if SSL certificate validation is not possible | Yes | | node-param-description-wrong-for-limit | description for Limit node parameter must be Max number of results to return | Yes | | node-param-description-wrong-for-return-all | description for Return All node parameter must be Whether to return all results or only up to a given limit | Yes | | node-param-description-wrong-for-simplify | description for Simplify node parameter must be Whether to return a simplified version of the response instead of the raw data | Yes | | node-param-description-wrong-for-upsert | description for Upsert node parameter must be Create a new record, or update the current one if it already exists (upsert). The resource name e.g. 'contact' is also allowed instead of 'record'. | Yes | | node-param-display-name-excess-inner-whitespace | displayName in node parameter or in fixed collection section must not contain excess inner whitespace. Applicable by extension to name in options-type or multi-options-type node parameter. | Yes | | node-param-display-name-miscased-id | ID in displayName in node parameter must be fully uppercased. Applicable by extension to name in options-type or multi-options-type node parameter. | Yes | | node-param-display-name-miscased | displayName in node parameter or in fixed collection section must title cased. Applicable by extension to name in options-type or multi-options-type node parameter. | Yes | | node-param-display-name-not-first-position | By convention, displayName in node parameter must be placed first. | Yes | | node-param-display-name-untrimmed | displayName in node parameter or in fixed collection section must be trimmed. Applicable by extension to name in options-type or multi-options-type node parameter. | Yes | | node-param-display-name-wrong-for-dynamic-multi-options | displayName for dynamic-multi-options-type node parameter must end with Names or IDs | Yes | | node-param-display-name-wrong-for-dynamic-options | displayName for dynamic-options-type node parameter must end with Name or ID | Yes | | node-param-display-name-wrong-for-simplify | displayName for Simplify node parameter must be Simplify | Yes | | node-param-display-name-wrong-for-update-fields | displayName for Update operation node parameter must be Update Fields | Yes | | node-param-fixed-collection-type-unsorted-items | Items in a fixed-collection-type node parameter section must be alphabetized by displayName if five or more than five, unless the items are address fields. | Yes | | node-param-hint-untrimmed | hint in node parameter must be trimmed. | Yes | | node-param-hint-url-missing-protocol | hint in node parameter must include protocol e.g. https:// when containing a URL. | Yes | | node-param-min-value-wrong-for-limit | minValue for Limit node parameter must be a positive integer. | Yes | | node-param-multi-options-type-unsorted-items | Items in a multi-options-type node parameter must be alphabetized by name if five or more than five. | No | | node-param-name-untrimmed | name in node parameter or in fixed collection section must be trimmed. | Yes | | node-param-operation-option-action-miscased | The property action in an option in an Operation node parameter must be sentence-cased. | Yes | | node-param-operation-option-action-wrong-for-get-many | The property action in a Get Many option in an Operation node parameter must start with Get many. | Yes | | node-param-operation-option-description-wrong-for-get-many | The property description in a Get Many option in an Operation node parameter must mention many instead of all. | Yes | | node-param-operation-option-without-action | An option in an Operation node parameter must have an action property. The action property may or may not be identical to the description property. | Yes | | node-param-operation-without-no-data-expression | noDataExpression in an Operation node parameter must be present and enabled. | Yes | | node-param-option-description-identical-to-name | description in option in options-type node parameter must not be identical to name. | Yes | | node-param-option-name-containing-star