{"id":15945814,"url":"https://github.com/ig3/eslint-config-entrain","last_synced_at":"2026-01-31T18:02:58.165Z","repository":{"id":57118060,"uuid":"428302431","full_name":"ig3/eslint-config-entrain","owner":"ig3","description":"eslint configuration for Entrain","archived":false,"fork":false,"pushed_at":"2024-12-05T12:13:11.000Z","size":202,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-20T03:18:17.642Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ig3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-15T14:44:38.000Z","updated_at":"2024-12-05T12:13:15.000Z","dependencies_parsed_at":"2024-10-06T17:01:19.138Z","dependency_job_id":"bb274d0c-578c-4fb6-95bd-1513a691a67e","html_url":"https://github.com/ig3/eslint-config-entrain","commit_stats":{"total_commits":86,"total_committers":14,"mean_commits":6.142857142857143,"dds":0.4883720930232558,"last_synced_commit":"74ba042121f50b69f87fd973db9eb0328cfb506d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ig3/eslint-config-entrain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ig3%2Feslint-config-entrain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ig3%2Feslint-config-entrain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ig3%2Feslint-config-entrain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ig3%2Feslint-config-entrain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ig3","download_url":"https://codeload.github.com/ig3/eslint-config-entrain/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ig3%2Feslint-config-entrain/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28949274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T14:26:55.697Z","status":"ssl_error","status_checked_at":"2026-01-31T14:26:52.545Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-07T09:07:03.053Z","updated_at":"2026-01-31T18:02:58.145Z","avatar_url":"https://github.com/ig3.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eslint-config-entrain\n\neslint sharable config for Entrain.\n\n## Install\n\n```bash\nnpm install --save-dev @ig3/eslint-config-entrain\n```\n\n## Usage\n\nThis package provides eslint version 9 flat configuration for CommonJS\nmodules.\n\nCreate file `eslint.config.js` containing:\n\n```\n'use strict';\n\nconst eslintConfigEntrain = require('@ig3/eslint-config-entrain');\n\nmodule.exports = [\n  ...eslintConfigEntrain\n];\n```\n\nYou can add or override rules or other configuration options using standard\neslint flat configuration.\n\nexample, one project required:\n\n```\n'use strict';\n\nconst eslintConfigEntrain = require('@ig3/eslint-config-entrain');\nconst globals = require('globals');\n\nmodule.exports = [\n  ...eslintConfigEntrain,\n  languageOptions: {\n    sourceType: 'commonjs',\n    globals: {\n      ...globals.node,\n    }\n  },\n];\n```\n\n## Implementation\nThis implementation is based on\n[neostandard](https://www.npmjs.com/package/neostandard).\n\nPrevious versions were based on\n[eslint-config-standard](https://www.npmjs.com/package/eslint-config-standard)\nhowever that was stuck on eslint version 8 with no immediate plans to\nsupport version 9 and the new flat configuration. The neostandard project\nwas forked to address the stalled development of standard.\n\nFor full details of creating and using shared configurations, see: \n[sharable configs](http://eslint.org/docs/developer-guide/shareable-configs).\n\n\n## Rules\n\n`eslint-config-entrain` is based on\n[neostandard](https://www.npmjs.com/package/neostandard).\n\nThe following rules are changed:\n\n```\n  {\n    rules: {\n      '@stylistic/semi': [2, 'always'],\n      '@stylistic/no-extra-semi': 2,\n      '@stylistic/indent': ['error', 2, {\n        MemberExpression: 0,\n      }],\n      'object-shorthand': ['error', 'consistent'],\n    },\n  },\n```\n\n[Semicolons are required](https://eslint.style/rules/default/semi)\nbut [no extra semicolons](https://eslint.style/rules/default/no-extra-semi)\nare allowed, and\n[2 spaces indentation (no tabs)](https://eslint.style/rules/default/indent)\nwithout enforced indentaton of multi-line property chains.\n\n[Object shorthand](https://eslint.org/docs/rules/object-shorthand) must be\nused consistently (all shorthand or all long-form) but isn't required.\n\nFor example:\n\n```\n  functionReturningPromise()\n  .then(result =\u003e {\n    console.log('the result is: ', result);\n  })\n  .catch(err =\u003e {\n    console.error('failed with: ', err);\n  });\n```\n\nBut if you prefer to indent the promise chain, that's OK too:\n\n```\n  functionReturningPromise()\n    .then(result =\u003e {\n      console.log('the result is: ', result);\n    })\n    .catch(err =\u003e {\n      console.error('failed with: ', err);\n    });\n```\n\n## Motivation\n\nI quite liked [standardjs](https://standardjs.com/) except:\n\n 1. For consistency with other languages that require semicolons (e.g. Perl,\n    C, etc.) I prefer to use semicolons to terminate statements. [Automatic\n    Semicolon\n    Insertion](http://www.ecma-international.org/ecma-262/5.1/#sec-7.9) is\n    an unfortunate misfeature of JavaScript. It is not ambiguous at all\n    (despite much argument, disagreement and misunderstanding) but it\n    requires the developer to be familiar with and pay attention to the\n    rules: something that computers are good at but humans are not.\n\n 2. I don't like indenting promise chains. One of the advantages of promises\n    over callbacks is avoiding indentation and requiring the chain to be\n    indented removes some of this benefit. But eslint-config-entrain doesn't\n    enforce no indentation, so feel free to indent if that's your\n    preference.\n\n 3. Sometimes it is necessary to override settings.\n    [standardjs](https://standardjs.com/) makes doing so difficult to\n    impossible (e.g. it is practically impossible to set parser options when\n    using `standard`). While consistency is good, sometimes exceptions are\n    appropriate or even necessary (e.g. when developing a common node CJS\n    module that is not using strict mode), particularly when working with\n    existing / legacy code. \n\n 4. Working with a linter which I know is based on\n    [eslint](https://eslint.org) but which doesn't behave according to the\n    [eslint](https://eslint.org) documentation is frustrating, particularly\n    as some of the features of [standardjs](https://standardjs.com) are not\n    documented (e.g. details of the command line options).\n\n 5. It doesn't support eslint version 9 and flat configuration, and the\n    current version (as at 20240619) requires packages that are no longer\n    supported, some of which have known faults. The package developers and\n    contributors were unable to agree to a plan to support version 9,\n    causing neostandard to be forked.\n\nWith this configuration, I can have all the rules of\n[standardjs](https://standardjs.org), with just a couple of personal\npreference deviations, by using the configuration as-is, but can easily\nchange anything, according to the needs of the specific project, following\nstandard [eslint](https://eslint.org) documentation: the best of both\nworlds.\n\n## License\n\n[ISC](LICENSE.md)\n\n## Changes\n### 3.0.1 - 20220503\n\nOverride object-shorthand to consistent\n\n### 3.0.0 - 20220503\n\nUpdate dependencies.\n\n```\n eslint-config-standard   ^16.0.3  →   ^17.0.0     \n eslint-plugin-import    \u003e=2.25.3  →  \u003e=2.26.0     \n eslint-plugin-promise    \u003e=5.1.1  →   \u003e=6.0.0     \n eslint                    ^8.2.0  →   ^8.14.0     \n tape                      ^5.3.1  →    ^5.5.3     \n```\n\n### 2.0.5 - 20211116\nUpdate dependencies\n\n### 2.0.4 - 20211027\n\n* Update dependencies.\n* Adapt tests to the new version of eslint.\n* Add an eslint configuration\n\n### 2.0.3 - 20210722\n\nUpdate README.\n\n### 2.0.2 - 20210720\n\nChange peerDependencies to dependencies.\n\n### 2.0.1 - 20210718\n\nRemoved peer dependency on eslint-plugin-standard\n\n### 2.0.0 - 20210718\n\nUpdate dependencies:\n\n```\n eslint                   \u003e=6.0.1  →  \u003e=7.31.0\n eslint-config-standard   ^14.1.1  →   ^16.0.3\n eslint-plugin-import    \u003e=2.18.0  →  \u003e=2.23.4\n eslint-plugin-node       \u003e=9.1.0  →  \u003e=11.1.0\n eslint-plugin-promise    \u003e=4.2.1  →   \u003e=5.1.0\n eslint-plugin-standard   \u003e=4.0.0  →   \u003e=5.0.0\n tape                      ^4.9.1  →    ^5.2.2\n```\n\n## 4.0.0 - 20240619\n * Based on neostandard instead of standard\n * Configuration for eslint version 9 flat configuration\n * updated dependencies\n\n## 4.0.1 - 20240619\n * Remove dependency @stylistic/eslint-plugin-js\n\n## 4.0.2 - 20240622\n * Add newstandard as a keyword\n\n## 4.0.3 - 20240717\n * Replace tape with multi-tape and @ig3/test\n * Update dependencies\n\n## 4.0.4 - 20241296\n * Update dependencies\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fig3%2Feslint-config-entrain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fig3%2Feslint-config-entrain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fig3%2Feslint-config-entrain/lists"}