{"_id":"@channel.io/eslint-plugin-bezier","name":"@channel.io/eslint-plugin-bezier","dist-tags":{"next":"0.1.0-next.0","latest":"0.1.0-next.0"},"versions":{"0.1.0-next.0":{"name":"@channel.io/eslint-plugin-bezier","version":"0.1.0-next.0","description":"Opt-in ESLint rules for Bezier public API and composition contracts.","repository":{"type":"git","url":"git+https://github.com/channel-io/bezier-react.git","directory":"packages/eslint-plugin-bezier"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc --build --verbose","dev":"tsc --watch","lint":"TIMING=1 eslint --cache .","typecheck":"tsc --noEmit","test":"jest --coverage","clean":"rm -rf dist node_modules .turbo .eslintcache .jestcache coverage tsconfig.tsbuildinfo"},"engines":{"node":">=18.18.0"},"author":{"name":"Channel Corp."},"license":"Apache-2.0","peerDependencies":{"@channel.io/bezier-react":"^4.0.0-next.17","@typescript-eslint/parser":">=8.17.0 <9","eslint":">=8.57.0 <10"},"peerDependenciesMeta":{"@typescript-eslint/parser":{"optional":true}},"devDependencies":{"@types/eslint":"^8.56.12","@types/node":"^22.10.2","@typescript-eslint/parser":"8.17.0","eslint":"^8.57.1","eslint-config-bezier":"workspace:*","tsconfig":"workspace:*","typescript":"^5.7.2"},"keywords":["bezier","design-system","eslint"],"_id":"@channel.io/eslint-plugin-bezier@0.1.0-next.0","gitHead":"f9bcd0651d06bf13f04cfa8200f58c890ef46161","bugs":{"url":"https://github.com/channel-io/bezier-react/issues"},"homepage":"https://github.com/channel-io/bezier-react#readme","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-N5u874124BivdEOrfjg0Sn+Loa6cIITCBqQaVcOrXo/Ch2eoutkFsyIsZiqzaVYH77GQOBZ6+f1lp9lVJcHuDw==","shasum":"2b51c0c79c4e78c8517a5de242d53ecfb22e51b0","tarball":"https://registry.npmjs.org/@channel.io/eslint-plugin-bezier/-/eslint-plugin-bezier-0.1.0-next.0.tgz","fileCount":38,"unpackedSize":50497,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBQCbspFKD+wkHhKNqwZi/awV6QpQJ4DLjNarJCyvQLmAiBFB/sVb51iCIsvSMpbkNvCN4X6zsLAHcVEhSgFgJGjKA=="}]},"_npmUser":{"name":"zoyi","email":"eng@channel.io"},"directories":{},"maintainers":[{"name":"polarshin","email":"polar@channel.io"},{"name":"zoyi","email":"eng@channel.io"},{"name":"quino0627","email":"dongwook627@gmail.com"},{"name":"sungik.dev","email":"sungik.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-plugin-bezier_0.1.0-next.0_1787128467346_0.41647006982762735"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-19T08:34:27.204Z","0.1.0-next.0":"2026-08-19T08:34:27.491Z","modified":"2026-08-19T08:34:27.795Z"},"maintainers":[{"name":"polarshin","email":"polar@channel.io"},{"name":"zoyi","email":"eng@channel.io"},{"name":"quino0627","email":"dongwook627@gmail.com"},{"name":"sungik.dev","email":"sungik.dev@gmail.com"}],"description":"Opt-in ESLint rules for Bezier public API and composition contracts.","homepage":"https://github.com/channel-io/bezier-react#readme","keywords":["bezier","design-system","eslint"],"repository":{"type":"git","url":"git+https://github.com/channel-io/bezier-react.git","directory":"packages/eslint-plugin-bezier"},"author":{"name":"Channel Corp."},"bugs":{"url":"https://github.com/channel-io/bezier-react/issues"},"license":"Apache-2.0","readme":"# `@channel.io/eslint-plugin-bezier`\n\nOpt-in ESLint rules derived from the installed\n`@channel.io/bezier-react/manifest.json` public contract.\n\n```sh\nyarn add --dev --exact @channel.io/eslint-plugin-bezier@next\n```\n\nThe package exports rules only. It does not export a recommended preset or\nchoose severity for consumers.\n\n```js\nmodule.exports = {\n  plugins: ['@channel.io/bezier'],\n  rules: {\n    '@channel.io/bezier/no-private-entrypoint': 'error',\n    '@channel.io/bezier/no-orphan-compound-child': 'error',\n    '@channel.io/bezier/no-unsafe-prop-type-escape': 'error',\n    '@channel.io/bezier/no-internal-descendant-selector': 'error',\n    '@channel.io/bezier/review-unresolved-compound-owner': 'warn',\n    '@channel.io/bezier/prefer-layout-component': 'warn',\n  },\n}\n```\n\nFlat config can register the same plugin object explicitly. Product-specific\naliases, activation, severity, and CI warning policy remain consumer-owned.\n\n## Rules\n\n- `no-legacy-root-import`, `no-private-entrypoint`: public entrypoint boundary\n- `no-orphan-compound-child`: manifest-declared compound ownership\n- `review-unresolved-compound-owner`: advisory for dynamic wrapper ancestry\n- `no-unsafe-prop-type-escape`, `no-public-style-prop-bypass`: preserve public prop contracts\n- `no-native-control-bypass`: native control review\n- `prefer-layout-component`, `prefer-text-for-plain-text`: conservative migration candidates\n- `no-icon-wrapper-in-owner-slot`, `no-inline-svg`, `no-icon-like-glyph`, `no-manual-icon-styled-template`: installed icon ownership\n- `no-internal-descendant-selector`: private descendant ownership in styled Bezier components\n- `require-suppression-reason`: narrow, reasoned exceptions\n\nProduct aliases, raw color and typography policy, activation, severity, and CI\nwarning policy remain consumer-owned.\n\nCross-file TypeScript wrapper-origin tracing uses the consumer's installed\n`@typescript-eslint/parser`. When it is unavailable, unresolved wrappers stay\nadvisory instead of being guessed as blocking errors.\n","readmeFilename":"README.md","_rev":"1-c827dac9b6b2fd9bcec4658a09dd9e0f"}