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**.
- 1. Recommended skills
- 2. Development software
- 3. Getting the source code
- 4. Installing dependencies
- 5. Configuration
- 6. Testing
- 7. Source code style guidelines
- 8. DevSecOps
- 9. Design
- 10. Roadmap
In order to work with archetypes-rules as a developer, we recommend you feel comfortable with:
If that sounds like you, then continue reading to get started.
Before you can build and test archetypes-rules, you must install and configure the following products on your development machine:
-
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.
-
Node.js
, (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.
-
NPM (which installs with Node.js) or Yarn
Why:
NPM and Yarn install and update
archetypes-rules's
third-party dependencies.
Fork and clone the archetypes-rules repository:
-
Sign in to Gitlab.
-
Fork the main archetypes-rules repository (aka, "
origin
"). -
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
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
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 |
archetypes-rules stores configuration details in the environment— separate from code—with the
dotenv-extended
>module.
Read The Twelve-Factor App: Store config in the environment
for details.
Click here for detailed .env variable initialization instructions.
View dotenv-extended's README
for detailed
.env
variable set up instructions.
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=
.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=
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>
archetypes-rules uses Jest for Behavior-Driven Development (BDD) and unit tests
.
Your test suites must pass within coverage thresholds before your Pull Request will be reviewed on GitLab.
To run tests:
$ npm test
# => Run all archetypes-rules tests on node
You can troubleshoot issues in two ways:
-
debug
moduleHow:
Prefix REPL runs with DEBUG=dls. E.g.:
DEBUG=dls npm test
-
The best way to troubleshoot your tests is with a debugger.
How:
Read Debugging tests in VS Code
for step-by-step set-up and execution instructions.
- ESLint
to evaluate and format source code;
- Prettier
to format JSON, Markdown, and YAML.
- Standard JS code style
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
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
archetypes-rules uses Travis CI
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" |
- Pull Requests will only be approved and merged once all tests pass.
- Travis CI will fail if any of the test suites fails, or a linting rule is violated.
- Linting,
- Unit tests, and
- Code coverage thresholds