Skip to content

Latest commit

 

History

History

developer-guide

Developer Guide

code This guide is for those who want to contribute code to **archetypes-rules**. This guide describes how to set up your development environment so that you can build and test **archetypes-rules**.

Table of Contents

1. Recommended skills

In order to work with archetypes-rules as a developer, we recommend you feel comfortable with:

Skill Reason
code JavaScript archetypes-rules is written in JavaScript (CommonJS)
markdown Documentation Docs build community and enable asyncronous collaboration
package NPM We use the npm dependency manager and publish to the npm public registry
platform Node.js archetypes-rules runs on Node.js
terminal Command-line-interface We use the CLI to build, test, and publish archetypes-rules
tests Unit testing Unit tests are a form of executable documentation that make collaboration, fixes, and refactoring possible

If that sounds like you, then continue reading to get started.

2. Development software

Before you can build and test archetypes-rules, you must install and configure the following products on your development machine:

  1. Git link-external

    Why:

    archetypes-rules is hosted on GitLab and uses Git for source control. In order to obtain the source code, you must first install Git on your system. Instructions for installing and setting up Git can be found at https://help.github.com/articles/set-up-git.

  2. Node.js link-external, (version specified in the engines field of package.json).

    Why:

    archetypes-rules uses Node.js modules to generate tables of contents, version, and publish documentation.

  3. NPM (which installs with Node.js) or Yarn link-external

    Why:

    NPM and Yarn install and update archetypes-rules's third-party dependencies.

3. Getting the source code

Fork and clone the archetypes-rules repository:

  1. Sign in to Gitlab.

  2. Fork the main archetypes-rules repository (aka, "origin").

  3. Clone your fork of the archetypes-rules repository and define an upstream remote pointing back to the archetypes-rules repository that you forked in the first place.

    # Clone your GitLab repository:
    git clone [email protected]:<your-account>/archetypes-rules.git
    
    # Go to the repo root directory:
    cd archetypes-rules
    
    # Add the main GitLab repository as an upstream remote
    # to your repository:
    git remote add upstream https://github.com/archetypes-rules/signatures.git

directory structure Toggle project directory structure view...
signatures/
├─┬ .gitlab/
│ ├─┬ issue_templates/
│ │ ├── ADR.md
│ │ ├── Defect.md
│ │ ├── Feature.md
│ │ ├── Metric.md
│ │ └── Refactoring.md
│ ├─┬ merge_request_templates/
│ │ └── merge_request.md
│ └─┬ rc/
│   ├─┬ bash/
│   │ └── .envvarsrc
│   ├─┬ jsdoc/
│   │ └── conf.json
│   ├─┬ labels/
│   │ ├── create-group-labels.js
│   │ ├── delete-group-labels.js
│   │ └── labels.json
│   ├─┬ md/
│   │ ├── .remarkignore
│   │ ├── .remarkrc.yml
│   │ └── markdown.config.js
│   ├─┬ sonar/
│   │ └── scan.js
│   └── eslint-rules.js
├─┬ .vscode/
│ ├── launch.json
│ └── settings.json
├─┬ contributing/
│ └── STYLE_GUIDES.md
├─┬ dist/
│ └── archetypes-rules.js
├─┬ docs/
│ ├─┬ .ci/
│ │ ├── eslint-rules
│ │ └── signatures2summary.js
│ ├─┬ adr/
│ │ ├── adr-0001-architecture-decision-record-use-adrs.md
│ │ ├── adr-0002-architecture-decision-record-modular-design.md
│ │ ├── adr-0003-architecture-decision-record-adopt-googleapis%2fnodejs-dlp-interfaces.md
│ │ └── README.md
│ ├─┬ developer-guide/
│ │ ├── codacy-ebook-metrics.pdf
│ │ ├── collaborator-guide.md
│ │ ├── mozilla-community-metrics-community-builders.pdf
│ │ └── README.md
│ ├─┬ includes/
│ │ ├── configuration-details.md
│ │ ├── eg-convert-json-to-signatures.js
│ │ └── octicons.md
│ ├─┬ maintainer-guide/
│ │ ├─┬ governance-models/
│ │ │ ├── benevolent-dictator-governance-model.md
│ │ │ ├── governance-role-terminology-comparision.md
│ │ │ ├── loosely-coupling-work-from-orgs.md
│ │ │ ├── meritocratic-governance-model.md
│ │ │ └── README.md
│ │ ├── codacy-ebook-code-reviews.pdf
│ │ ├── displaying-product-maturity.md
│ │ ├── governance.md
│ │ ├── issues.md
│ │ ├── merge-requests.md
│ │ ├── README.md
│ │ └── releases.md
│ └── README.md
├─┬ lib/
│ ├─┬ __tests__/
│ │ ├─┬ __fixtures__/
│ │ │ ├── gl-got-resp-failure.json
│ │ │ ├── gl-got-resp-success.js
│ │ │ ├── options.json
│ │ │ ├── regexes.json
│ │ │ └── signatures.json
│ │ ├─┬ __mocks__/
│ │ │ └── is-main.js
│ │ ├── archetypes-rules.test.js
│ │ └── env-config.test.js
│ ├─┬ gitlab/
│ │ └─┬ prohibited-file-names/
│ │   ├─┬ __tests__/
│ │   │ ├── prohibited-file-names.test.js
│ │   │ └── to-expression.test.js
│ │   ├─┬ filter/
│ │   │ └── by-fs-parts.js
│ │   ├── index.js
│ │   └── to-expression.js
│ ├─┬ signature/
│ │ ├─┬ __tests__/
│ │ │ ├── signature-class.test.js
│ │ │ └── signature.test.js
│ │ ├── index.js
│ │ ├── json-re2-replacer.js
│ │ ├── match.js
│ │ ├── null-signature.js
│ │ ├── signature.js
│ │ ├── to-re2.js
│ │ ├── valid-signature-parts.js
│ │ └── valid-signature-types.js
│ ├── env-config.js
│ └── index.js
├── .adr.json
├── .all-contributorsrc
├── .editorconfig
├── .env.defaults
├── .env.schema
├── .eslintignore
├── .eslintrc.json
├── .eslintrc.yaml
├── .fossa.yml
├── .gitattributes
├── .gitignore
├── .gitlab-ci.yml
├── .npmrc
├── CHANGELOG.md
├── code-of-conduct.md
├── CONTRIBUTING.md
├── archetypes-rules-1.0.4.tgz
├── files_blacklist.yml
├── jest.config.js
├── LICENSE
├── NOTICE.md
├── npm-shrinkwrap.json
├── package.json
├── README.md
├── ROADMAP.md
├── rollup.config.js
└── signatures.json

