{"_id":"@bubblydoo/eslint-plugin-uxp","_rev":"5-f6831464f0b4414b419af754ea7254ca","name":"@bubblydoo/eslint-plugin-uxp","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.2":{"name":"@bubblydoo/eslint-plugin-uxp","version":"0.0.2","author":{"name":"Hans Otto Wirtz","email":"hansottowirtz@gmail.com"},"license":"MIT","_id":"@bubblydoo/eslint-plugin-uxp@0.0.2","maintainers":[{"name":"hansottowirtz","email":"hansottowirtz@gmail.com"},{"name":"krystianpiatkowski","email":"krystianpiatkowski@bubbly-doo.com"},{"name":"jeremy_navarro","email":"jeremynavarro@bubbly-doo.com"}],"homepage":"https://github.com/bubblydoo/uxp-toolkit/tree/main/packages/eslint-plugin-uxp","bugs":{"url":"https://github.com/bubblydoo/uxp-toolkit/issues"},"dist":{"shasum":"6cf279ec5e52f443302e9cc4b2301f982e921382","tarball":"https://registry.npmjs.org/@bubblydoo/eslint-plugin-uxp/-/eslint-plugin-uxp-0.0.2.tgz","fileCount":4,"integrity":"sha512-6kPBBj+LS0y7xro0p6ktcaAqafZKCJx7GpujCMFqMAalJTdCREInkd/WkRUGxC9JOKKwb/NwCA70WOdwh8qfdQ==","signatures":[{"sig":"MEUCIQC3nNRYCNmk1MRnhOoKvF3++RaJrSusWE7r6undM7ks4AIgMHkn7wBgYJU8UVS1XEDoZXTeKghiOfqXmHlts+iJAIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3729},"main":"./dist/index.js","type":"module","_from":"file:bubblydoo-eslint-plugin-uxp-0.0.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsup src/index.ts --format esm --dts --outDir dist --target node18","typecheck":"tsc --noEmit"},"_npmUser":{"name":"hansottowirtz","email":"hansottowirtz@gmail.com"},"_resolved":"/tmp/e11ad5f8aa643db8d8f6b9f84fa44c39/bubblydoo-eslint-plugin-uxp-0.0.2.tgz","_integrity":"sha512-6kPBBj+LS0y7xro0p6ktcaAqafZKCJx7GpujCMFqMAalJTdCREInkd/WkRUGxC9JOKKwb/NwCA70WOdwh8qfdQ==","repository":{"url":"git+https://github.com/bubblydoo/uxp-toolkit.git","type":"git"},"_npmVersion":"10.8.2","description":"Custom ESLint plugin for UXP development with Photoshop.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","@types/eslint":"^9.6.1","@bubblydoo/tsconfig":"0.0.3"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-uxp_0.0.2_1769853454458_0.29156635846145473","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@bubblydoo/eslint-plugin-uxp","version":"0.0.3","author":{"name":"Hans Otto Wirtz","email":"hansottowirtz@gmail.com"},"license":"MIT","_id":"@bubblydoo/eslint-plugin-uxp@0.0.3","maintainers":[{"name":"hansottowirtz","email":"hansottowirtz@gmail.com"},{"name":"krystianpiatkowski","email":"krystianpiatkowski@bubbly-doo.com"},{"name":"jeremy_navarro","email":"jeremynavarro@bubbly-doo.com"}],"homepage":"https://github.com/bubblydoo/uxp-toolkit/tree/main/packages/eslint-plugin-uxp","bugs":{"url":"https://github.com/bubblydoo/uxp-toolkit/issues"},"dist":{"shasum":"ee50dff1c8d1417df6726cbdc8f442853f526063","tarball":"https://registry.npmjs.org/@bubblydoo/eslint-plugin-uxp/-/eslint-plugin-uxp-0.0.3.tgz","fileCount":4,"integrity":"sha512-kt8FyVkUgAnJT4nIklzW7WAS9VadADixei6KwfPwVX91xmFMFeRMkRjffihuglSJF/LhwdM0fptBkHmwYRoBIA==","signatures":[{"sig":"MEQCIGsHYugtbu/84j+uJxGA7Kae0FDLtQON3ug+Z+rnd6lPAiA34RzPMUrIqrPSXLL0Aum4ofuqUKRLiDb5zCONPYTWQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3774},"main":"./dist/index.js","type":"module","_from":"file:bubblydoo-eslint-plugin-uxp-0.0.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsup src/index.ts --format esm --dts --outDir dist --target node18","docs-json":"typedoc --json docs.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"hansottowirtz","email":"hansottowirtz@gmail.com"},"_resolved":"/tmp/8473516940d7eba29f138c1dd80284d2/bubblydoo-eslint-plugin-uxp-0.0.3.tgz","_integrity":"sha512-kt8FyVkUgAnJT4nIklzW7WAS9VadADixei6KwfPwVX91xmFMFeRMkRjffihuglSJF/LhwdM0fptBkHmwYRoBIA==","repository":{"url":"git+https://github.com/bubblydoo/uxp-toolkit.git","type":"git"},"_npmVersion":"10.8.2","description":"Custom ESLint plugin for UXP development with Photoshop.","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","@types/eslint":"^9.6.1","@bubblydoo/tsconfig":"0.0.3"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-uxp_0.0.3_1769898008063_0.9356938969875765","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@bubblydoo/eslint-plugin-uxp","version":"0.0.4","author":{"name":"Hans Otto Wirtz","email":"hansottowirtz@gmail.com"},"license":"MIT","_id":"@bubblydoo/eslint-plugin-uxp@0.0.4","maintainers":[{"name":"hansottowirtz","email":"hansottowirtz@gmail.com"},{"name":"krystianpiatkowski","email":"krystianpiatkowski@bubbly-doo.com"},{"name":"jeremy_navarro","email":"jeremynavarro@bubbly-doo.com"}],"homepage":"https://github.com/bubblydoo/uxp-toolkit/tree/main/packages/eslint-plugin-uxp","bugs":{"url":"https://github.com/bubblydoo/uxp-toolkit/issues"},"dist":{"shasum":"5225eef698080ee8005d14ad76d88700debb17cc","tarball":"https://registry.npmjs.org/@bubblydoo/eslint-plugin-uxp/-/eslint-plugin-uxp-0.0.4.tgz","fileCount":4,"integrity":"sha512-CgxqOULQs2MCZaNk4Q2ebNUhAXc09BRihqXN1BmpRFGPQIYwtkabp7mRl0ZUAEdQTnDMncnSjLpPoWkESbd5Og==","signatures":[{"sig":"MEYCIQDQH50IgL2IfSU7S3TG4fqenO72qfDxaQ0Tl03OrG+sxgIhAPrca/91EyMIr5zmWUtdA7qhgp7GVzpR4DGWyvUIyWAM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10694},"main":"./dist/index.js","type":"module","_from":"file:bubblydoo-eslint-plugin-uxp-0.0.4.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsup src/index.ts --format esm --dts --outDir dist --target node18","docs-json":"typedoc --json docs.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"hansottowirtz","email":"hansottowirtz@gmail.com"},"_resolved":"/tmp/5ffb8d10b50116a3749e0e6e9f6d71c2/bubblydoo-eslint-plugin-uxp-0.0.4.tgz","_integrity":"sha512-CgxqOULQs2MCZaNk4Q2ebNUhAXc09BRihqXN1BmpRFGPQIYwtkabp7mRl0ZUAEdQTnDMncnSjLpPoWkESbd5Og==","repository":{"url":"git+https://github.com/bubblydoo/uxp-toolkit.git","type":"git"},"_npmVersion":"10.8.2","description":"![NPM Version](https://img.shields.io/npm/v/@bubblydoo/eslint-plugin-uxp)","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","@types/eslint":"^9.6.1","@bubblydoo/tsconfig":"0.0.3"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-uxp_0.0.4_1771337667310_0.3371912529374439","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@bubblydoo/eslint-plugin-uxp","type":"module","version":"0.0.5","author":{"name":"Hans Otto Wirtz","email":"hansottowirtz@gmail.com"},"license":"MIT","homepage":"https://github.com/bubblydoo/uxp-toolkit/tree/main/packages/eslint-plugin-uxp","repository":{"type":"git","url":"git+https://github.com/bubblydoo/uxp-toolkit.git"},"bugs":{"url":"https://github.com/bubblydoo/uxp-toolkit/issues"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"main":"./dist/index.js","types":"./dist/index.d.ts","publishConfig":{"access":"public"},"peerDependencies":{"eslint":">=8.0.0"},"devDependencies":{"@types/eslint":"^9.6.1","tsup":"^8.5.1","typescript":"^5.9.3","@bubblydoo/tsconfig":"0.0.3"},"scripts":{"build":"tsup src/index.ts --format esm --dts --outDir dist --target node18","typecheck":"tsc --noEmit","docs-json":"typedoc --json docs.json"},"_id":"@bubblydoo/eslint-plugin-uxp@0.0.5","description":"[![NPM Version](https://img.shields.io/npm/v/@bubblydoo/eslint-plugin-uxp)](https://www.npmjs.com/package/@bubblydoo/eslint-plugin-uxp)","_integrity":"sha512-tW0vqF6fbincd+X3K6Pq8dnoi5hcewo2w7JZRMCclZPssmES7kOoyI2m5XJvnGHM617Z+U1L7ePS/30qKB8d4w==","_resolved":"/tmp/5f60ee2a32e3b1918dd01b1bf602c70c/bubblydoo-eslint-plugin-uxp-0.0.5.tgz","_from":"file:bubblydoo-eslint-plugin-uxp-0.0.5.tgz","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-tW0vqF6fbincd+X3K6Pq8dnoi5hcewo2w7JZRMCclZPssmES7kOoyI2m5XJvnGHM617Z+U1L7ePS/30qKB8d4w==","shasum":"582bc7169c66edaf8b78f5edcd78270b1e174ae6","tarball":"https://registry.npmjs.org/@bubblydoo/eslint-plugin-uxp/-/eslint-plugin-uxp-0.0.5.tgz","fileCount":4,"unpackedSize":10834,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFUGeDTvCzuxUHmq7Ka9cogfXYH9H9Mo3hm0gW+iO2Z8AiBmSK2VBemI2TekEkCft8uUQQxp9ux5tI4HUPy4S+mXLQ=="}]},"_npmUser":{"name":"hansottowirtz","email":"hansottowirtz@gmail.com"},"directories":{},"maintainers":[{"name":"hansottowirtz","email":"hansottowirtz@gmail.com"},{"name":"krystianpiatkowski","email":"krystianpiatkowski@bubbly-doo.com"},{"name":"leo-bubblydoo","email":"leonardoescuer@bubbly-doo.com"},{"name":"jeremy_navarro","email":"jeremynavarro@bubbly-doo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-plugin-uxp_0.0.5_1779278981737_0.10557321424365895"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-31T09:57:34.364Z","modified":"2026-05-20T12:09:42.054Z","0.0.2":"2026-01-31T09:57:34.636Z","0.0.3":"2026-01-31T22:20:08.209Z","0.0.4":"2026-02-17T14:14:27.506Z","0.0.5":"2026-05-20T12:09:41.892Z"},"bugs":{"url":"https://github.com/bubblydoo/uxp-toolkit/issues"},"author":{"name":"Hans Otto Wirtz","email":"hansottowirtz@gmail.com"},"license":"MIT","homepage":"https://github.com/bubblydoo/uxp-toolkit/tree/main/packages/eslint-plugin-uxp","repository":{"type":"git","url":"git+https://github.com/bubblydoo/uxp-toolkit.git"},"description":"[![NPM Version](https://img.shields.io/npm/v/@bubblydoo/eslint-plugin-uxp)](https://www.npmjs.com/package/@bubblydoo/eslint-plugin-uxp)","maintainers":[{"name":"hansottowirtz","email":"hansottowirtz@gmail.com"},{"name":"krystianpiatkowski","email":"krystianpiatkowski@bubbly-doo.com"},{"name":"leo-bubblydoo","email":"leonardoescuer@bubbly-doo.com"},{"name":"jeremy_navarro","email":"jeremynavarro@bubbly-doo.com"}],"readme":"# @bubblydoo/eslint-plugin-uxp\n\n[![NPM Version](https://img.shields.io/npm/v/@bubblydoo/eslint-plugin-uxp)](https://www.npmjs.com/package/@bubblydoo/eslint-plugin-uxp)\n\nCustom ESLint plugin for UXP development with Photoshop.\n\n## Installation\n\n```bash\npnpm add -D @bubblydoo/eslint-plugin-uxp\n```\n\n## Usage\n\n### ESLint Flat Config (ESLint 9+)\n\n```js\nimport uxpPlugin from '@bubblydoo/eslint-plugin-uxp';\n\nexport default [\n  {\n    plugins: {\n      uxp: uxpPlugin,\n    },\n    rules: {\n      'uxp/no-unsupported-css': 'error',\n      'uxp/no-unsupported-css-tailwind': 'error',\n      'uxp/prefer-adobe-protocol': 'error',\n    },\n  },\n  // Or use the recommended config\n  uxpPlugin.configs.recommended,\n];\n```\n\n### Legacy ESLint Config\n\n```json\n{\n  \"plugins\": [\"@bubblydoo/uxp\"],\n  \"rules\": {\n    \"@bubblydoo/uxp/no-unsupported-css\": \"error\",\n    \"@bubblydoo/uxp/no-unsupported-css-tailwind\": \"error\",\n    \"@bubblydoo/uxp/prefer-adobe-protocol\": \"error\"\n  }\n}\n```\n\n## Rules\n\n### `prefer-adobe-protocol`\n\nRequires `adobe:` protocol for Adobe UXP native module specifiers.\n\n**❌ Incorrect:**\n\n```js\nimport { app } from 'uxp';\n```\n\n```js\nconst { app } = require('photoshop');\n```\n\n**✅ Correct:**\n\n```js\nimport { app } from 'adobe:uxp';\n```\n\n```js\nconst { app } = require('adobe:photoshop');\n```\n\n### `no-unsupported-css`\n\nDisallows CSS `gap` usage, because it is unsupported in UXP.\n\n**❌ Incorrect:**\n\n```js\nconst style = { gap: 8 };\n```\n\n```js\nconst css = `\n  .row {\n    gap: 1rem;\n  }\n`;\n```\n\n### `no-unsupported-css-tailwind`\n\nDisallows Tailwind `gap-*` utilities, because they map to CSS `gap`.\n\n**❌ Incorrect:**\n\n```jsx\n<div className=\"flex gap-2\" />\n```\n\n```jsx\n<div className={`grid gap-x-4`} />\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}