{"_id":"@ctlyst.id/eslint-config","_rev":"10-080012a42496e248658966cd115d6cb7","name":"@ctlyst.id/eslint-config","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@ctlyst.id/eslint-config","version":"1.0.0","author":{"name":"ctlyst.id","email":"dev@machtwatch.co.id"},"license":"MIT","_id":"@ctlyst.id/eslint-config@1.0.0","maintainers":[{"name":"adhan","email":"wirya@machtwatch.co.id"},{"name":"ma2d","email":"m.firdaus@machtwatch.co.id"},{"name":"mfauzanalg-catalyst","email":"m.fauzan@machtwatch.co.id"},{"name":"machtwatchdev","email":"dev@machtwatch.co.id"},{"name":"bowomachtwatch","email":"bowo@machtwatch.co.id"},{"name":"catalyst-mirza","email":"mirza.zanuar@machtwatch.co.id"},{"name":"aligarsp","email":"aligar@machtwatch.co.id"},{"name":"alit-ctlyst","email":"alit@machtwatch.co.id"},{"name":"mamang.pria","email":"pria.jatnika@machtwatch.co.id"},{"name":"fahmi-machtwatch","email":"fahmi.idris@machtwatch.co.id"},{"name":"mw_lucky","email":"lucky@machtwatch.co.id"},{"name":"yusuf.bagus","email":"yusuf.bagus@machtwatch.co.id"},{"name":"mwrezha","email":"reza@machtwatch.co.id"},{"name":"williamkarnomachtwatch","email":"william.karno@machtwatch.co.id"},{"name":"prasetiodc","email":"prasetio@machtwatch.co.id"},{"name":"dio-machtwatch","email":"dio@machtwatch.co.id"}],"contributors":[{"name":"Fahmi Idris","email":"fahmi.idris@machtwatch.co.id"}],"homepage":"https://github.com/machtwatch/ctlyst-eslint-config#readme","bugs":{"url":"https://github.com/machtwatch/ctlyst-eslint-config/issues"},"dist":{"shasum":"9d3dc64f103ae2543a587367484ca9a491e1f7ac","tarball":"https://registry.npmjs.org/@ctlyst.id/eslint-config/-/eslint-config-1.0.0.tgz","fileCount":10,"integrity":"sha512-kUdMRNQiCZ+x0DErvAIFHBa6CUu613L04IaLnfvvc1+7qSM1Zz0mbz2exsilrkBOnjhSdNAyjxp5z/KmD0Jq9g==","signatures":[{"sig":"MEYCIQC0ts/mxfFyWG+dputimjKJS+nBuzAyZsd1xEaj+CXxagIhALu81e85k0y/qreoDXXmscGowD3lesu9PIW93F42dQiy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16832},"main":"index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"lint-staged"}},"gitHead":"e66042dadc3bb3b7dbffd0349042c6e29feae0cd","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","format":"prettier --write \"**/*.{js,jsx,ts,tsx}\"","validate":"yarn lint","release:canary":"changeset publish --snapshot --no-git-tag --tag canary","version:canary":"changeset version --snapshot canary","release:package":"changeset publish","version:package":"changeset version"},"_npmUser":{"name":"fahmi-machtwatch","email":"fahmi.idris@machtwatch.co.id"},"repository":{"url":"git+https://github.com/machtwatch/ctlyst-eslint-config.git","type":"git"},"_npmVersion":"10.2.4","description":"ESLint config used for frontend team at ctlyst.id","directories":{},"lint-staged":{"*.{js,jsx,ts,tsx}":["eslint --fix","prettier --write"]},"_nodeVersion":"20.11.1","dependencies":{"eslint-config-next":"14.1.4","eslint-plugin-jest":"^27.2.1","eslint-plugin-node":"^11.1.0","eslint-plugin-react":"^7.34.1","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.27.5","eslint-plugin-promise":"^6.1.1","eslint-config-prettier":"^9.1.0","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^5.0.0","eslint-plugin-security":"^2.1.1","@typescript-eslint/parser":"^7.7.1","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-test-selectors":"^2.0.4","eslint-plugin-unused-imports":"^3.1.0","eslint-plugin-testing-library":"^6.2.0","eslint-config-airbnb-typescript":"^18.0.0","@typescript-eslint/eslint-plugin":"^7.4.0","eslint-plugin-simple-import-sort":"^12.0.0","eslint-import-resolver-typescript":"^3.5.5","@typescript-eslint/typescript-estree":"^7.4.0"},"_hasShrinkwrap":false,"packageManager":"yarn@4.5.3","devDependencies":{"husky":"^9.0.11","eslint":"8.57.0","prettier":"^3.0.3","typescript":"5.4.3","@types/node":"20.11.30","lint-staged":"^15.2.2","@changesets/cli":"^2.27.11","@commitlint/cli":"^19.2.1","@commitlint/config-conventional":"^19.1.0"},"peerDependencies":{"eslint":"^8.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_1.0.0_1736151685910_0.2863752478319006","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-01-06T08:21:25.909Z","modified":"2026-09-16T06:32:59.490Z","1.0.0":"2025-01-06T08:21:26.086Z"},"bugs":{"url":"https://github.com/machtwatch/ctlyst-eslint-config/issues"},"author":{"name":"ctlyst.id","email":"dev@machtwatch.co.id"},"license":"MIT","homepage":"https://github.com/machtwatch/ctlyst-eslint-config#readme","repository":{"url":"git+https://github.com/machtwatch/ctlyst-eslint-config.git","type":"git"},"description":"ESLint config used for frontend team at ctlyst.id","contributors":[{"name":"Fahmi Idris","email":"fahmi.idris@machtwatch.co.id"}],"maintainers":[{"email":"dev@machtwatch.co.id","name":"machtwatchdev"}],"readme":"# ctlyst-eslint-config\n\n> ESLint config used at ctlyst.id\n\nThis is the common ESLint config used by projects at [ctlyst.id](https://ctlyst.id).\n\n## Installation\n\nInstall `eslint` and `@ctlyst.id/eslint-config` using your favourite package manager:\n\n```bash\n# yarn\nyarn add --dev eslint @ctlyst.id/eslint-config\n# npm\nnpm install --save-dev eslint @ctlyst.id/eslint-config\n```\n\nThen, in your `.eslintrc` file, extend `@ctlyst.id/eslint-config`.\n\n```json\n{\n  \"extends\": [\"@ctlyst.id/eslint-config\"]\n}\n```\n\nIf you're using this ESLint config for React-based projects, extend `@ctlyst.id/eslint-config/react` instead.\n\n```json\n{\n  \"extends\": [\"@ctlyst.id/eslint-config/react\"]\n}\n```\n\nIf you're using this ESLint config for next.js projects, extend `@ctlyst.id/eslint-config/next` instead.\n\n```json\n{\n  \"extends\": [\"@ctlyst.id/eslint-config/next\"]\n}\n```\n\nFor more setups, take a look at the [templates directory](./templates)\n\n## Versioning\n\nNote that this package does not specifically follow Semantic Versioning, since all changes in this package are relative to the changes in our Development Standard. Major version bumps will occur when we transition into a new major version of ESLint.\n\nTo recap:\n\n- `major`: Will be bumped when we transition to a new major version of ESLint\n- `minor`: Potentially breaking changes that's still within the same major version of ESLint\n- `patch`: Minor patches/bugfixes\n\n## Using TypeScript\n\nTo use `@ctlyst.id/eslint-config` with TypeScript, you need to do a little additional setup to make `eslint-plugin-import` play well with TypeScript. First, install `eslint-import-resolver-typescript`.\n\n```bash\n# yarn\nyarn add --dev eslint-import-resolver-typescript\n```\n\nThen, on `.eslintrc`:\n\n```js\nmodule.exports = {\n  // other configuration are omitted for brevity\n  settings: {\n    'import/resolver': {\n      typescript: {}, // this loads <rootdir>/tsconfig.json to eslint\n    },\n  },\n};\n```\n\n## Using Prettier\n\n[Prettier](https://prettier.io/) is a tool to automatically format your code during save. It supports various editors, from VSCode, Atom, Sublime, and even Emacs.\n\nTo use this ESLint config in conjunction with Prettier, copy the `.prettierrc` file in this repository and paste it to your project.\n\nThen install the Prettier eslint config and plugin:\n\n```sh-session\n$ yarn add --dev eslint-plugin-prettier eslint-config-prettier prettier\n```\n\nAnd finally, include them as follows. (**IMPORTANT:** `eslint-config-prettier` MUST be extended **after** `@ctlyst.id/eslint-config`!)\n\n```json\n{\n  \"extends\": [\"@ctlyst.id/eslint-config\", \"prettier\", \"prettier/@typescript-eslint\", \"plugin:prettier/recommended\"],\n  \"plugins\": [\"prettier\"],\n  \"rules\": {\n    \"prettier/prettier\": \"error\"\n  }\n}\n```\n\n## Contributing\n\nIssues and Pull Requests welcome! Please read the [Contributing Guidelines](CONTRIBUTING.md) beforehand.\n\n## License\n\n[MIT](LICENSE) (c) ctlyst.id\n\n## Maintainers\n\n- Fahmi Idris – ctlyst.id\n","readmeFilename":"README.md"}