{"id":16208501,"url":"https://github.com/ehmicky/eslint-config","last_synced_at":"2025-03-16T11:30:42.329Z","repository":{"id":40571999,"uuid":"151834816","full_name":"ehmicky/eslint-config","owner":"ehmicky","description":"ESLint configuration for my own projects","archived":false,"fork":false,"pushed_at":"2025-03-12T04:09:15.000Z","size":15975,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-12T04:26:49.277Z","etag":null,"topics":["code-quality","continuous-integration","editorconfig","es6","eslint","eslintconfig","fp","functional","html","javascript","lint","markdown","modularity","nodejs","prettier","prettierrc","standard","standard-js","strict","testing"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ehmicky.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2018-10-06T11:48:12.000Z","updated_at":"2025-03-12T04:09:19.000Z","dependencies_parsed_at":"2023-09-23T18:33:32.079Z","dependency_job_id":"3f60e6b2-e4a0-4393-b821-8fec470e2187","html_url":"https://github.com/ehmicky/eslint-config","commit_stats":{"total_commits":2083,"total_committers":2,"mean_commits":1041.5,"dds":0.004320691310609748,"last_synced_commit":"0fddea75dda4ed97b1a350635df2bc63001d127d"},"previous_names":["ehmicky/eslint-config-standard-prettier-fp"],"tags_count":439,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Feslint-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Feslint-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Feslint-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Feslint-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ehmicky","download_url":"https://codeload.github.com/ehmicky/eslint-config/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243814864,"owners_count":20352037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["code-quality","continuous-integration","editorconfig","es6","eslint","eslintconfig","fp","functional","html","javascript","lint","markdown","modularity","nodejs","prettier","prettierrc","standard","standard-js","strict","testing"],"created_at":"2024-10-10T10:17:18.581Z","updated_at":"2025-03-16T11:30:42.317Z","avatar_url":"https://github.com/ehmicky.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Node](https://img.shields.io/badge/-Node.js-808080?logo=node.js\u0026colorA=404040\u0026logoColor=66cc33)](https://www.npmjs.com/package/@ehmicky/eslint-config)\n[![Browsers](https://img.shields.io/badge/-Browsers-808080?logo=firefox\u0026colorA=404040)](https://www.npmjs.com/package/@ehmicky/eslint-config)\n[![Mastodon](https://img.shields.io/badge/-Mastodon-808080.svg?logo=mastodon\u0026colorA=404040\u0026logoColor=9590F9)](https://fosstodon.org/@ehmicky)\n[![Medium](https://img.shields.io/badge/-Medium-808080.svg?logo=medium\u0026colorA=404040)](https://medium.com/@ehmicky)\n\n[ESLint](https://eslint.org) configuration for my own projects.\n\nThis is not meant to be shared and semantic versioning is not followed.\n\n# Hire me\n\nPlease\n[reach out](https://www.linkedin.com/feed/update/urn:li:activity:7117265228068716545/)\nif you're looking for a Node.js API or CLI engineer (11 years of experience).\nMost recently I have been [Netlify Build](https://github.com/netlify/build)'s\nand [Netlify Plugins](https://www.netlify.com/products/build/plugins/)'\ntechnical lead for 2.5 years. I am available for full-time remote positions.\n\n# Coding style\n\n## Functional programming\n\nState should be immutable.\n\nVariables and object properties should be read-only. They should be copied\ninstead of mutated. Assignment should only happen during declaration.\n\nThe following patterns should be avoided as they imply state:\n\n- loops (`for`, `while`). Use functional methods (like `Array.map()` and\n  `Array.filter()`) and recursion instead.\n- classes/OOP. To inherit/share behavior, use composition or generic programming\n  instead.\n- events. Use promises and streams instead.\n\nGlobal variables should not be used except the ones that are built-in (e.g.\n`Object`).\n\nThrowing exceptions is allowed as this can simplify code.\n\n## Modularity\n\nCode should be split into small files and functions:\n\n- files have at most 90 non-empty lines and 10 dependencies.\n- functions have at most 4 branches and 10 statements.\n- branches/blocks should not be nested.\n- lines are at most 80 characters long.\n\n## Modern JavaScript/TypeScript\n\n- ES modules. Exports should be named (no `export default`).\n- object and array destructuring.\n- object spreading: `{ ...object }` instead of `Object.assign({}, ...object)`\n- arguments spreading: `funcName(...args)` instead of\n  `funcName.call(this, ...args)`\n- parameters spreading: `(...args) =\u003e ...` instead of `(arguments) =\u003e ...`\n- template strings instead of concatenation.\n- `async`/`await` instead of explicit promises or callbacks.\n- vanilla JavaScript/TypeScript instead of Lodash/Underscore.\n- only JavaScript/TypeScript features supported by the Node.js version specified\n  in your `package.json` `engines` field.\n\n## Strictness\n\nThe configuration is very explicit and enforces strict linting. This should help\nyou find bugs and maintain a consistent coding style:\n\n- no dead code.\n- typecasting should be explicit.\n- file dependencies should be sorted.\n- variable names should remain short.\n- constants should be assigned to variables.\n- avoiding turning off ESLint rules with comments.\n- RegExps should use the `u` flag.\n- no variables shadowing.\n\n## Other styling rules\n\n- named parameters (i.e. passing an object as single parameter) instead of\n  positional parameters.\n- arrow functions should be preferred\n\n# Support\n\nFor any question, _don't hesitate_ to [submit an issue on GitHub](../../issues).\n\nEveryone is welcome regardless of personal background. We enforce a\n[Code of conduct](CODE_OF_CONDUCT.md) in order to promote a positive and\ninclusive environment.\n\n# Contributing\n\nThis project was made with ❤️. The simplest way to give back is by starring and\nsharing it online.\n\nIf the documentation is unclear or has a typo, please click on the page's `Edit`\nbutton (pencil icon) and suggest a correction.\n\nIf you would like to help us fix a bug, please check our\n[guidelines](CONTRIBUTING.md). Pull requests are welcome!\n\n\u003c!-- Thanks go to our wonderful contributors: --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START --\u003e\n\u003c!-- prettier-ignore --\u003e\n\u003c!--\n\u003ctable\u003e\u003ctr\u003e\u003ctd align=\"center\"\u003e\u003ca href=\"https://fosstodon.org/@ehmicky\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/8136211?v=4\" width=\"100px;\" alt=\"ehmicky\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eehmicky\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ehmicky/eslint-config/commits?author=ehmicky\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#design-ehmicky\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#ideas-ehmicky\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/ehmicky/eslint-config/commits?author=ehmicky\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n--\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehmicky%2Feslint-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fehmicky%2Feslint-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehmicky%2Feslint-config/lists"}