4. Installing dependencies

Next, install the JavaScript modules needed to build and test archetypes-rules:

# Install all project dependencies (package.json)
npm install

View current dependencies for archetypes-rules...
Dependency Description Version License Type
[email protected] small debugging utility 4.1.1 MIT production
dotenv-extended@^2.3.0 A module for loading .env files and optionally loading defaults and a schema for validating all values are present. 2.4.0 MIT production
[email protected] fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as mkdir -p, cp -r, and rm -rf. 7.0.1 MIT production
git-repo-info@^2.1.0 Retrieve current sha and branch name from a git repo. 2.1.0 MIT production
lodash.set@^4.3.2 The lodash method _.set exported as a module. 4.3.2 MIT production
[email protected] The lodash method _.template exported as a module. 4.4.0 MIT production
lodash.topairs@^4.3.0 The lodash method _.toPairs exported as a module. 4.3.0 MIT production
[email protected] Bindings for RE2: fast, safe alternative to backtracking regular expression engines. 1.8.4 BSD-3-Clause production
[email protected] Convenience wrapper for got to interact with the GitLab API 9.0.3 MIT optional
@semantic-release/changelog@^3.0.2 semantic-release plugin to create or update a changelog file 3.0.2 MIT dev
@semantic-release/commit-analyzer@^6.1.0 semantic-release plugin to analyze commits with conventional-changelog 6.1.0 MIT dev
@semantic-release/git@^7.0.8 semantic-release plugin to commit release assets to the project's git repository 7.0.8 MIT dev
@semantic-release/gitlab@^3.1.2 semantic-release plugin to publish a GitLab release 3.1.2 MIT dev
@semantic-release/npm@^5.1.4 semantic-release plugin to publish a npm package 5.1.4 MIT dev
@semantic-release/release-notes-generator@^7.1.4 semantic-release plugin to generate changelog content with conventional-changelog 7.1.4 MIT dev
[email protected] Tool to easily add recognition for new contributors 6.1.2 MIT dev
commitplease@^3.2.0 Validates strings as commit messages 3.2.0 MIT dev
[email protected] An AST-based pattern checker for JavaScript. 5.15.1 MIT dev
[email protected] Turns off all rules that are unnecessary or might conflict with Prettier. 4.1.0 MIT dev
eslint-config-standard@^12.0.0 JavaScript Standard Style - ESLint Shareable Config 12.0.0 MIT dev
eslint-config-xo@^0.26.0 ESLint shareable config for XO 0.26.0 MIT dev
[email protected] Find built-in ESLint rules you don't have in your custom config. 3.3.1 MIT dev
[email protected] Import with sanity. 2.16.0 MIT dev
[email protected] Lint JSON files 1.4.0 ISC dev
eslint-plugin-no-unsafe-innerhtml@^1.0.16 custom ESLint rule to disallows unsafe innerHTML, outerHTML and insertAdjacentHTML 1.0.16 MPL-2.0 dev
eslint-plugin-no-unsanitized@^3.0.2 ESLint rule to disallow unsanitized code 3.0.2 MPL-2.0 dev
eslint-plugin-node@^8.0.1 Additional ESLint's rules for Node.js 8.0.1 MIT dev
eslint-plugin-prettier@^3.0.1 Runs prettier as an eslint rule 3.0.1 MIT dev
eslint-plugin-promise@^4.0.1 Enforce best practices for JavaScript promises 4.0.1 ISC dev
eslint-plugin-scanjs-rules@^0.2.1 ESLint plugin that contains ScanJS rules 0.2.1 MPL-2.0 dev
eslint-plugin-security@^1.4.0 Security rules for eslint 1.4.0 Apache-2.0 dev
[email protected] SonarJS rules for ESLint 0.3.0 LGPL-3.0 dev
eslint-plugin-standard@^4.0.0 ESlint Plugin for the Standard Linter 4.0.0 MIT dev
eslint-plugin-unicorn@^7.1.0 Various awesome ESLint rules 7.1.0 MIT dev
eslint-plugin-xss@^0.1.9 Validates XSS related issues of mixing HTML and non-HTML content in variables. 0.1.9 ISC dev
[email protected] Add jest support to any projects 1.6.0 MIT dev
husky@^1.3.1 Prevents bad commit or push (git hooks, pre-commit/precommit, pre-push/prepush, post-merge/postmerge and all that stuff...) 1.3.1 MIT dev
[email protected] Delightful JavaScript Testing. 24.1.0 MIT dev
[email protected] A jest reporter that generates junit xml files 6.3.0 Apache-2.0 dev
[email protected] A Sonar test reporter for Jest. 2.0.0 MIT dev
jsdoc@^3.5.5 An API documentation generator for JavaScript. 3.5.5 Apache-2.0 dev
[email protected] Lint files staged by git 8.1.5 MIT dev
markdown-magic@^0.1.25 Automatically update markdown files with content from external sources 0.1.25 MIT dev
markdown-magic-dependency-table@^1.3.2 Generate table of information about dependencies automatically in markdown 1.3.2 MIT dev
markdown-magic-directory-tree@^1.2.3 Print an archy tree for markdown file 1.2.3 MIT dev
markdown-magic-package-scripts@^1.2.1 Print list of scripts in package.json with descriptions 1.2.1 MIT dev
[email protected] A markdown parser built for speed 0.6.1 MIT dev
[email protected] Prettier is an opinionated code formatter 1.16.4 MIT dev
[email protected] Get an array of all files in a directory and subdirectories. 2.2.2 MIT dev
remark@^10.0.1 Markdown processor powered by plugins 10.0.1 MIT dev
remark-cli@^6.0.1 CLI to process markdown with remark using plugins 6.0.1 MIT dev
remark-preset-lint-markdown-style-guide@^2.1.2 remark preset to configure remark-lint with rules that enforce the markdown style guide 2.1.2 MIT dev
[email protected] remark preset to configure remark-lint with rules that prevent mistakes or syntaxes that do not work correctly across vendors 3.0.2 MIT dev
[email protected] Transform links and images into references and definitions 4.0.3 MIT dev
[email protected] Markdown compiler for remark 6.0.4 MIT dev
[email protected] Next-generation ES module bundler 1.4.1 MIT dev
[email protected] Convert CommonJS modules to ES2015 9.2.1 MIT dev
[email protected] Convert .json files to ES6 modules: 3.1.0 MIT dev
[email protected] Bundle third-party dependencies in node_modules 4.0.1 MIT dev
[email protected] Rollup plugin to minify generated es bundle 4.0.4 MIT dev
semantic-release@^15.13.... Automated semver compliant package publishing 15.13.3 MIT dev
[email protected] Wrap sonar-scanner as a node module 3.1.0 MIT dev
[email protected] SonarQube/SonarCloud Scanner for the JavaScript world 2.4.0 LGPL-3.0 dev
[email protected] CLI tool for running Yeoman generators 2.0.5 BSD-2-Clause dev

