{"_id":"@creo-team/eslint-config","_rev":"13-567d7be768d09013a84bcc8d110cc6f1","name":"@creo-team/eslint-config","dist-tags":{"latest":"5.0.0"},"versions":{"2.0.0":{"name":"@creo-team/eslint-config","version":"2.0.0","keywords":["eslint","eslint-config","creo-team","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.0.0","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"3f59fe24ada96d88d9d19bf1904eb2d7e0a9344f","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.0.0.tgz","fileCount":15,"integrity":"sha512-lCtD3FTpzZEWyoZrFFTRk4VpFf//LcV6Nl06EbNV3w7TETvylKxlYmmShcC0H3uBs59ria57TnZiPOIeROLAtA==","signatures":[{"sig":"MEUCIETUoLVb3x3EWraxB+MsQx5100axfcN0vsVCeGfcwAUtAiEAspbctNL7FWUMdKJbQ8GWnvgd3hnBrhFbspzohIgW5uQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38117},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","gitHead":"d7b79de6b538f43a2332c929cea5ab5a6ff44fb8","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint **/*.ts **/*.tsx *.js","test":"npm run lint","build":"tsc","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.0.0","description":"Modern TypeScript/React ESLint configuration with unified stylistic rules.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^61.7.1","eslint-define-config":"^2.1.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","eslint-plugin-filenames":"^1.3.2","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-plugin-project-structure":"^3.14.2","eslint-import-resolver-typescript":"^4.4.4"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.0.0_1771642636787_0.9671546727774865","host":"s3://npm-registry-packages-npm-production"}},"2.3.9":{"name":"@creo-team/eslint-config","version":"2.3.9","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.3.9","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"38c601e7476d693efc81ce7a7047f29bf92bda0c","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.3.9.tgz","fileCount":12,"integrity":"sha512-xvk249yvYuBDZ/hHkoRKyoS22KPhjm9h5yXROuvBTENZ3r+0qrAYgrH2yGC/2InoTJYPIKa+6q8meM3zWmIdOQ==","signatures":[{"sig":"MEUCIHewW8CQtMRaqz6VZFKDHkTa8MXZ7zh4NfVyYrgroAI0AiEAs9FeUpZXdWaCDxeSHwVUvjqDt8w9FIASyWuHpg8WjBY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@2.3.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51293},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=24"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"}},"gitHead":"989bbd21e2b0d6c4075da8c6c0a91e7afa44c09b","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.3.9_1771701554016_0.34825110833678297","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@creo-team/eslint-config","version":"2.4.0","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.4.0","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"f43717932ffde1f11716ae6a0bff90a77e48fa62","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.4.0.tgz","fileCount":12,"integrity":"sha512-GWNy05PjhXdT3HvgUOctMUJD6lKbAf5KWcVFmt+mEjiszBLUlf7hpwNUNNyVzIucdBaQiQ3DQyAwMFjwxrgBjw==","signatures":[{"sig":"MEQCIHxGMBuL2cAXqODYN8RDALFWntZiRFRDy8xDHm5ulH7MAiBozZ9etH2TO3Yj77Q/DE/AaypY3t0PAgxkDUw48BJ1XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@2.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51833},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=24"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"}},"gitHead":"848d8d1c19dab01696990743f1d93eb1b83a72be","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.4.0_1771702050096_0.4262095269246855","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"@creo-team/eslint-config","version":"2.4.1","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.4.1","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"4aa0fb9bac29e08727f85d58684c4dca8ead9f28","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.4.1.tgz","fileCount":12,"integrity":"sha512-KybYml6QpRbKT//kc4P7DTffYEFgRl6LK0VziunQzUHiiL9fvJqFyZZ/iHuYR7Doo1D//Keju8rNL9YJ6jbtBw==","signatures":[{"sig":"MEQCIEJHec4cafx5cKNBOgPEbE5xx76xtFSnIJkUUHLlLKiTAiAEafWMIJGXs/oPLS6OdiU4dHQr2K+gQFhasepbHNhxCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@2.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":53534},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=24"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"}},"gitHead":"5d9a5edd06d29e34cbf7032fb9709a5b31ad9631","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.4.1_1771702404472_0.8642909933590415","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"@creo-team/eslint-config","version":"2.4.2","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.4.2","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"4613e9a471f8ed6b2b189a6ae3f9544e923f72d1","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.4.2.tgz","fileCount":17,"integrity":"sha512-eOyhi86f2hUp6DGrVkuiR9AyNxOkv3cMcGV+xwTsAtzgov5STz2X0EgWLKZzuldRdPAANk4zSHJWqUeBH9k6rg==","signatures":[{"sig":"MEYCIQD5DwRoBhHnCNj81qrFTA60W4ldvPszES+6xfxWLMEgfQIhANcY1ozAt03z5PyBydIvJTJsI+oxlzr5fa9Up9AyGKN6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@2.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":66284},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=20.0.0"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"},"./constants":{"default":"./dist/constants.js","require":"./dist/constants.js"}},"gitHead":"f1f18663895b3823d87da41080569871802a9b92","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.4.2_1771706381462_0.3235642244726993","host":"s3://npm-registry-packages-npm-production"}},"2.4.3":{"name":"@creo-team/eslint-config","version":"2.4.3","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.4.3","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"1958237021ce2fa9b28c20177ad34f5149d09a91","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.4.3.tgz","fileCount":18,"integrity":"sha512-glqzPMZsFIjGH5bIAkMp4Esp9BsgriDn3OxASpjqq8oCOFxe8TNs56rALE6wWaZhBWUoG4/Q/5qVQm2SLnZFoQ==","signatures":[{"sig":"MEQCIFCpLEh5rNWRz2Gv2GnS5En8ur1tefNjMtBWs4M1FW4UAiBAQKZ2RGtJ4DgYgP4t8GEsjV0I8RCB8c7l7evxGsi2AQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@2.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":71270},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=20.0.0"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"},"./constants":{"default":"./dist/constants.js","require":"./dist/constants.js"}},"gitHead":"6f736b270144ee9fde87108a7b74a0025d643d52","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.4.3_1771708009549_0.8249263265774873","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@creo-team/eslint-config","version":"2.5.0","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.5.0","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"ec1ce86f7ef354aade88468a8c5ba94774f79b1e","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.5.0.tgz","fileCount":18,"integrity":"sha512-u5zuBIuFsAnSvlVmYxg8Mp6sbDUKq0N6vq1dDYTdLPZIU/0xLn9YPfvyjKLI155Oz2YX5sPT0GzirHQpfzt/wA==","signatures":[{"sig":"MEYCIQCuXMQJZeXGEOSIz7byOJjQyurvNdxWz9tsSj1B3BQZLAIhANMmCpfdPzkKHW42Dh21+yp0c6ezEXoTt3wkf/p4GN2L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@2.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76605},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=20.0.0"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"},"./constants":{"default":"./dist/constants.js","require":"./dist/constants.js"}},"gitHead":"961699309ee706ded5a9d482c77bf94831474925","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.5.0_1771722775996_0.8067541258094026","host":"s3://npm-registry-packages-npm-production"}},"2.5.3":{"name":"@creo-team/eslint-config","version":"2.5.3","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.5.3","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"68547e96146f1e4869ae332acd86183aa3e4e54d","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.5.3.tgz","fileCount":18,"integrity":"sha512-50RA7JcpUvkRtWdoF5asb+tXPMinvVHNk89vHovw0lKAxQBu61RHv2/6OWrRIYaZ0KT3lbAwaVLhhqjmXKJIaQ==","signatures":[{"sig":"MEUCIQDAcUlamQLanSw8pTCOBhEL6XjlmojGu2/5KPr3g239zgIgb8/nkzxoHhgQ5w9vuTD2pVFNm/RBZ80yKbyyjfQ5uhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@2.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76605},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=20.0.0"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"},"./constants":{"default":"./dist/constants.js","require":"./dist/constants.js"}},"gitHead":"f08dbbb565d07777188a7917518e8bb660519cf7","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.5.3_1771728528193_0.6468483005939152","host":"s3://npm-registry-packages-npm-production"}},"2.5.4":{"name":"@creo-team/eslint-config","version":"2.5.4","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.5.4","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"322db648c944b054887144d1cb1dd15dfdb46c6f","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.5.4.tgz","fileCount":18,"integrity":"sha512-onOeL7byG/MLZEriDLm5iI7KKjkYCM+fXmVPIoAbBCfz36md01E+nqkMtAnuhYCIC6XLnWNp8ACyucKhfVXs7A==","signatures":[{"sig":"MEUCICB+b11IfWs3uP4AVguOl4l+CJeAwv669o3ndTznQ+CdAiEA+Y4/BgSYrxMEn3e34L9SZ1uzzg5XraUvA/bo8PWZhmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@2.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76604},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=20.0.0"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"},"./constants":{"default":"./dist/constants.js","require":"./dist/constants.js"}},"gitHead":"9a21c0ad9d728a014698fb69d5a332a64323b2c8","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.5.4_1771728764764_0.4597939246455629","host":"s3://npm-registry-packages-npm-production"}},"2.5.5":{"name":"@creo-team/eslint-config","version":"2.5.5","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.5.5","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"beb7495c82592adfc22aa3e15993f50ff8c25887","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.5.5.tgz","fileCount":18,"integrity":"sha512-1NVZuVJGm3MpizRdIwaqu2kX3UDWJ+PJJWA/3ALC+sfBQ+v/ckZ+BMtD1lCdj3CRVLCic3WM48nzjoUAvElcuA==","signatures":[{"sig":"MEUCICcfq0CD1eU472ixd7JfbGZLH+Vb68IIOq+2v9Qf1HpQAiEAiPqfa1KUYNPByUsJu2xqqRwVml3U7gZx0eu0BIiW9eE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@2.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76604},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=20.0.0"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"},"./constants":{"default":"./dist/constants.js","require":"./dist/constants.js"}},"gitHead":"4144d832b46d743c26a57bf29aef04e11a6ce39b","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.5.5_1771728940961_0.1343746021950143","host":"s3://npm-registry-packages-npm-production"}},"2.5.6":{"name":"@creo-team/eslint-config","version":"2.5.6","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@2.5.6","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"78f60d076599aaa31ec66356b32df95cdb8c684d","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-2.5.6.tgz","fileCount":18,"integrity":"sha512-UlZwalpboRopPakJotRJ7TO1WvE3wuFtR12daPUpW0OIMrIhG76lFvfFIt+9YeAb9AZUnodEaHrbBFNaVzutJA==","signatures":[{"sig":"MEUCIQCcvVkz4ThFgAZFDcY3beZbfxnDQcE6U6vB+h+Stu9QxAIgWADlau4JQ/VrBdX6z4R56OnnUTmUglbXKOsr8+pFyU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@2.5.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76604},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=20.0.0"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"},"./constants":{"default":"./dist/constants.js","require":"./dist/constants.js"}},"gitHead":"0b9fbf0d4703a4cf72a796a96009b600c2d0af44","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade --reject \"eslint|@eslint/js\" && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"eslint":"^9.39.3","@eslint/js":"^9.39.3","typescript":"^5.9.3","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.7.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-perfectionist":"^4.15.1","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_2.5.6_1771784949984_0.3809696965431155","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@creo-team/eslint-config","version":"4.0.0","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","_id":"@creo-team/eslint-config@4.0.0","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"homepage":"https://github.com/creo-team/eslint-config","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"0d6e7aeb339e388e78e45f4910deba83e06fff46","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-4.0.0.tgz","fileCount":18,"integrity":"sha512-47JOtm2lPN1wCYbB4NNcJ9x3CczHBPHj1NevuRUVB3fQfMM4/qoAyk1pi52nJbrdNpr1bFpBBeTAIvO6C9E31A==","signatures":[{"sig":"MEQCIFWqfJYTJOkGyjIlpMH5KNwajtcVoOvzUUHVpRX4m427AiAEGDFOHl1K745YG62ov5cc+y+XqUBAJq+LqI8U/+z+zQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73160},"main":"dist/eslint.config.js","type":"commonjs","types":"./dist/eslint.config.d.ts","engines":{"npm":">=10","node":">=20.0.0"},"exports":{".":{"default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"},"./constants":{"default":"./dist/constants.js","require":"./dist/constants.js"}},"gitHead":"f23b87b03bfe3951a2165ea47f21aa622548620a","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade && npm install","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b5312c0b-7629-444d-9de4-12aa11427154"}},"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.9.0","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"eslint":"^10.1.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","typescript-eslint":"^8.57.2","eslint-plugin-jsdoc":"^62.8.0","eslint-plugin-import-x":"^4.16.2","eslint-plugin-prettier":"^5.5.5","@stylistic/eslint-plugin":"^5.10.0","eslint-plugin-perfectionist":"^5.7.0","eslint-import-resolver-typescript":"^4.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_4.0.0_1774290013772_0.5694848155732259","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"_id":"@creo-team/eslint-config@5.0.0","bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"dist":{"shasum":"a12dca263120f3e4f8813e9b4b962a103252575d","tarball":"https://registry.npmjs.org/@creo-team/eslint-config/-/eslint-config-5.0.0.tgz","fileCount":21,"integrity":"sha512-ZdFJaXWxLTjVtlG3MKgSXHx3e1QskZckYasWN0MoeQJA/tN4dqMrs2OXiMdSWfZ2ZB70pOiririkUV8Gblp1Pg==","signatures":[{"sig":"MEUCIHpQkMMwuijfSCD1hcsWn1ViG8R7/QIZ6Qf2YVw355qEAiEA2LS7TAkmGDA8WwJrJfAgBuXlneRe5shKKKO/XB0TPIw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHd8Nmx8DbAFWWCM5qwNULd+dAHu9oYbcD5yt4VFhOlSAiAIX0ah0/kJwdIpJEID1QwgKfbdSwWMDbzkMjy0YMNqvQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@creo-team%2feslint-config@5.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":65672},"main":"dist/eslint.config.js","name":"@creo-team/eslint-config","type":"commonjs","types":"./dist/eslint.config.d.ts","author":{"name":"Colten Krauter","email":"coltenkrauter"},"engines":{"npm":">=10","node":"^22.22.2 || >=24.15.0"},"exports":{".":{"import":"./dist/index.mjs","default":"./dist/eslint.config.js","require":"./dist/eslint.config.js"},"./constants":{"default":"./dist/constants.js","require":"./dist/constants.js"}},"gitHead":"279bb7ecfef507820430052478a286f6a9c31167","license":"ISC","scripts":{"fix":"npm run lint -- --fix","lint":"npx eslint .","test":"vitest run && npm run lint","build":"tsc","typecheck":"tsc --noEmit","test:types":"tsc -p test/types","test:watch":"vitest","upgrade:all":"npx npm-check-updates --upgrade && npm install","prepublishOnly":"npm run build && npm run test:types"},"version":"5.0.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"b5312c0b-7629-444d-9de4-12aa11427154"}},"homepage":"https://github.com/creo-team/eslint-config","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"_npmVersion":"11.19.0","description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","directories":{},"maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"eslint":"^10.11.0","@eslint/js":"^10.0.1","typescript":"npm:@typescript/typescript6@^6.0.2","typescript-eslint":"^8.71.0","eslint-plugin-jsdoc":"^64.5.4","eslint-plugin-import-x":"^4.17.1","eslint-plugin-prettier":"^5.5.6","@stylistic/eslint-plugin":"^5.10.0","eslint-plugin-perfectionist":"^5.12.1","eslint-import-resolver-typescript":"^4.4.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.3.1","react":"^19.3.0","vitest":"^5.0.2","react-dom":"^19.3.0","@typescript/native":"npm:typescript@^7.0.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-config_5.0.0_1790684074582_0.10926037494905771"}}},"time":{"created":"2026-02-21T02:57:16.720Z","modified":"2026-09-29T12:14:35.037Z","2.0.0":"2026-02-21T02:57:16.957Z","2.3.9":"2026-02-21T19:19:14.161Z","2.4.0":"2026-02-21T19:27:30.249Z","2.4.1":"2026-02-21T19:33:24.616Z","2.4.2":"2026-02-21T20:39:41.599Z","2.4.3":"2026-02-21T21:06:49.724Z","2.5.0":"2026-02-22T01:12:56.141Z","2.5.3":"2026-02-22T02:48:48.337Z","2.5.4":"2026-02-22T02:52:44.915Z","2.5.5":"2026-02-22T02:55:41.109Z","2.5.6":"2026-02-22T18:29:10.162Z","4.0.0":"2026-03-23T18:20:13.989Z","5.0.0":"2026-09-29T12:14:34.669Z"},"bugs":{"url":"https://github.com/creo-team/eslint-config/issues"},"author":{"name":"Colten Krauter","email":"coltenkrauter"},"license":"ISC","homepage":"https://github.com/creo-team/eslint-config","keywords":["eslint","eslint-config","creo-team","flat-config","typescript","prettier","jsdoc","linting","lint"],"repository":{"url":"git+https://github.com/creo-team/eslint-config.git","type":"git"},"description":"ESLint flat config: TypeScript (strict), Prettier, JSDoc, complexity, no-magic-numbers. createConfig() for options.","maintainers":[{"name":"coltenkrauter","email":"coltenkrauter@gmail.com"}],"readme":"# @creo-team/eslint-config\n\nESLint flat config for TypeScript/React: strict type-checking, Prettier, JSDoc, complexity limits, async correctness, and no magic numbers. One style and one set of rules so code stays consistent and reviewable — and so tools like Cursor and Claude can fix and generate code that matches. Works with the [ESLint MCP server](https://eslint.org/docs/latest/use/mcp).\n\n[![npm version](https://img.shields.io/npm/v/@creo-team/eslint-config.svg)](https://www.npmjs.com/package/@creo-team/eslint-config)\n[![License](https://img.shields.io/github/license/creo-team/eslint-config)](./LICENSE)\n\n## Install\n\n```bash\nnpm install @creo-team/eslint-config --save-dev\n```\n\n**Node:** `^22.22.2 || >=24.15.0`. Prefer Node 24. **TypeScript 7** works alongside this config; see [TypeScript](#typescript).\n\n## Usage patterns\n\n### 1. Single repo (default)\n\nOne app or package, one `tsconfig`. Use the preset as-is.\n\n**ESM** (`eslint.config.mjs`):\n\n```javascript\nimport eslintConfig from '@creo-team/eslint-config'\nexport default eslintConfig\n```\n\n**CommonJS** (`eslint.config.js`):\n\n```javascript\nconst eslintConfig = require('@creo-team/eslint-config')\nmodule.exports = eslintConfig\n```\n\n### 2. Single repo with options\n\nCustomize ignores or which tsconfig to use:\n\n```javascript\nconst { createConfig } = require('@creo-team/eslint-config')\n\nmodule.exports = createConfig({\n  ignores: ['dist/**', 'build/**'],\n  tsconfig: 'tsconfig.app.json', // optional; default: getTsConfigFile()\n})\n```\n\nIn ESM (`eslint.config.mjs`), use `import { createConfig } from '@creo-team/eslint-config'`.\n\n### 3. Monorepo — one root config (recommended)\n\nMultiple packages (e.g. `app/`, `lib/`, `infra/`), each with its own `tsconfig.json`. Use **projectService** so type-aware rules resolve the nearest tsconfig per file. One `eslint.config.js` at the repo root; run `eslint .` from the root.\n\n```javascript\nconst { createConfig } = require('@creo-team/eslint-config')\n\nmodule.exports = createConfig({\n  ignores: [\n    '**/node_modules/**',\n    '**/dist/**',\n    '**/.next/**',\n    '**/build/**',\n    '**/out/**',\n    '**/cdk.out/**',\n    '**/*.config.js',\n    '**/*.config.mjs',\n    '**/*.config.ts',\n  ],\n  projectService: true,\n})\n```\n\n**Root `package.json`** (npm workspaces):\n\n```json\n{\n  \"workspaces\": [\"nextjs\", \"aws/infra\", \"shared\"],\n  \"scripts\": {\n    \"lint\": \"eslint .\",\n    \"fix\": \"eslint . --fix\"\n  },\n  \"devDependencies\": {\n    \"@creo-team/eslint-config\": \"^5.0.0\",\n    \"eslint\": \"^10.11.0\"\n  }\n}\n```\n\n**Requirements:** Each package with TypeScript has a `tsconfig.json` in that directory. No root tsconfig required. See [typescript-eslint project service](https://typescript-eslint.io/blog/project-service).\n\n**Example:** See `examples/monorepo/` in this repo. Run `cd examples/monorepo && npm install && npm run lint` to validate.\n\n### 4. Monorepo — per-workspace config\n\nLint is run **per workspace** (`npm run lint -w nextjs`). Each workspace has its own `eslint.config.js` and its own `tsconfig`. Use the default preset (no `projectService`); the config runs with that workspace as cwd, so `getTsConfigFile()` finds that package’s tsconfig.\n\n- **Root** `package.json`: `\"lint\": \"npm run lint -w nextjs\"` (or run each workspace).\n- **Workspace** (e.g. `nextjs/eslint.config.js`): use the preset as-is or with `createConfig({ ignores: ['.next/**', ...] })`.\n\nSingle-repo and per-workspace configs do **not** need `projectService`.\n\n### Scripts\n\nIn any setup, add to the package that runs ESLint:\n\n```json\n{\n  \"scripts\": {\n    \"lint\": \"eslint .\",\n    \"fix\": \"eslint . --fix\"\n  }\n}\n```\n\n### TypeScript\n\nType-aware rules need a `tsconfig.json` (or `tsconfig.eslint.json`) that includes your source. With **projectService** (monorepo), each file uses the nearest tsconfig. Without it, one tsconfig is used (see [typed linting](https://typescript-eslint.io/getting-started/typed-linting)).\n\n**TypeScript 7.** TypeScript 7 ships no JavaScript API yet, so typescript-eslint runs on the TypeScript 6 API ([typescript-eslint#10940](https://github.com/typescript-eslint/typescript-eslint/issues/10940)). This config depends on it, so a monorepo with TypeScript 7 only inside its workspaces lints as-is. If the package that runs ESLint installs `typescript@7` itself, lint crashes. Use the [official side-by-side setup](https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/#running-side-by-side-with-typescript-6.0) instead: `tsc` stays TypeScript 7 and `tsc6` is TypeScript 6.\n\n```json\n{\n  \"devDependencies\": {\n    \"@typescript/native\": \"npm:typescript@^7.0.2\",\n    \"typescript\": \"npm:@typescript/typescript6@^6.0.2\"\n  }\n}\n```\n\n### Extending\n\nSpread and override:\n\n```javascript\nconst { error, warn } = require('@creo-team/eslint-config/constants')\nconst base = require('@creo-team/eslint-config')\nmodule.exports = [...base, { rules: { 'no-console': warn } }]\n```\n\n### Customizing rules\n\nOverride any rule by spreading the base config and adding your own. Use constants from `@creo-team/eslint-config/constants` — no magic strings.\n\n**1. Naming convention — allow UPPER_SNAKE for constants**\n\nDefault: `camelCase` for variables, `PascalCase` for types and enum members. To allow `UPPER_SNAKE` for constants:\n\n```javascript\nconst { createConfig } = require('@creo-team/eslint-config')\nconst { error, FilesPattern, namingConvention } = require('@creo-team/eslint-config/constants')\n\nconst base = createConfig()\n\nmodule.exports = [\n  ...base,\n  {\n    files: FilesPattern.TsAndTsx,\n    rules: {\n      '@typescript-eslint/naming-convention': [error, ...namingConvention.withUpperCaseVariables],\n    },\n  },\n]\n```\n\n**2. File naming — enforce kebab-case for `.ts` / `.tsx` files**\n\nInstall [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn), then add:\n\n```javascript\nconst { createConfig } = require('@creo-team/eslint-config')\nconst { error, FilenameCase, FilesPattern } = require('@creo-team/eslint-config/constants')\nconst unicorn = require('eslint-plugin-unicorn')\n\nconst base = createConfig()\n\nmodule.exports = [\n  ...base,\n  {\n    files: FilesPattern.TsAndTsx,\n    plugins: { unicorn },\n    rules: {\n      'unicorn/filename-case': [error, { case: FilenameCase.KebabCase }],\n    },\n  },\n]\n```\n\n**3. Relax JSDoc or no-magic-numbers**\n\n```javascript\nconst { createConfig } = require('@creo-team/eslint-config')\nconst { off } = require('@creo-team/eslint-config/constants')\n\nmodule.exports = [\n  ...createConfig(),\n  {\n    rules: {\n      'jsdoc/require-jsdoc': off,\n      'no-magic-numbers': off,\n    },\n  },\n]\n```\n\n**4. Rule severity and naming constants**\n\nImport from `@creo-team/eslint-config/constants` for consistent, typo-free overrides:\n\n```javascript\nconst { createConfig } = require('@creo-team/eslint-config')\nconst { error, off, warn } = require('@creo-team/eslint-config/constants')\n\nmodule.exports = [\n  ...createConfig(),\n  {\n    rules: {\n      'no-console': warn,\n      'jsdoc/require-jsdoc': off,\n      'some-rule': [error, { option: true }],\n    },\n  },\n]\n```\n\n**5. Custom naming convention — build your own**\n\nUse `NamingFormat` and `NamingSelector` for full control:\n\n```javascript\nconst { createConfig } = require('@creo-team/eslint-config')\nconst {\n  error,\n  FilesPattern,\n  NamingFormat,\n  NamingSelector,\n} = require('@creo-team/eslint-config/constants')\n\nconst base = createConfig()\n\nmodule.exports = [\n  ...base,\n  {\n    files: FilesPattern.TsAndTsx,\n    rules: {\n      '@typescript-eslint/naming-convention': [\n        error,\n        { format: [NamingFormat.CamelCase], selector: NamingSelector.Default },\n        { format: [NamingFormat.PascalCase], selector: NamingSelector.TypeLike },\n        { format: [NamingFormat.PascalCase], selector: NamingSelector.EnumMember },\n        // ... add more as needed\n      ],\n    },\n  },\n]\n```\n\n**Examples:** See `examples/rule-overrides/` for working configs and tests.\n\n## Why this config\n\n**Predictable, reviewable code.** The rules are chosen so that style is decided once (Prettier + stylistic), intent is documented (JSDoc), and structure stays within bounds (complexity, line limits, no magic numbers). That reduces pointless formatting debates and makes diffs easier to read.\n\n**Key rules and what they give you:**\n\n| Rule / area | Benefit |\n|-------------|--------|\n| **Strict type-checked** (typescript-eslint) | Catches type errors and unsafe `any` before runtime. Fewer “works until it doesn’t” bugs |\n| **JSDoc** (params, returns, descriptions) | Public API is self-describing. IDE hints and “go to definition” work without opening the implementation |\n| **complexity (max 15)** | Branches and conditionals stay bounded. Functions stay testable and easier to reason about |\n| **max-lines-per-function (200)** | Long functions get split. Easier to name, test, and reuse |\n| **no-magic-numbers (warn)** | Literals become named constants. Changing a threshold or status code happens in one place |\n| **no-promise-executor-return** | Catches returning values from Promise executors — always a bug |\n| **no-await-in-loop (warn)** | Flags sequential awaits that should be `Promise.all()` |\n| **no-console (warn)** | Catches leftover debug logging, especially from AI-generated code |\n| **Import rules** (no-cycle, order, resolver) | No circular deps; consistent import order; TypeScript path resolution works |\n| **Prettier** | One formatter. No style churn in code review |\n\n**LLM- and assistant-friendly.** Cursor, Claude, and other tools behave better when the codebase is consistent and documented. This config enforces one style (so generated code matches), requires JSDoc on public surfaces (so the model has context), and keeps complexity and magic numbers in check (so suggestions stay in the same style and refactors are local). Use the [ESLint MCP server](https://eslint.org/docs/latest/use/mcp) so the assistant can run ESLint and fix violations in your editor.\n\n## Optional: lock in project structure\n\nLock in monorepo workspace dirs and app directory structure. Requires [eslint-plugin-project-structure](https://www.npmjs.com/package/eslint-plugin-project-structure):\n\n```bash\nnpm install eslint-plugin-project-structure --save-dev\n```\n\n### Monorepo — lock workspace dirs\n\nEnforce that only `nextjs`, `aws/infra`, and `shared` exist at the root:\n\n```javascript\nconst { createConfig } = require('@creo-team/eslint-config')\n\nmodule.exports = createConfig({\n  projectService: true,\n  structure: {\n    workspaces: ['nextjs', 'aws/infra', 'shared'],\n  },\n  ignores: ['**/node_modules/**', '**/dist/**', '**/.next/**', '**/cdk.out/**', '**/*.config.*'],\n})\n```\n\n### Monorepo + app structure\n\nLock workspaces and enforce app layout (e.g. `components`, `lib`, `utils`) inside the `nextjs` package:\n\n```javascript\nconst { createConfig } = require('@creo-team/eslint-config')\n\nmodule.exports = createConfig({\n  projectService: true,\n  structure: {\n    workspaces: ['nextjs', 'aws/infra', 'shared'],\n    appStructure: 'nextjs',  // preset: app/, components/, lib/, utils/, hooks/, styles/, public/\n    appPath: 'nextjs',       // which workspace gets app structure\n  },\n  ignores: ['**/node_modules/**', '**/dist/**', '**/.next/**', '**/cdk.out/**', '**/*.config.*'],\n})\n```\n\n### Single repo — app structure only\n\nEnforce structure for a single Next.js app:\n\n```javascript\nconst { createConfig } = require('@creo-team/eslint-config')\n\nmodule.exports = createConfig({\n  structure: {\n    appStructure: 'nextjs',  // app/, components/, lib/, utils/, hooks/, styles/, public/\n  },\n  ignores: ['.next/**', 'node_modules/**'],\n})\n```\n\n### App structure presets\n\n| Preset | Dirs |\n|--------|------|\n| `nextjs` | app, components, lib, utils, hooks, styles, public |\n| `nextjsAppRouter` | Same + settings |\n| `react` | src/{components, lib, utils, hooks, styles}, public |\n| `express` | src/{routes, controllers, services, utils, middleware} |\n| `src` | src/{components, lib, utils, settings} |\n\n### Custom dirs\n\nPass an array of dir names instead of a preset:\n\n```javascript\nstructure: {\n  appStructure: ['components', 'lib', 'utils', 'hooks', 'settings'],\n}\n```\n\n\n## Constants (`@creo-team/eslint-config/constants`)\n\nImport rule values and presets — no magic strings:\n\n| Export | Use |\n|--------|-----|\n| `error`, `warn`, `off` | Rule severity |\n| `NamingFormat` | `CamelCase`, `PascalCase`, `UpperCase` |\n| `NamingSelector` | `Default`, `Import`, `Variable`, `TypeLike`, `EnumMember` |\n| `namingConvention` | `default`, `withUpperCaseVariables` presets |\n| `FilesPattern` | `TsAndTsx` — `['**/*.ts', '**/*.tsx']` |\n| `FilenameCase` | `KebabCase`, `CamelCase`, `PascalCase` (unicorn) |\n| `AppStructurePreset` | `NextJs`, `Express`, `React`, etc. |\n\n## What’s included\n\n- **TypeScript ESLint** — recommended + strict type-checked, stylistic\n- **Prettier** — formatting (tabs, 120 print width, no semicolons)\n- **JSDoc** — require descriptions, params, returns on declarations/methods (not arrow functions)\n- **Import** — order, no cycles, resolver TypeScript\n- **Perfectionist** — alphabetical sort (imports sort disabled)\n- **Async correctness** — no-promise-executor-return (error), no-await-in-loop (warn)\n- **Quality** — complexity (max 15), max-lines, max-lines-per-function, no-magic-numbers (warn), no-console (warn)\n\n## Docs\n\n- [ESLINT-STANDARDS.md](./docs/ESLINT-STANDARDS.md) — architecture and rule philosophy\n- [ESLINT-AUDIT.md](./docs/ESLINT-AUDIT.md) — v3.0.0 audit findings and decisions\n- [AI-CODE-STANDARDS.md](./docs/AI-CODE-STANDARDS.md) — guidelines for AI assistants\n\n## Release flow\n\nTrunk-based. Bump `version` in `package.json`, push `main` → `github-release` creates tag + GitHub Release → `npm-publish` publishes to npm. OIDC Trusted Publishing, no tokens.\n\n## Examples\n\n- **Monorepo:** `examples/monorepo/` — root config with `projectService`, npm workspaces. See [examples/README.md](./examples/README.md).\n- **Structure:** `examples/structure/` — lock in workspaces and app dirs with `structure` option. See [examples/structure/README.md](./examples/structure/README.md).\n\n## Development\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md). Test locally with `npm link`:\n\n```bash\n# In eslint-config repo\nnpm link\n\n# In consuming project\nnpm link @creo-team/eslint-config\n```\n\n**Environment variables** (optional):\n\n- `ESLINT_DEBUG` — enable debug logging\n- `ESLINT_TSCONFIG` — override tsconfig file\n- `ESLINT_FALLBACK_TSCONFIG` — override fallback tsconfig\n- `ESLINT_START_DIR` — search start directory\n\n## License\n\nISC.\n","readmeFilename":"README.md"}