{"_id":"eslint-plugin-refined","_rev":"5-d0a9b00ada86e36f1dce84ffd6348699","name":"eslint-plugin-refined","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.1":{"name":"eslint-plugin-refined","version":"0.0.1","keywords":["eslint","eslintplugin","react-native","styles","lint"],"license":"MIT","_id":"eslint-plugin-refined@0.0.1","maintainers":[{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"}],"dist":{"shasum":"02cb199b653464fee7bfe7edb685f98ac59b0e0f","tarball":"https://registry.npmjs.org/eslint-plugin-refined/-/eslint-plugin-refined-0.0.1.tgz","fileCount":18,"integrity":"sha512-I9TLbyIfgVzSFOTps3JpGPxjrJQ1poF8sQQcw0XS8ipv1zc00lGucF82Mz2bOfYHNEbRrHNzljdbf4CxfCIiLA==","signatures":[{"sig":"MEUCIFdnfAG4FtXclUruEPuVe0/DRfvga1ZqnuuYei/NY1LjAiEAlAB0wK9yn7RhhoqBcgRkyW9u2vAwbRwsnU1E00e2UIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21391},"main":"dist/index.js","type":"module","module":"dist/index.js","shasum":"02cb199b653464fee7bfe7edb685f98ac59b0e0f","scripts":{"test":"bun test","build":"tsc","release":"./scripts/release.sh","prepublishOnly":"bun test && bun run build"},"_npmUser":{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"},"_integrity":"sha512-I9TLbyIfgVzSFOTps3JpGPxjrJQ1poF8sQQcw0XS8ipv1zc00lGucF82Mz2bOfYHNEbRrHNzljdbf4CxfCIiLA==","_npmVersion":"10.8.3","description":"ESLint plugin for refined React Native styles","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@types/eslint":"^9.0.0","@typescript-eslint/utils":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/rule-tester":"^8.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-refined_0.0.1_1760467261059_0.40193744587697666","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"eslint-plugin-refined","version":"0.0.2","keywords":["eslint","eslintplugin","react-native","styles","lint"],"license":"MIT","_id":"eslint-plugin-refined@0.0.2","maintainers":[{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"}],"dist":{"shasum":"26c970175e2f818621f905e1041ca19781352c0a","tarball":"https://registry.npmjs.org/eslint-plugin-refined/-/eslint-plugin-refined-0.0.2.tgz","fileCount":18,"integrity":"sha512-QciV/NZB57Tr460/ZLAhZAKqQ+XJ9JKHbI3KEjS2rbQvI8Yr8/VsCRvPsnLF+uy4oDQ82yzGfdQ2oMW2Xx3oxw==","signatures":[{"sig":"MEYCIQC8mcvaD4vsu2vDohm4c+/vvWoKnp5WKZHfYs/PgD7hSAIhAP2wsL6M7pbvYlQayvxw84hUROfKW6prtkkl3PqoDfkJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22329},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","module":"dist/index.js","gitHead":"3a18a802df5e53024f16283f4e4201e111462144","scripts":{"test":"bun test","build":"tsc","release":"./scripts/release.sh","prepublishOnly":"bun test && bun run build"},"_npmUser":{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"},"_npmVersion":"11.6.0","description":"ESLint plugin for refined React Native styles","directories":{},"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@types/eslint":"^9.0.0","@typescript-eslint/utils":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/rule-tester":"^8.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-refined_0.0.2_1760470057392_0.7459365450539162","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"eslint-plugin-refined","version":"0.0.3","keywords":["eslint","eslintplugin","react-native","styles","lint"],"license":"MIT","_id":"eslint-plugin-refined@0.0.3","maintainers":[{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"}],"dist":{"shasum":"1be4d63b886bb9c8cf977dd21b2972f551903e43","tarball":"https://registry.npmjs.org/eslint-plugin-refined/-/eslint-plugin-refined-0.0.3.tgz","fileCount":18,"integrity":"sha512-SwuUcXdWw/Ifd6dj+FuY83Zbm+EGcuKKYbGQqCq9YTJPF8Bb7NEc5jIJtcO4bMzaVud4C84qMCMDvZOk59GxnQ==","signatures":[{"sig":"MEQCHymska0Pekv5oF2kyB5sQu51IZ8Z9Y20dT37pS+ygowCIQCpxAr9mu+WEN4wPGYwF8fIMI5V2meNCV09Kdpo9TWI3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21968},"main":"dist/index.js","shasum":"1be4d63b886bb9c8cf977dd21b2972f551903e43","scripts":{"test":"bunx vitest run","build":"tsc","release":"./scripts/release.sh","prepublishOnly":"bunx vitest run && bun run build"},"_npmUser":{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"},"_integrity":"sha512-SwuUcXdWw/Ifd6dj+FuY83Zbm+EGcuKKYbGQqCq9YTJPF8Bb7NEc5jIJtcO4bMzaVud4C84qMCMDvZOk59GxnQ==","_npmVersion":"10.8.3","description":"ESLint plugin for refined React Native styles","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/bun":"latest","@vitest/ui":"^3.2.4","@types/eslint":"^9.0.0","@typescript-eslint/utils":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/rule-tester":"^8.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-refined_0.0.3_1760470904566_0.35670338999209883","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"eslint-plugin-refined","version":"0.0.4","keywords":["eslint","eslintplugin","react-native","styles","lint"],"license":"MIT","_id":"eslint-plugin-refined@0.0.4","maintainers":[{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"}],"dist":{"shasum":"095e4e2d68b3a01d4e3f7b0e9386dddcaa0c81b9","tarball":"https://registry.npmjs.org/eslint-plugin-refined/-/eslint-plugin-refined-0.0.4.tgz","fileCount":34,"integrity":"sha512-5/560Vr9oVPuaJkgUw8QF7LT0ZfwlQ6hw3mJwlYPtPi2pcz33bcDenqgV9Rqo+YctKtq/DGahKovjBGhoPAdqg==","signatures":[{"sig":"MEQCICaFroN6KnrMxdjgHt+pnwURoZzW2aN5qJxkSxrwF0LMAiAiyCtYVf6YlFB/fUqsBPS4QfgbYD7vUlOZGX2L93pL7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99781},"main":"dist/index.js","shasum":"095e4e2d68b3a01d4e3f7b0e9386dddcaa0c81b9","scripts":{"test":"bunx vitest run","build":"tsc","release":"./scripts/release.sh","prepublishOnly":"bunx vitest run && bun run build"},"_npmUser":{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"},"_integrity":"sha512-5/560Vr9oVPuaJkgUw8QF7LT0ZfwlQ6hw3mJwlYPtPi2pcz33bcDenqgV9Rqo+YctKtq/DGahKovjBGhoPAdqg==","_npmVersion":"10.8.3","description":"ESLint plugin for refined React Native styles","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","@types/bun":"latest","@vitest/ui":"^3.2.4","@types/eslint":"^9.0.0","@typescript-eslint/utils":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/rule-tester":"^8.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-refined_0.0.4_1760794851282_0.5820603608525525","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"eslint-plugin-refined","version":"0.0.5","description":"ESLint plugin for refined React Native styles","main":"dist/index.js","scripts":{"build":"tsc","test":"bunx vitest run","prepublishOnly":"bunx vitest run && bun run build","release":"./scripts/release.sh"},"keywords":["eslint","eslintplugin","react-native","styles","lint"],"devDependencies":{"@types/bun":"latest","@types/eslint":"^9.0.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/rule-tester":"^8.0.0","@typescript-eslint/utils":"^8.0.0","@vitest/ui":"^3.2.4","vitest":"^3.2.4"},"peerDependencies":{"eslint":">=8.0.0"},"license":"MIT","_id":"eslint-plugin-refined@0.0.5","gitHead":"6a7e426155a613f19e03c42ceaabdfd13cfb3d26","types":"./dist/index.d.ts","_nodeVersion":"24.9.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-VntTHVI+cCpFrtXbfOrsw0QE6ahY5tUPNxGfRwPcr5N+wi9NE12b+ekAITQIRmmZjO4QnXbRV1ewyHa1dUzAMA==","shasum":"b13a2520045851bd57fa94066c2fdc1e435b9536","tarball":"https://registry.npmjs.org/eslint-plugin-refined/-/eslint-plugin-refined-0.0.5.tgz","fileCount":34,"unpackedSize":96814,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAo4cBdL5qKUJ8NVRslylj3e/tIjyvWdnKOf71tgZ+/mAiB5vqjiUTGhl5QnaWCDjBEpmkyRxvc0aRV5JdVIjOeOGw=="}]},"_npmUser":{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"},"directories":{},"maintainers":[{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-plugin-refined_0.0.5_1765030847131_0.17010996603917272"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-14T18:41:01.058Z","modified":"2025-12-06T14:20:47.513Z","0.0.1":"2025-10-14T18:41:01.273Z","0.0.2":"2025-10-14T19:27:37.584Z","0.0.3":"2025-10-14T19:41:44.764Z","0.0.4":"2025-10-18T13:40:51.473Z","0.0.5":"2025-12-06T14:20:47.303Z"},"license":"MIT","keywords":["eslint","eslintplugin","react-native","styles","lint"],"description":"ESLint plugin for refined React Native styles","maintainers":[{"name":"enzomanuelmangano","email":"enzomanuelmangano@gmail.com"}],"readme":"# eslint-plugin-refined\n\nAn ESLint plugin for refined React Native styles.\n\n## Features\n\nThis plugin provides rules to help you write better React Native styles.\n\n### Available Configurations\n\n- **base**: Core style rules (border-radius, hairline-width, box-shadow, hitslop)\n- **recommended**: All rules with warnings (includes spring-config, avoid-touchable-opacity)\n- **strict**: All rules with errors\n\n### Rules\n\n- **[border-radius-with-curve](./docs/rules/border-radius-with-curve.md)**: Enforces using `borderCurve: 'continuous'` when borderRadius properties are used\n- **[prefer-hairline-width](./docs/rules/prefer-hairline-width.md)**: Suggests using `StyleSheet.hairlineWidth` for border widths less than a threshold (configurable)\n- **[prefer-box-shadow](./docs/rules/prefer-box-shadow.md)**: Suggests using `boxShadow` instead of individual shadow properties. Triggers on any shadow property, even without `shadowColor`, and uses `#000` as default\n- **[require-hitslop-small-touchables](./docs/rules/require-hitslop-small-touchables.md)**: Requires hitSlop on small touchable elements for better accessibility\n- **[spring-config-consistency](./docs/rules/spring-config-consistency.md)**: Enforces consistent spring physics parameters in `withSpring` calls\n- **[avoid-touchable-opacity](./docs/rules/avoid-touchable-opacity.md)**: Discourages usage of `TouchableOpacity` component\n\n## Installation\n\n```bash\nnpm install --save-dev eslint-plugin-refined\n# or\nyarn add -D eslint-plugin-refined\n# or\nbun add -D eslint-plugin-refined\n```\n\n## Usage\n\n### Flat Config (ESLint 9+)\n\n```js\nimport refined from 'eslint-plugin-refined';\n\nexport default [\n  {\n    plugins: {\n      refined,\n    },\n    rules: {\n      ...refined.configs.recommended.rules,\n    },\n  },\n];\n```\n\n### Using Preset Configs\n\n```js\nimport refined from 'eslint-plugin-refined';\n\nexport default [\n  {\n    plugins: {\n      refined,\n    },\n    // Use recommended config (warnings)\n    rules: refined.configs.recommended.rules,\n\n    // Or use strict config (errors)\n    // rules: refined.configs.strict.rules,\n  },\n];\n```\n\n## Configuration\n\n### Base Config\n\nCore style rules only (excludes `spring-config-consistency` and `avoid-touchable-opacity`):\n\n```js\nexport default [\n  {\n    plugins: { refined },\n    rules: refined.configs.base.rules,\n  },\n];\n```\n\n### Recommended Config (Default)\n\nAll rules enabled with warning level:\n\n```js\nexport default [\n  {\n    plugins: { refined },\n    rules: refined.configs.recommended.rules,\n  },\n];\n```\n\n### Strict Config\n\nAll rules enabled with error level:\n\n```js\nexport default [\n  {\n    plugins: { refined },\n    rules: refined.configs.strict.rules,\n  },\n];\n```\n\n### Custom Configuration\n\nYou can customize rule options or mix configs:\n\n```js\nexport default [\n  {\n    plugins: { refined },\n    rules: {\n      // Start with base config\n      ...refined.configs.base.rules,\n\n      // Customize rule options\n      'refined/prefer-hairline-width': ['warn', { threshold: 0.5 }],\n      'refined/require-hitslop-small-touchables': ['warn', { minSize: 44 }],\n      'refined/border-radius-with-curve': 'warn',\n      'refined/prefer-box-shadow': 'warn',\n      'refined/spring-config-consistency': [\n        'warn',\n        {\n          reanimatedVersion: 'v4',\n        },\n      ],\n      'refined/avoid-touchable-opacity': 'error',\n    },\n  },\n];\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}