5. Configuration

info archetypes-rules stores configuration details in the environment— separate from code—with the dotenv-extended > Go to its README on GitHub module.

Read The Twelve-Factor App: Store config in the environment Read Factor 3, "Config" for details.


Click here for detailed .env variable initialization instructions.

info View dotenv-extended's README External link for detailed .env variable set up instructions.

file .env.schema

Defines a schema of what variables should be defined in the combination of .env and .env.defaults.

# .env.schema, committed to repo

## See https://github.com/keithmorris/node-dotenv-extended/#readme
## ⛔️
## 🚫  DO NOT COMMIT YOUR ACTUAL .env file to version control.
## 🚫  It should only include environment-specific values such
## 🚫  as database passwords or API keys.
## 🚫  Your production database should have a different password
## 🚫  than your development database.

NODE_ENV=

#
# Product manifest (package.json) variables
#

NPM_PACKAGE_NAME=
NPM_PACKAGE_VERSION=

#
# Gitlab variables
#

GITLAB_ENDPOINT=
GITLAB_PROJECT_ID=
# The name of the branch, tag, or commit SHA with the signatures.json resource.
GITLAB_REF=
GITLAB_RESOURCE=
GITLAB_TOKEN=
K8S_SECRET_GITLAB_TOKEN=

#
# Jest JUnit for JavaScript BDD test suites
# @see https://github.com/jest-community/jest-junit#configuration
#

# name attribute of <testsuites>
# @default "jest tests"
JEST_SUITE_NAME=

# File path to save the output.
# @default "./junit.xml"
JEST_JUNIT_OUTPUT=

# Directory to save the output.
# null
JEST_JUNIT_OUTPUT_DIR=

# File name for the output.
# @default "./junit.xml"
JEST_JUNIT_OUTPUT_NAME=

# Template string for name attribute of the <testsuite>.
# @default "{title}"
JEST_JUNIT_SUITE_NAME=

# Template string for the classname attribute of <testcase>.
# @default "{classname} {title}"
JEST_JUNIT_CLASSNAME=

# Template string for the name attribute of <testcase>.
# @default "{classname} {title}"
JEST_JUNIT_TITLE=

# Character(s) used to join the describe blocks.
# @default " "
JEST_JUNIT_ANCESTOR_SEPARATOR=

# DEPRECATED. Use suiteNameTemplate instead. Use file path as the name attribute of <testsuite>
# @default "false"
JEST_USE_PATH_FOR_SUITE_NAME=

#
# SonarCloud variables (CI/CD code analysis)
#

# Name of the current working branch.
# This is a short-lived branch
# corresponding to Pull/Pull Requests, feature, and fix branches.
# To get the current working branch name, run:
# npm --loglevel silent run vars:git:branch:name
# @see https://sonarcloud.io/documentation/branches/overview/

SONAR_BRANCH_NAME=

# The default branch of the repository; it should almost always
# be "master".

SONAR_BRANCH_TARGET=
SONAR_DATA_LOSS_SIGNATURES_TOKEN=
SONAR_HOST_URL=
SONAR_ORGANIZATION=
SONAR_PROJECT_DESCRIPTION=
SONAR_PROJECT_KEY=
SONAR_PROJECT_NAME=
SONAR_PROJECT_VERSION=
SONAR_TOKEN=
K8S_SECRET_SONAR_TOKEN=

file .env.defaults

.env.defaults provides common configuration defaults across all environments (commited to source control). This contains overall app configuration values that would be common across environments. The .env.defaults file is loaded first; then the .env file is loaded and will overwrite any values from the .env.defaults file.

# .env.defaults, committed to repo

## See https://github.com/keithmorris/node-dotenv-extended/#readme
## ⛔️
## 🚫  DO NOT COMMIT YOUR ACTUAL .env file to version control.
## 🚫  It should only include environment-specific values such
## 🚫  as database passwords or API keys.
## 🚫  Your production database should have a different password
## 🚫  than your development database.

#
# Product manifest (package.json) variables
#

NPM_PACKAGE_NAME=archetypes-rules
NPM_PACKAGE_VERSION=

#
# Gitlab variable defaults
#

GITLAB_ENDPOINT=https://github.com/api/v4
GITLAB_JSON_OUTPUT=true
GITLAB_PROJECT_ID=10416318
GITLAB_REF=master
GITLAB_RESOLVE_BODY_ONLY=true
GITLAB_RESOURCE=signatures.json
GITLAB_TOKEN=
K8S_SECRET_GITLAB_TOKEN=

#
# Jest JUnit for JavaScript BDD test suites
# @see https://github.com/jest-community/jest-junit#configuration
#

# name attribute of <testsuites>
# @default "jest tests"
JEST_SUITE_NAME=archetypes-rules tests

# File path to save the output.
# @default "./junit.xml"
JEST_JUNIT_OUTPUT=./jest-junit.xml

# Directory to save the output.
# null
JEST_JUNIT_OUTPUT_DIR=

# File name for the output.
# @default "./junit.xml"
JEST_JUNIT_OUTPUT_NAME=./jest-junit.xml

# Template string for name attribute of the <testsuite>.
# @default "{title}"
JEST_JUNIT_SUITE_NAME=

# Template string for the classname attribute of <testcase>.
# @default "{classname} {title}"
JEST_JUNIT_CLASSNAME=

# Template string for the name attribute of <testcase>.
# @default "{classname} {title}"
JEST_JUNIT_TITLE=

# Character(s) used to join the describe blocks.
# @default " "
JEST_JUNIT_ANCESTOR_SEPARATOR=

# DEPRECATED. Use suiteNameTemplate instead. Use file path as the name attribute of <testsuite>
# @default "false"
JEST_USE_PATH_FOR_SUITE_NAME=

#
# SonarCloud variable defaults
#

# SonarCloud static code analysis
SONAR_BRANCH_TARGET=master
SONAR_HOST_URL=https://sonarcloud.io
SONAR_ORGANIZATION=archetypes-rules
SONAR_PROJECT_KEY=signatures
SONAR_PROJECT_NAME=archetypes-rules
SONAR_PROJECT_VERSION=$SONAR_PROJECT_VERSION
SONAR_TOKEN=
K8S_SECRET_SONAR_TOKEN=

file .env

The environment-specific file (not committed to source control). This file will have sensitive information such as usernames, passwords, api keys, etc. These would be specific to each environment and should not be committed to source control.

GITLAB_TOKEN=<private-access-token>
SONAR_TOKEN=<private-access-token>
SONAR_DATA_LOSS_SIGNATURES_TOKEN=<private-access-token>


6. Testing

Jest BDD archetypes-rules uses Jest for Behavior-Driven Development (BDD) and unit tests link-external.

Your test suites must pass within coverage thresholds before your Pull Request will be reviewed on GitLab.

6.1. Running tests

To run tests:

$ npm test
# => Run all archetypes-rules tests on node

6.2. Troubleshooting

You can troubleshoot issues in two ways:

  1. debug module

    How:

    info Prefix REPL runs with DEBUG=dls. E.g.:

    DEBUG=dls npm test
  2. The best way to troubleshoot your tests is with a debugger.

    How:

    tip Debugging Jest with VS Code

    Read Debugging tests in VS Code link-external for step-by-step set-up and execution instructions.

7. Source code style guidelines

verified archetypes-rules uses

  1. ESLint link-external to evaluate and format source code;
  2. Prettier link-external to format JSON, Markdown, and YAML.
  3. Standard JS code style link-external for code clarity and community conventions.

You can both evaluate and format your all sources by running:

$ npm run lint
# => Formats and lints all JavaScript, JSON, Markdown, and
#    package.json.

You can also format sources by type:

# Evaluate and format JavaScript:
npm run lint:js

# Format JSON:
npm run lint:json

# Format all markdown files:
npm run lint:md

code style rules View the ESLint rules we enforce...
current rules 396 rules found

accessor-pairs https://eslint.org/docs/rules/accessor-pairs
array-bracket-newline https://eslint.org/docs/rules/array-bracket-newline
array-bracket-spacing https://eslint.org/docs/rules/array-bracket-spacing
array-callback-return https://eslint.org/docs/rules/array-callback-return
array-element-newline https://eslint.org/docs/rules/array-element-newline
arrow-body-style https://eslint.org/docs/rules/arrow-body-style arrow-parens
https://eslint.org/docs/rules/arrow-parens arrow-spacing
https://eslint.org/docs/rules/arrow-spacing block-scoped-var
https://eslint.org/docs/rules/block-scoped-var block-spacing
https://eslint.org/docs/rules/block-spacing brace-style
https://eslint.org/docs/rules/brace-style callback-return
https://eslint.org/docs/rules/callback-return camelcase
https://eslint.org/docs/rules/camelcase capitalized-comments
https://eslint.org/docs/rules/capitalized-comments class-methods-use-this
https://eslint.org/docs/rules/class-methods-use-this comma-dangle
https://eslint.org/docs/rules/comma-dangle comma-spacing
https://eslint.org/docs/rules/comma-spacing comma-style
https://eslint.org/docs/rules/comma-style complexity
https://eslint.org/docs/rules/complexity computed-property-spacing
https://eslint.org/docs/rules/computed-property-spacing consistent-return
https://eslint.org/docs/rules/consistent-return consistent-this
https://eslint.org/docs/rules/consistent-this constructor-super
https://eslint.org/docs/rules/constructor-super curly
https://eslint.org/docs/rules/curly default-case
https://eslint.org/docs/rules/default-case dot-location
https://eslint.org/docs/rules/dot-location dot-notation
https://eslint.org/docs/rules/dot-notation eol-last
https://eslint.org/docs/rules/eol-last eqeqeq
https://eslint.org/docs/rules/eqeqeq for-direction
https://eslint.org/docs/rules/for-direction func-call-spacing
https://eslint.org/docs/rules/func-call-spacing func-name-matching
https://eslint.org/docs/rules/func-name-matching func-names
https://eslint.org/docs/rules/func-names func-style
https://eslint.org/docs/rules/func-style function-paren-newline
https://eslint.org/docs/rules/function-paren-newline generator-star
https://eslint.org/docs/rules/generator-star generator-star-spacing
https://eslint.org/docs/rules/generator-star-spacing getter-return
https://eslint.org/docs/rules/getter-return global-require
https://eslint.org/docs/rules/global-require guard-for-in
https://eslint.org/docs/rules/guard-for-in handle-callback-err
https://eslint.org/docs/rules/handle-callback-err id-blacklist
https://eslint.org/docs/rules/id-blacklist id-length
https://eslint.org/docs/rules/id-length id-match
https://eslint.org/docs/rules/id-match implicit-arrow-linebreak
https://eslint.org/docs/rules/implicit-arrow-linebreak import/default
https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/default.md
import/export
https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/export.md
import/first
https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/first.md
import/named
https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/named.md
import/namespace
https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/namespace.md
import/no-duplicates
https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md
import/no-named-default
https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-default.md
import/no-unresolved
https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unresolved.md
import/no-webpack-loader-syntax
https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-webpack-loader-syntax.md
indent https://eslint.org/docs/rules/indent indent-legacy
https://eslint.org/docs/rules/indent-legacy init-declarations
https://eslint.org/docs/rules/init-declarations jsx-quotes
https://eslint.org/docs/rules/jsx-quotes key-spacing
https://eslint.org/docs/rules/key-spacing keyword-spacing
https://eslint.org/docs/rules/keyword-spacing line-comment-position
https://eslint.org/docs/rules/line-comment-position linebreak-style
https://eslint.org/docs/rules/linebreak-style lines-around-comment
https://eslint.org/docs/rules/lines-around-comment lines-around-directive
https://eslint.org/docs/rules/lines-around-directive lines-between-class-members
https://eslint.org/docs/rules/lines-between-class-members max-classes-per-file
https://eslint.org/docs/rules/max-classes-per-file max-depth
https://eslint.org/docs/rules/max-depth max-len
https://eslint.org/docs/rules/max-len max-lines
https://eslint.org/docs/rules/max-lines max-lines-per-function
https://eslint.org/docs/rules/max-lines-per-function max-nested-callbacks
https://eslint.org/docs/rules/max-nested-callbacks max-params
https://eslint.org/docs/rules/max-params max-statements
https://eslint.org/docs/rules/max-statements max-statements-per-line
https://eslint.org/docs/rules/max-statements-per-line multiline-comment-style
https://eslint.org/docs/rules/multiline-comment-style multiline-ternary
https://eslint.org/docs/rules/multiline-ternary new-cap
https://eslint.org/docs/rules/new-cap new-parens
https://eslint.org/docs/rules/new-parens newline-after-var
https://eslint.org/docs/rules/newline-after-var newline-before-return
https://eslint.org/docs/rules/newline-before-return newline-per-chained-call
https://eslint.org/docs/rules/newline-per-chained-call no-alert
https://eslint.org/docs/rules/no-alert no-array-constructor
https://eslint.org/docs/rules/no-array-constructor no-arrow-condition
https://eslint.org/docs/rules/no-arrow-condition no-async-promise-executor
https://eslint.org/docs/rules/no-async-promise-executor no-await-in-loop
https://eslint.org/docs/rules/no-await-in-loop no-bitwise
https://eslint.org/docs/rules/no-bitwise no-buffer-constructor
https://eslint.org/docs/rules/no-buffer-constructor no-caller
https://eslint.org/docs/rules/no-caller no-case-declarations
https://eslint.org/docs/rules/no-case-declarations no-catch-shadow
https://eslint.org/docs/rules/no-catch-shadow no-class-assign
https://eslint.org/docs/rules/no-class-assign no-comma-dangle
https://eslint.org/docs/rules/no-comma-dangle no-compare-neg-zero
https://eslint.org/docs/rules/no-compare-neg-zero no-cond-assign
https://eslint.org/docs/rules/no-cond-assign no-confusing-arrow
https://eslint.org/docs/rules/no-confusing-arrow no-console
https://eslint.org/docs/rules/no-console no-const-assign
https://eslint.org/docs/rules/no-const-assign no-constant-condition
https://eslint.org/docs/rules/no-constant-condition no-continue
https://eslint.org/docs/rules/no-continue no-control-regex
https://eslint.org/docs/rules/no-control-regex no-debugger
https://eslint.org/docs/rules/no-debugger no-delete-var
https://eslint.org/docs/rules/no-delete-var no-div-regex
https://eslint.org/docs/rules/no-div-regex no-dupe-args
https://eslint.org/docs/rules/no-dupe-args no-dupe-class-members
https://eslint.org/docs/rules/no-dupe-class-members no-dupe-keys
https://eslint.org/docs/rules/no-dupe-keys no-duplicate-case
https://eslint.org/docs/rules/no-duplicate-case no-duplicate-imports
https://eslint.org/docs/rules/no-duplicate-imports no-else-return
https://eslint.org/docs/rules/no-else-return no-empty
https://eslint.org/docs/rules/no-empty no-empty-character-class
https://eslint.org/docs/rules/no-empty-character-class no-empty-function
https://eslint.org/docs/rules/no-empty-function no-empty-pattern
https://eslint.org/docs/rules/no-empty-pattern no-eq-null
https://eslint.org/docs/rules/no-eq-null no-eval
https://eslint.org/docs/rules/no-eval no-ex-assign
https://eslint.org/docs/rules/no-ex-assign no-extend-native
https://eslint.org/docs/rules/no-extend-native no-extra-bind
https://eslint.org/docs/rules/no-extra-bind no-extra-boolean-cast
https://eslint.org/docs/rules/no-extra-boolean-cast no-extra-label
https://eslint.org/docs/rules/no-extra-label no-extra-parens
https://eslint.org/docs/rules/no-extra-parens no-extra-semi
https://eslint.org/docs/rules/no-extra-semi no-fallthrough
https://eslint.org/docs/rules/no-fallthrough no-floating-decimal
https://eslint.org/docs/rules/no-floating-decimal no-func-assign
https://eslint.org/docs/rules/no-func-assign no-global-assign
https://eslint.org/docs/rules/no-global-assign no-implicit-coercion
https://eslint.org/docs/rules/no-implicit-coercion no-implicit-globals
https://eslint.org/docs/rules/no-implicit-globals no-implied-eval
https://eslint.org/docs/rules/no-implied-eval no-inline-comments
https://eslint.org/docs/rules/no-inline-comments no-inner-declarations
https://eslint.org/docs/rules/no-inner-declarations no-invalid-regexp
https://eslint.org/docs/rules/no-invalid-regexp no-invalid-this
https://eslint.org/docs/rules/no-invalid-this no-irregular-whitespace
https://eslint.org/docs/rules/no-irregular-whitespace no-iterator
https://eslint.org/docs/rules/no-iterator no-label-var
https://eslint.org/docs/rules/no-label-var no-labels
https://eslint.org/docs/rules/no-labels no-lone-blocks
https://eslint.org/docs/rules/no-lone-blocks no-lonely-if
https://eslint.org/docs/rules/no-lonely-if no-loop-func
https://eslint.org/docs/rules/no-loop-func no-magic-numbers
https://eslint.org/docs/rules/no-magic-numbers no-misleading-character-class
https://eslint.org/docs/rules/no-misleading-character-class no-mixed-operators
https://eslint.org/docs/rules/no-mixed-operators no-mixed-requires
https://eslint.org/docs/rules/no-mixed-requires no-mixed-spaces-and-tabs
https://eslint.org/docs/rules/no-mixed-spaces-and-tabs no-multi-assign
https://eslint.org/docs/rules/no-multi-assign no-multi-spaces
https://eslint.org/docs/rules/no-multi-spaces no-multi-str
https://eslint.org/docs/rules/no-multi-str no-multiple-empty-lines
https://eslint.org/docs/rules/no-multiple-empty-lines no-native-reassign
https://eslint.org/docs/rules/no-native-reassign no-negated-condition
https://eslint.org/docs/rules/no-negated-condition no-negated-in-lhs
https://eslint.org/docs/rules/no-negated-in-lhs no-nested-ternary
https://eslint.org/docs/rules/no-nested-ternary no-new
https://eslint.org/docs/rules/no-new no-new-func
https://eslint.org/docs/rules/no-new-func no-new-object
https://eslint.org/docs/rules/no-new-object no-new-require
https://eslint.org/docs/rules/no-new-require no-new-symbol
https://eslint.org/docs/rules/no-new-symbol no-new-wrappers
https://eslint.org/docs/rules/no-new-wrappers no-obj-calls
https://eslint.org/docs/rules/no-obj-calls no-octal
https://eslint.org/docs/rules/no-octal no-octal-escape
https://eslint.org/docs/rules/no-octal-escape no-param-reassign
https://eslint.org/docs/rules/no-param-reassign no-path-concat
https://eslint.org/docs/rules/no-path-concat no-plusplus
https://eslint.org/docs/rules/no-plusplus no-process-env
https://eslint.org/docs/rules/no-process-env no-process-exit
https://eslint.org/docs/rules/no-process-exit no-proto
https://eslint.org/docs/rules/no-proto no-prototype-builtins
https://eslint.org/docs/rules/no-prototype-builtins no-redeclare
https://eslint.org/docs/rules/no-redeclare no-regex-spaces
https://eslint.org/docs/rules/no-regex-spaces no-reserved-keys
https://eslint.org/docs/rules/no-reserved-keys no-restricted-globals
https://eslint.org/docs/rules/no-restricted-globals no-restricted-imports
https://eslint.org/docs/rules/no-restricted-imports no-restricted-modules
https://eslint.org/docs/rules/no-restricted-modules no-restricted-properties
https://eslint.org/docs/rules/no-restricted-properties no-restricted-syntax
https://eslint.org/docs/rules/no-restricted-syntax no-return-assign
https://eslint.org/docs/rules/no-return-assign no-return-await
https://eslint.org/docs/rules/no-return-await no-script-url
https://eslint.org/docs/rules/no-script-url no-self-assign
https://eslint.org/docs/rules/no-self-assign no-self-compare
https://eslint.org/docs/rules/no-self-compare no-sequences
https://eslint.org/docs/rules/no-sequences no-shadow
https://eslint.org/docs/rules/no-shadow no-shadow-restricted-names
https://eslint.org/docs/rules/no-shadow-restricted-names no-space-before-semi
https://eslint.org/docs/rules/no-space-before-semi no-spaced-func
https://eslint.org/docs/rules/no-spaced-func no-sparse-arrays
https://eslint.org/docs/rules/no-sparse-arrays no-sync
https://eslint.org/docs/rules/no-sync no-tabs
https://eslint.org/docs/rules/no-tabs no-template-curly-in-string
https://eslint.org/docs/rules/no-template-curly-in-string no-ternary
https://eslint.org/docs/rules/no-ternary no-this-before-super
https://eslint.org/docs/rules/no-this-before-super no-throw-literal
https://eslint.org/docs/rules/no-throw-literal no-trailing-spaces
https://eslint.org/docs/rules/no-trailing-spaces no-undef
https://eslint.org/docs/rules/no-undef no-undef-init
https://eslint.org/docs/rules/no-undef-init no-undefined
https://eslint.org/docs/rules/no-undefined no-underscore-dangle
https://eslint.org/docs/rules/no-underscore-dangle no-unexpected-multiline
https://eslint.org/docs/rules/no-unexpected-multiline
no-unmodified-loop-condition
https://eslint.org/docs/rules/no-unmodified-loop-condition no-unneeded-ternary
https://eslint.org/docs/rules/no-unneeded-ternary no-unreachable
https://eslint.org/docs/rules/no-unreachable no-unsafe-finally
https://eslint.org/docs/rules/no-unsafe-finally
no-unsafe-innerhtml/no-unsafe-innerhtml
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
no-unsafe-negation https://eslint.org/docs/rules/no-unsafe-negation
no-unsanitized/method
https://github.com/mozilla/eslint-plugin-no-unsanitized/blob/master/docs/rules/method.md
no-unsanitized/property
https://github.com/mozilla/eslint-plugin-no-unsanitized/blob/master/docs/rules/property.md
no-unused-expressions https://eslint.org/docs/rules/no-unused-expressions
no-unused-labels https://eslint.org/docs/rules/no-unused-labels no-unused-vars
https://eslint.org/docs/rules/no-unused-vars no-use-before-define
https://eslint.org/docs/rules/no-use-before-define no-useless-call
https://eslint.org/docs/rules/no-useless-call no-useless-catch
https://eslint.org/docs/rules/no-useless-catch no-useless-computed-key
https://eslint.org/docs/rules/no-useless-computed-key no-useless-concat
https://eslint.org/docs/rules/no-useless-concat no-useless-constructor
https://eslint.org/docs/rules/no-useless-constructor no-useless-escape
https://eslint.org/docs/rules/no-useless-escape no-useless-rename
https://eslint.org/docs/rules/no-useless-rename no-useless-return
https://eslint.org/docs/rules/no-useless-return no-var
https://eslint.org/docs/rules/no-var no-void
https://eslint.org/docs/rules/no-void no-warning-comments
https://eslint.org/docs/rules/no-warning-comments no-whitespace-before-property
https://eslint.org/docs/rules/no-whitespace-before-property no-with
https://eslint.org/docs/rules/no-with no-wrap-func
https://eslint.org/docs/rules/no-wrap-func node/exports-style
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/exports-style.md
node/no-deprecated-api
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md
node/no-extraneous-import
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-extraneous-import.md
node/no-extraneous-require
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-extraneous-require.md
node/no-missing-import
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-missing-import.md
node/no-missing-require
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-missing-require.md
node/no-unpublished-bin
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unpublished-bin.md
node/no-unpublished-import
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unpublished-import.md
node/no-unpublished-require
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unpublished-require.md
node/no-unsupported-features/es-syntax
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-unsupported-features.md
node/process-exit-as-throw
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/process-exit-as-throw.md
node/shebang
https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/shebang.md
nonblock-statement-body-position
https://eslint.org/docs/rules/nonblock-statement-body-position
object-curly-newline https://eslint.org/docs/rules/object-curly-newline
object-curly-spacing https://eslint.org/docs/rules/object-curly-spacing
object-property-newline https://eslint.org/docs/rules/object-property-newline
object-shorthand https://eslint.org/docs/rules/object-shorthand one-var
https://eslint.org/docs/rules/one-var one-var-declaration-per-line
https://eslint.org/docs/rules/one-var-declaration-per-line operator-assignment
https://eslint.org/docs/rules/operator-assignment operator-linebreak
https://eslint.org/docs/rules/operator-linebreak padded-blocks
https://eslint.org/docs/rules/padded-blocks padding-line-between-statements
https://eslint.org/docs/rules/padding-line-between-statements
prefer-arrow-callback https://eslint.org/docs/rules/prefer-arrow-callback
prefer-const https://eslint.org/docs/rules/prefer-const prefer-destructuring
https://eslint.org/docs/rules/prefer-destructuring prefer-named-capture-group
https://eslint.org/docs/rules/prefer-named-capture-group prefer-numeric-literals
https://eslint.org/docs/rules/prefer-numeric-literals prefer-object-spread
https://eslint.org/docs/rules/prefer-object-spread prefer-promise-reject-errors
https://eslint.org/docs/rules/prefer-promise-reject-errors prefer-reflect
https://eslint.org/docs/rules/prefer-reflect prefer-rest-params
https://eslint.org/docs/rules/prefer-rest-params prefer-spread
https://eslint.org/docs/rules/prefer-spread prefer-template
https://eslint.org/docs/rules/prefer-template promise/param-names
https://github.com/xjamundx/eslint-plugin-promise/blob/master/docs/rules/param-names.md
quote-props https://eslint.org/docs/rules/quote-props quotes
https://eslint.org/docs/rules/quotes radix https://eslint.org/docs/rules/radix
require-atomic-updates https://eslint.org/docs/rules/require-atomic-updates
require-await https://eslint.org/docs/rules/require-await require-jsdoc
https://eslint.org/docs/rules/require-jsdoc require-unicode-regexp
https://eslint.org/docs/rules/require-unicode-regexp require-yield
https://eslint.org/docs/rules/require-yield rest-spread-spacing
https://eslint.org/docs/rules/rest-spread-spacing
scanjs-rules/accidental_assignment
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/assign_to_hostname
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/assign_to_href
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/assign_to_location
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/assign_to_onmessage
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/assign_to_pathname
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/assign_to_protocol
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/assign_to_search
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/assign_to_src
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_Function
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_addEventListener
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_addEventListener_deviceproximity
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_addEventListener_message
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_connect
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_eval
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_execScript
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_hide
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_open_remote=true
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_parseFromString
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_setImmediate
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_setInterval
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/call_setTimeout
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/identifier_indexedDB
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/identifier_localStorage
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/identifier_sessionStorage
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/new_Function
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/property_addIdleObserver
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/property_createContextualFragment
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/property_crypto
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/property_geolocation
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/property_getUserMedia
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/property_indexedDB
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/property_localStorage
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/property_mgmt
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
scanjs-rules/property_sessionStorage
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-buffer-noassert
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-child-process
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-disable-mustache-escape
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-eval-with-expression
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-new-buffer
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-no-csrf-before-method-override
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-non-literal-fs-filename
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-non-literal-regexp
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-non-literal-require
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-object-injection
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-possible-timing-attacks
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-pseudoRandomBytes
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
security/detect-unsafe-regex
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
semi https://eslint.org/docs/rules/semi semi-spacing
https://eslint.org/docs/rules/semi-spacing semi-style
https://eslint.org/docs/rules/semi-style sonarjs/cognitive-complexity
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/max-switch-cases
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-all-duplicated-branches
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-duplicate-string
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-duplicated-branches
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-element-overwrite
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-extra-arguments
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-identical-conditions
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-identical-expressions
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-identical-functions
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-inverted-boolean-check
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-one-iteration-loop
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-redundant-boolean
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-small-switch
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-use-of-empty-return-value
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/no-useless-catch
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/prefer-immediate-return
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/prefer-object-literal
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/prefer-single-boolean-return
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sonarjs/prefer-while
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
sort-imports https://eslint.org/docs/rules/sort-imports sort-keys
https://eslint.org/docs/rules/sort-keys sort-vars
https://eslint.org/docs/rules/sort-vars space-after-function-name
https://eslint.org/docs/rules/space-after-function-name space-after-keywords
https://eslint.org/docs/rules/space-after-keywords space-before-blocks
https://eslint.org/docs/rules/space-before-blocks space-before-function-paren
https://eslint.org/docs/rules/space-before-function-paren
space-before-function-parentheses
https://eslint.org/docs/rules/space-before-function-parentheses
space-before-keywords https://eslint.org/docs/rules/space-before-keywords
space-in-brackets https://eslint.org/docs/rules/space-in-brackets
space-in-parens https://eslint.org/docs/rules/space-in-parens space-infix-ops
https://eslint.org/docs/rules/space-infix-ops space-return-throw-case
https://eslint.org/docs/rules/space-return-throw-case space-unary-ops
https://eslint.org/docs/rules/space-unary-ops space-unary-word-ops
https://eslint.org/docs/rules/space-unary-word-ops spaced-comment
https://eslint.org/docs/rules/spaced-comment standard/array-bracket-even-spacing
https://github.com/xjamundx/eslint-plugin-standard#rules-explanations
standard/computed-property-even-spacing
https://github.com/xjamundx/eslint-plugin-standard#rules-explanations
standard/no-callback-literal
https://github.com/xjamundx/eslint-plugin-standard#rules-explanations
standard/object-curly-even-spacing
https://github.com/xjamundx/eslint-plugin-standard#rules-explanations strict
https://eslint.org/docs/rules/strict switch-colon-spacing
https://eslint.org/docs/rules/switch-colon-spacing symbol-description
https://eslint.org/docs/rules/symbol-description template-curly-spacing
https://eslint.org/docs/rules/template-curly-spacing template-tag-spacing
https://eslint.org/docs/rules/template-tag-spacing unicode-bom
https://eslint.org/docs/rules/unicode-bom unicorn/catch-error-name
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/catch-error-name.md
unicorn/custom-error-definition
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/custom-error-definition.md
unicorn/escape-case
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/escape-case.md
unicorn/explicit-length-check
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/explicit-length-check.md
unicorn/filename-case
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/filename-case.md
unicorn/import-index
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/import-index.md
unicorn/new-for-builtins
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/new-for-builtins.md
unicorn/no-abusive-eslint-disable
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-abusive-eslint-disable.md
unicorn/no-array-instanceof
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-array-instanceof.md
unicorn/no-fn-reference-in-iterator
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-fn-reference-in-iterator.md
unicorn/no-hex-escape
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-hex-escape.md
unicorn/no-new-buffer
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-new-buffer.md
unicorn/no-process-exit
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-process-exit.md
unicorn/number-literal-case
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/number-literal-case.md
unicorn/prefer-starts-ends-with
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/prefer-starts-ends-with.md
unicorn/prefer-type-error
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/prefer-type-error.md
unicorn/regex-shorthand
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/regex-shorthand.md
unicorn/throw-new-error
https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/throw-new-error.md
use-isnan https://eslint.org/docs/rules/use-isnan valid-jsdoc
https://eslint.org/docs/rules/valid-jsdoc valid-typeof
https://eslint.org/docs/rules/valid-typeof vars-on-top
https://eslint.org/docs/rules/vars-on-top wrap-iife
https://eslint.org/docs/rules/wrap-iife wrap-regex
https://eslint.org/docs/rules/wrap-regex xss/no-location-href-assign
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
xss/no-mixed-html
https://github.com/jfmengels/eslint-rule-documentation/blob/master/contributing.md
yield-star-spacing https://eslint.org/docs/rules/yield-star-spacing yoda
https://eslint.org/docs/rules/yoda

8. DevSecOps

Travis CI logo

archetypes-rules uses Travis CI Gitlab documentation for continuous integration and delivery.

All tests, linting, and quality gates are executed with Continuous Integration services.


View all available npm-scripts...

To execute any of the following scripts, open a Terminal and run:

npm run <Script>

Examples:

# Auto-generate TOCs, dependency tables, etc.
npm run docs:md

# Lint all *.js source code files
npm run lint:js
Script Description
bundle rollup -c ./rollup.config.js --environment INCLUDE_DEPS,BUILD:production
ci:lint:js eslint . --fix -f json -o eslint-report.json
ci:test dotenv-extended --path=.env --defaults=.env.defaults --errorOnMissing=false jest --coverage --verbose true
postci:test npm run posttest && source ./.gitlab/rc/bash/.envvarsrc && npm run qa:review:sonar
contributors:add all-contributors add
contributors:gen all-contributors generate
docs:api rm -rf ./docs/api/ && ./node_modules/.bin/jsdoc ./src/**/*.js -d ./docs/api/ -c ./.gitlab/rc/jsdoc/conf.json -d ./docs/api/
docs:lint:js:rules eslint-find-rules
docs:lint:js:rules:current eslint-find-rules --current --no-error .eslintrc.yml --verbose > ./docs/.ci/eslint-rules.txt
docs:lint:js:rules:unused eslint-find-rules --unused --no-error .eslintrc.yml --verbose >> ./docs/.ci/eslint-rules.txt
predocs:md npm run docs:lint:js:rules
docs:md node .gitlab/rc/md/markdown.config.js
lint npm run lint:js && npm run lint:json && npm run lint:md
lint:js eslint . --fix -f json -o eslint-report.json
lint:js:check `eslint --print-config .
lint:json prettier --write **/*.json
lint:manifest npm prune && npm dedupe && npm shrinkwrap
lint:md remark --rc-path "./.gitlab/rc/md/.remarkrc.yml" --ignore-path "./.gitlab/rc/md/.remarkignore" .
postversion npm run bundle
preqa:review:sonar npm start
qa:review:sonar sonar-scanner -Dproject.settings=./sonar-project.properties -Dsonar.projectKey=$SONAR_PROJECT_KEY -Dsonar.organization=$SONAR_ORGANIZATION -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONAR_TOKEN
security:audit npm audit --json
security:fix npm audit fix --depth=100 --json
semantic-release semantic-release
start node -r dotenv-extended ./src/env-config.js
pretest npm run lint:js
test jest --coverage --verbose true
posttest npm run security:audit
test:create yo jest:test --
test:dist jest ./dist/index.js --coverage --verbose
vars:git:branch:name `git branch
vars:package:description node -pe "require('./package.json').description"
vars:package:keywords node -pe "require('./package.json').keywords.join(', ')"
vars:package:name node -pe "require('./package.json').name"
vars:package:version node -pe "require('./package.json').version"

  1. Pull Requests will only be approved and merged once all tests pass.
  2. Travis CI will fail if any of the test suites fails, or a linting rule is violated.

alert

CI will fail and the Pull Requests cannot be merged unless changes pass:

  • Linting,
  • Unit tests, and
  • Code coverage thresholds