{"_id":"@amamo/oxlint-config","_rev":"5-bbd7fc912887083f6facb3ce90d559f7","name":"@amamo/oxlint-config","dist-tags":{"alpha":"1.0.0-alpha.0","latest":"1.1.1"},"versions":{"1.0.0-alpha.0":{"name":"@amamo/oxlint-config","version":"1.0.0-alpha.0","author":{"name":"白熱","email":"sonne@asaki.me"},"license":"MIT","_id":"@amamo/oxlint-config@1.0.0-alpha.0","maintainers":[{"name":"jikkai","email":"sonne@asaki.me"}],"homepage":"https://jikkai.github.io/oxlint-config/","bin":{"amamo-oxlint-config":"dist/cli.js"},"dist":{"shasum":"e97999223da934278ba9adbc15488367438bc8f4","tarball":"https://registry.npmjs.org/@amamo/oxlint-config/-/oxlint-config-1.0.0-alpha.0.tgz","fileCount":32,"integrity":"sha512-ArASrWupStl+u8SRRR276aGKBR95n0JGWsThGSMqZ8uBy+uqZ9f5L+Zdi00sUvVr0mDmtdMYnFqlxkpCNxnEUg==","signatures":[{"sig":"MEQCIDU6caS8w9fxokX1OwWIsN/AiEb3a/lox8oW26ZM/rc3AiASXw5YWNzXNrWVdz1oXce9sK+fbU4q+ChDW6hOCUZiUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190987},"type":"module","engines":{"node":">=22.18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"da5823e59c75ce5d38c141e1230b4643a9750ac5","scripts":{"test":"pnpm build && vitest run --dir src","build":"tsc -p tsconfig.build.json","check":"pnpm check:static && pnpm test","prepare":"simple-git-hooks","release":"verso","docs:dev":"pnpm build && pnpm --filter @amamo/oxlint-config-docs dev","docs:build":"pnpm build && pnpm --filter @amamo/oxlint-config-docs build","check:static":"oxfmt --check . && oxlint . && tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jikkai","email":"sonne@asaki.me"},"_npmVersion":"11.16.0","description":"Opinionated Oxlint presets and an Oxc initializer.","directories":{},"lint-staged":{"*":"oxfmt --check --no-error-on-unmatched-pattern","*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}":"oxlint --no-error-on-unmatched-pattern"},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"jsonc-parser":"^3.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.18.0","devDependencies":{"oxfmt":"^0.61.0","oxlint":"^1.76.0","semver":"^7.8.5","vitest":"^4.1.10","storybook":"^10.5.5","typescript":"^7.0.2","@types/node":"^26.1.2","lint-staged":"^17.3.0","@amamo/verso":"1.0.0-rc.3","oxlint-tsgolint":"^7.0.2001","@playwright/test":"^1.62.1","simple-git-hooks":"^2.13.1","eslint-plugin-mocha":"^12.0.1","@testing-library/dom":"^10.4.1","eslint-plugin-regexp":"^3.1.1","eslint-plugin-cypress":"^6.4.3","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-storybook":"^10.5.5","eslint-plugin-playwright":"^2.11.0","eslint-plugin-testing-library":"^7.16.2"},"peerDependencies":{"oxfmt":"^0.61.0","oxlint":"^1.76.0","oxlint-tsgolint":"^7.0.2001","eslint-plugin-mocha":"^12.0.1","eslint-plugin-regexp":"^3.1.1","eslint-plugin-cypress":"^6.4.3","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-storybook":"^10.5.5","eslint-plugin-playwright":"^2.11.0","eslint-plugin-testing-library":"^7.16.2"},"simple-git-hooks":{"pre-commit":"pnpm exec lint-staged"},"peerDependenciesMeta":{"oxlint-tsgolint":{"optional":true},"eslint-plugin-mocha":{"optional":true},"eslint-plugin-regexp":{"optional":true},"eslint-plugin-cypress":{"optional":true},"eslint-plugin-sonarjs":{"optional":true},"eslint-plugin-storybook":{"optional":true},"eslint-plugin-playwright":{"optional":true},"eslint-plugin-testing-library":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oxlint-config_1.0.0-alpha.0_1785504378501_0.8935160378932665","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@amamo/oxlint-config","version":"1.0.0","author":{"name":"白熱","email":"sonne@asaki.me"},"license":"MIT","_id":"@amamo/oxlint-config@1.0.0","maintainers":[{"name":"jikkai","email":"sonne@asaki.me"}],"homepage":"https://jikkai.github.io/oxlint-config/","bin":{"amamo-oxlint-config":"dist/cli.js"},"dist":{"shasum":"0bccf9d6c90a05bd4d85453a975a6234cea04e88","tarball":"https://registry.npmjs.org/@amamo/oxlint-config/-/oxlint-config-1.0.0.tgz","fileCount":32,"integrity":"sha512-EOCQwlK08Qrg16okr5za6tmDbnPU1HbhBtwbzZO/0OMlME2SuEwzqa7xurgTWn4gypefL4CkUqRJUXm6MNNFlw==","signatures":[{"sig":"MEYCIQC3NYI3xg7tQEexGwKNxhOGOYnLQbR71zniNVNEnSbJDQIhAPi4a4NuiIyt4bAC2qDkvGI33DgByQVJdFQoBpDTaWfU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202647},"type":"module","engines":{"node":">=22.18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"a536a709126ff4ea3213b48feb3c872ad473e559","scripts":{"test":"pnpm build && vitest run --dir src --testTimeout 15000","build":"tsc -p tsconfig.build.json","check":"pnpm check:static && pnpm test","prepare":"simple-git-hooks","release":"verso","docs:dev":"pnpm build && pnpm --filter @amamo/oxlint-config-docs dev","docs:build":"pnpm build && pnpm --filter @amamo/oxlint-config-docs build","check:static":"oxfmt --check . && oxlint . && tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jikkai","email":"sonne@asaki.me"},"_npmVersion":"11.16.0","description":"Opinionated, composable Oxlint presets.","directories":{},"lint-staged":{"*":"oxfmt --check --no-error-on-unmatched-pattern","*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}":"oxlint --no-error-on-unmatched-pattern"},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"jsonc-parser":"^3.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.18.0","devDependencies":{"oxfmt":"^0.61.0","oxlint":"^1.76.0","semver":"^7.8.5","vitest":"^4.1.10","storybook":"^10.5.5","typescript":"^7.0.2","@types/node":"^26.1.2","lint-staged":"^17.3.0","@amamo/verso":"1.0.0-rc.4","oxlint-tsgolint":"^7.0.2001","@playwright/test":"^1.62.1","simple-git-hooks":"^2.13.1","oxlint-tailwindcss":"^1.6.0","eslint-plugin-mocha":"^12.0.1","@testing-library/dom":"^10.4.1","eslint-plugin-regexp":"^3.1.1","eslint-plugin-cypress":"^6.4.3","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-storybook":"^10.5.5","eslint-plugin-playwright":"^2.11.0","eslint-plugin-testing-library":"^7.16.2"},"peerDependencies":{"oxfmt":"^0.61.0","oxlint":"^1.76.0","oxlint-tsgolint":"^7.0.2001","oxlint-tailwindcss":"^1.6.0","eslint-plugin-mocha":"^12.0.1","eslint-plugin-regexp":"^3.1.1","eslint-plugin-cypress":"^6.4.3","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-storybook":"^10.5.5","eslint-plugin-playwright":"^2.11.0","eslint-plugin-testing-library":"^7.16.2"},"simple-git-hooks":{"pre-commit":"pnpm exec lint-staged"},"peerDependenciesMeta":{"oxlint-tsgolint":{"optional":true},"oxlint-tailwindcss":{"optional":true},"eslint-plugin-mocha":{"optional":true},"eslint-plugin-regexp":{"optional":true},"eslint-plugin-cypress":{"optional":true},"eslint-plugin-sonarjs":{"optional":true},"eslint-plugin-storybook":{"optional":true},"eslint-plugin-playwright":{"optional":true},"eslint-plugin-testing-library":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oxlint-config_1.0.0_1785577715962_0.4108623611024931","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@amamo/oxlint-config","version":"1.0.1","author":{"name":"白熱","email":"sonne@asaki.me"},"license":"MIT","_id":"@amamo/oxlint-config@1.0.1","maintainers":[{"name":"jikkai","email":"sonne@asaki.me"}],"homepage":"https://jikkai.github.io/oxlint-config/","bin":{"amamo-oxlint-config":"dist/cli.js"},"dist":{"shasum":"deeafd25f35fa09a867e9cc2501fb3efd4291227","tarball":"https://registry.npmjs.org/@amamo/oxlint-config/-/oxlint-config-1.0.1.tgz","fileCount":32,"integrity":"sha512-0XfpwPMiHMmhQfsapEU705Te9oz4GW0YNADeKBvXMnT4FzFzKeHdmTU4SC++F9ow24rrB/zm/bar7KfmybFPcw==","signatures":[{"sig":"MEUCICbf6H+AzJ4jKBE3qF1uTD/hPtrC2esl4YcT4PZiS60XAiEAgq8BcCDUrUy9KYU0zQTd0lQR9h35rqRc596Dw7QIkM8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":202713},"type":"module","engines":{"node":">=22.18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"631c09165bb9e688d0074413f5c69f3aba72696c","scripts":{"test":"pnpm build && vitest run --dir src --testTimeout 15000","build":"tsc -p tsconfig.build.json","check":"pnpm check:static && pnpm test","prepare":"simple-git-hooks","release":"verso","docs:dev":"pnpm build && pnpm --filter @amamo/oxlint-config-docs dev","docs:build":"pnpm build && pnpm --filter @amamo/oxlint-config-docs build","check:static":"oxfmt --check . && oxlint . && tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"jikkai","email":"sonne@asaki.me"},"_npmVersion":"11.12.1","description":"Opinionated, composable Oxlint presets.","directories":{},"lint-staged":{"*":"oxfmt --check --no-error-on-unmatched-pattern","*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}":"oxlint --no-error-on-unmatched-pattern"},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"jsonc-parser":"^3.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.18.0","devDependencies":{"oxfmt":"^0.63.0","oxlint":"^1.78.0","semver":"^7.8.5","vitest":"^4.1.10","storybook":"^10.5.7","typescript":"^7.0.2","@types/node":"^26.2.0","lint-staged":"^17.3.0","@amamo/verso":"1.0.1","oxlint-tsgolint":"^7.0.2001","@playwright/test":"^1.62.1","simple-git-hooks":"^2.13.1","oxlint-tailwindcss":"^1.7.1","eslint-plugin-mocha":"^12.0.2","@testing-library/dom":"^10.4.1","eslint-plugin-regexp":"^3.1.1","eslint-plugin-cypress":"^7.0.0","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-storybook":"^10.5.7","eslint-plugin-playwright":"^2.11.0","eslint-plugin-testing-library":"^7.16.2"},"peerDependencies":{"oxfmt":">=0.1.0 <1.0.0","oxlint":">=1.56.0 <2.0.0","oxlint-tsgolint":"^7.0.2001","oxlint-tailwindcss":"^1.7.1","eslint-plugin-mocha":"^12.0.2","eslint-plugin-regexp":"^3.1.1","eslint-plugin-cypress":"^7.0.0","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-storybook":"^10.5.7","eslint-plugin-playwright":"^2.11.0","eslint-plugin-testing-library":"^7.16.2"},"simple-git-hooks":{"pre-commit":"pnpm exec lint-staged"},"peerDependenciesMeta":{"oxlint-tsgolint":{"optional":true},"oxlint-tailwindcss":{"optional":true},"eslint-plugin-mocha":{"optional":true},"eslint-plugin-regexp":{"optional":true},"eslint-plugin-cypress":{"optional":true},"eslint-plugin-sonarjs":{"optional":true},"eslint-plugin-storybook":{"optional":true},"eslint-plugin-playwright":{"optional":true},"eslint-plugin-testing-library":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oxlint-config_1.0.1_1786450882840_0.39001233286420756","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@amamo/oxlint-config","version":"1.1.0","author":{"name":"白熱","email":"sonne@asaki.me"},"license":"MIT","_id":"@amamo/oxlint-config@1.1.0","maintainers":[{"name":"jikkai","email":"sonne@asaki.me"}],"homepage":"https://jikkai.github.io/oxlint-config/","bugs":{"url":"https://github.com/jikkai/oxlint-config/issues"},"bin":{"amamo-oxlint-config":"dist/cli.js"},"dist":{"shasum":"039a0436e52dc64b7cedae9b64072cca9ade365f","tarball":"https://registry.npmjs.org/@amamo/oxlint-config/-/oxlint-config-1.1.0.tgz","fileCount":44,"integrity":"sha512-rbXSluKVJwSlA3CfreJnOvkTcpBwaXYMCqjT2zNsjQB7tPKReLQMTAKjqa77HPW6VKGMkSduD2VN2zOJG9PB4Q==","signatures":[{"sig":"MEUCIBy0Fz3VaZy/zIYdiuy6nkBtJyTF7nioA2HGr5yCgMNWAiEA3IRHfOhJRYzF3Ps0vu0IJfJ1kfsGtgfvbasWk5Y18J8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amamo%2foxlint-config@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":219618},"type":"module","engines":{"node":">=22.18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"cfd81dbdb9240fb1a843ea0ea749ba7deba1798b","scripts":{"test":"pnpm build && vitest run --dir src --testTimeout 15000","build":"tsc -p tsconfig.build.json","check":"pnpm check:static && pnpm test","prepare":"simple-git-hooks","release":"verso","docs:dev":"pnpm build && pnpm --filter @amamo/oxlint-config-docs dev","docs:build":"pnpm build && pnpm --filter @amamo/oxlint-config-docs build","check:static":"oxfmt --check . && oxlint . && tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0c1c6c45-d100-4e32-9ca8-5ae6b2b83c1a"}},"repository":{"url":"git+https://github.com/jikkai/oxlint-config.git","type":"git"},"_npmVersion":"11.16.0","description":"Opinionated, composable Oxlint presets.","directories":{},"lint-staged":{"*":"oxfmt --check --no-error-on-unmatched-pattern","*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}":"oxlint --no-error-on-unmatched-pattern"},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"jsonc-parser":"^3.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.18.0","devDependencies":{"oxfmt":"^0.63.0","oxlint":"^1.78.0","semver":"^7.8.5","vitest":"^4.1.10","storybook":"^10.5.7","typescript":"^7.0.2","@types/node":"^26.2.0","lint-staged":"^17.3.0","@amamo/verso":"1.0.1","oxlint-tsgolint":"^7.0.2001","@playwright/test":"^1.62.1","simple-git-hooks":"^2.13.1","oxlint-tailwindcss":"^1.7.1","eslint-plugin-mocha":"^12.0.2","@testing-library/dom":"^10.4.1","eslint-plugin-regexp":"^3.1.1","eslint-plugin-cypress":"^7.0.0","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-storybook":"^10.5.7","eslint-plugin-playwright":"^2.11.0","eslint-plugin-testing-library":"^7.16.2"},"peerDependencies":{"oxfmt":">=0.1.0 <1.0.0","oxlint":">=1.56.0 <2.0.0","oxlint-tsgolint":"^7.0.2001","oxlint-tailwindcss":"^1.7.1","eslint-plugin-mocha":"^12.0.2","eslint-plugin-regexp":"^3.1.1","eslint-plugin-cypress":"^7.0.0","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-storybook":"^10.5.7","eslint-plugin-playwright":"^2.11.0","eslint-plugin-testing-library":"^7.16.2"},"simple-git-hooks":{"pre-commit":"pnpm exec lint-staged"},"peerDependenciesMeta":{"oxlint-tsgolint":{"optional":true},"oxlint-tailwindcss":{"optional":true},"eslint-plugin-mocha":{"optional":true},"eslint-plugin-regexp":{"optional":true},"eslint-plugin-cypress":{"optional":true},"eslint-plugin-sonarjs":{"optional":true},"eslint-plugin-storybook":{"optional":true},"eslint-plugin-playwright":{"optional":true},"eslint-plugin-testing-library":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oxlint-config_1.1.0_1786452603337_0.28272632304809764","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@amamo/oxlint-config","version":"1.1.1","description":"Opinionated, composable Oxlint presets.","homepage":"https://jikkai.github.io/oxlint-config/","license":"MIT","author":{"name":"白熱","email":"sonne@asaki.me"},"repository":{"type":"git","url":"git+https://github.com/jikkai/oxlint-config.git"},"bin":{"amamo-oxlint-config":"dist/cli.js"},"type":"module","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"publishConfig":{"access":"public"},"scripts":{"prepare":"simple-git-hooks","release":"verso","build":"tsc -p tsconfig.build.json","check":"pnpm check:static && pnpm test","check:static":"oxfmt --check . && oxlint . && tsc -p tsconfig.json --noEmit","test":"pnpm build && vitest run --dir src --testTimeout 15000","docs:build":"pnpm build && pnpm --filter @amamo/oxlint-config-docs build","docs:dev":"pnpm build && pnpm --filter @amamo/oxlint-config-docs dev"},"dependencies":{"jsonc-parser":"^3.3.1"},"devDependencies":{"@amamo/verso":"1.2.0","@playwright/test":"^1.62.1","@testing-library/dom":"^10.4.1","@types/node":"^26.4.0","eslint-plugin-cypress":"^7.0.1","eslint-plugin-mocha":"^12.0.2","eslint-plugin-playwright":"^2.11.0","eslint-plugin-regexp":"^3.2.0","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-storybook":"^10.5.10","eslint-plugin-testing-library":"^7.16.2","lint-staged":"^17.4.1","oxfmt":"^0.65.0","oxlint":"^1.80.0","oxlint-tailwindcss":"^1.10.2","oxlint-tsgolint":"^7.0.2001","semver":"^7.8.5","simple-git-hooks":"^2.14.0","storybook":"^10.5.10","typescript":"^7.0.2","vitest":"^4.1.11"},"peerDependencies":{"eslint-plugin-cypress":"^7.0.0","eslint-plugin-mocha":"^12.0.2","eslint-plugin-playwright":"^2.11.0","eslint-plugin-regexp":"^3.1.1","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-storybook":"^10.5.7","eslint-plugin-testing-library":"^7.16.2","oxfmt":">=0.1.0 <1.0.0","oxlint":">=1.80.0 <2.0.0","oxlint-tailwindcss":"^1.7.1","oxlint-tsgolint":"^7.0.2001"},"peerDependenciesMeta":{"eslint-plugin-cypress":{"optional":true},"eslint-plugin-mocha":{"optional":true},"eslint-plugin-playwright":{"optional":true},"eslint-plugin-regexp":{"optional":true},"eslint-plugin-sonarjs":{"optional":true},"eslint-plugin-storybook":{"optional":true},"eslint-plugin-testing-library":{"optional":true},"oxlint-tailwindcss":{"optional":true},"oxlint-tsgolint":{"optional":true}},"simple-git-hooks":{"pre-commit":"pnpm exec lint-staged"},"lint-staged":{"*":"oxfmt --check --no-error-on-unmatched-pattern","*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}":"oxlint --no-error-on-unmatched-pattern"},"engines":{"node":">=22.18"},"packageManager":"pnpm@12.1.0","gitHead":"10a04421caadb03e6955ee519afcfbbe7acc9432","_id":"@amamo/oxlint-config@1.1.1","bugs":{"url":"https://github.com/jikkai/oxlint-config/issues"},"_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-gBte3G5NplZ+Hf+dRWulgx6buRKfEtrI/cdRxIK1xeIQGwaSPbnQx6k8JFTItxml7ZEm/9Az5r+/zjJcVdJSBw==","shasum":"a5f766a2b7eef1ad6a2d11f4640983ff23c14ca3","tarball":"https://registry.npmjs.org/@amamo/oxlint-config/-/oxlint-config-1.1.1.tgz","fileCount":44,"unpackedSize":220051,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amamo%2foxlint-config@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID6lqAkl45b7mu7kR8AhmYRxl1Vvr1LEcLMh6LgcRcQjAiAHgNS9JmH5I8k/74ZCRbZwOREjj/+QUDn7PyXDVxFiZA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0c1c6c45-d100-4e32-9ca8-5ae6b2b83c1a"}},"directories":{},"maintainers":[{"name":"jikkai","email":"sonne@asaki.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/oxlint-config_1.1.1_1788158347114_0.5193982550644647"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-31T13:26:18.323Z","modified":"2026-08-31T06:39:09.105Z","1.0.0-alpha.0":"2026-07-31T13:26:18.631Z","1.0.0":"2026-08-01T09:48:36.114Z","1.0.1":"2026-08-11T12:21:22.977Z","1.1.0":"2026-08-11T12:50:03.491Z","1.1.1":"2026-08-31T06:39:07.255Z"},"bugs":{"url":"https://github.com/jikkai/oxlint-config/issues"},"author":{"name":"白熱","email":"sonne@asaki.me"},"license":"MIT","homepage":"https://jikkai.github.io/oxlint-config/","repository":{"type":"git","url":"git+https://github.com/jikkai/oxlint-config.git"},"description":"Opinionated, composable Oxlint presets.","maintainers":[{"name":"jikkai","email":"sonne@asaki.me"}],"readme":"# @amamo/oxlint-config\n\nEnglish | [简体中文](./README-zh.md) | [Rule Explorer](https://jikkai.github.io/oxlint-config/)\n\n## Introduction\n\n`@amamo/oxlint-config` is an opinionated set of composable Oxlint presets with a safe Oxc\ninitializer. The default export builds an `OxlintConfig`; named exports expose the same stable\nfragments for advanced composition.\n\n```ts\nimport amamo from \"@amamo/oxlint-config\";\n\nexport default amamo();\n```\n\nThe package configures linting. Oxfmt remains a separate formatter, and the optional initializer\ncan install both tools and prepare a project without replacing an existing lint configuration.\n\n## Features and Design Choices\n\n- One factory for the common path, plus named stable fragments for manual composition.\n- A default baseline for Oxlint's native Base, TypeScript, Import, and Promise plugins.\n- Explicit React, Next.js, Vue, Tailwind CSS, Node, Jest, Vitest, JSDoc, and React Perf integrations.\n- Optional type-aware linting through `oxlint-tsgolint`.\n- Opt-in adapters for seven ESLint-compatible JavaScript plugins.\n- A project initializer that detects dependency and config signals, previews changes, preserves\n  conflicts, and writes only after validation.\n- A bilingual [Rule Explorer](https://jikkai.github.io/oxlint-config/) for inspecting the actual\n  generated presets, scopes, severities, options, schemas, and official rule links.\n\n> [!WARNING]\n> This is a personal, opinionated configuration. Review changes when upgrading. If its decisions\n> do not fit your project, override the relevant rules or fork the configuration. Native preset\n> rules do not have a separate stability promise beyond the package's published version, and the\n> JavaScript plugin adapters are explicitly Alpha.\n\n## Requirements and Compatibility\n\n| Requirement          | Supported range   | Notes                                                                   |\n| -------------------- | ----------------- | ----------------------------------------------------------------------- |\n| Node.js              | `>=22.18`         | Enforced by this package's `engines` field.                             |\n| `oxlint`             | `>=1.80.0 <2.0.0` | Required peer dependency and source of native plugins.                  |\n| `oxfmt`              | `>=0.1.0 <1.0.0`  | Required peer dependency used by the initializer's formatting workflow. |\n| `oxlint-tailwindcss` | `^1.7.1`          | Optional; required only when `tailwindcss` is configured.               |\n| `oxlint-tsgolint`    | `^7.0.2001`       | Optional; required only when `typeAware` is enabled.                    |\n\nThe initializer supports pnpm, npm, Yarn, and Bun projects when it can identify one package\nmanager safely. Repository development uses pnpm `11.18.0`.\n\nFor upstream behavior and supported syntax, consult the official\n[Oxlint documentation](https://oxc.rs/docs/guide/usage/linter.html) and\n[Oxfmt documentation](https://oxc.rs/docs/guide/usage/formatter.html).\n\n## Starter Wizard\n\nRun the initializer from the project root:\n\n```sh\npnpm dlx @amamo/oxlint-config init\n```\n\nThe interactive flow shows detected manifests, stable ecosystems, experimental packages, package\nmanager, planned files, install command, notices, and conflicts before asking for confirmation.\nStart with a dry run when evaluating it in an existing project:\n\n```sh\npnpm dlx @amamo/oxlint-config init --dry-run --yes\n```\n\nNon-interactive use requires `--yes`. The initializer is a setup tool; `amamo()` itself does not\nperform runtime framework detection.\n\n## Manual Installation\n\nInstall the package with its required Oxlint and Oxfmt peers:\n\n```sh\n# pnpm\npnpm add --save-dev @amamo/oxlint-config oxlint oxfmt\n\n# npm\nnpm install --save-dev @amamo/oxlint-config oxlint oxfmt\n\n# Yarn\nyarn add --dev @amamo/oxlint-config oxlint oxfmt\n\n# Bun\nbun add --dev @amamo/oxlint-config oxlint oxfmt\n```\n\nCreate `oxlint.config.ts` in the project root:\n\n```ts\nimport amamo from \"@amamo/oxlint-config\";\n\nexport default amamo();\n```\n\nFramework and test presets are explicit:\n\n```ts\nimport amamo from \"@amamo/oxlint-config\";\n\nexport default amamo({\n  nextjs: true,\n  node: true,\n  reactPerf: true,\n  test: [\"jest\", \"vitest\"],\n});\n```\n\n## Recommended Package Scripts\n\nThe initializer adds only missing script keys and preserves existing values:\n\n```json\n{\n  \"scripts\": {\n    \"lint\": \"oxlint .\",\n    \"lint:fix\": \"oxlint --fix .\",\n    \"format\": \"oxfmt .\",\n    \"format:check\": \"oxfmt --check .\"\n  }\n}\n```\n\nUse `lint` in CI for diagnostics and `format:check` to verify formatting without changing files.\n`lint:fix` applies fixes supported by Oxlint; `format` runs Oxfmt independently.\n\n## Default Behavior\n\n`amamo()` always starts with Base and enables TypeScript, Imports, and Promise unless explicitly\ndisabled. Other integrations are opt-in, with React and Next.js dependency rules shown below.\n\n| Preset or mode               | Default               | Selection behavior                                                                 |\n| ---------------------------- | --------------------- | ---------------------------------------------------------------------------------- |\n| Base                         | Always on             | Enables the `eslint`, `oxc`, and `unicorn` native plugins and category severities. |\n| TypeScript                   | On                    | Disable with `typescript: false`.                                                  |\n| Imports                      | On                    | Disable with `imports: false`.                                                     |\n| Promise                      | On                    | Disable with `promise: false`.                                                     |\n| React                        | Off                   | Enable with `react: true`; also enables JSX A11y by default.                       |\n| Next.js                      | Off                   | Enable with `nextjs: true`; also selects React and JSX A11y.                       |\n| JSX A11y                     | Follows React/Next.js | Set `jsxA11y` explicitly to override the derived value.                            |\n| Vue, Node, JSDoc, React Perf | Off                   | Enable each with its matching boolean option.                                      |\n| Tailwind CSS                 | Off                   | Pass its required Tailwind CSS v4 entry point through `tailwindcss`.               |\n| Jest, Vitest                 | Off                   | Select one or both through `test`. Duplicate entries are ignored.                  |\n| Type-aware mode              | Off                   | Enable with `typeAware: true` after installing `oxlint-tsgolint`.                  |\n| Experimental adapters        | Off                   | Each adapter must be installed and explicitly selected.                            |\n\nPreset order is deterministic: Base, default native fragments, React-related fragments, Vue,\nTailwind CSS, Node, JSDoc, tests, experimental adapters, `options.rules`, then arbitrary trailing\noverrides.\n\n## Options Reference\n\nThe default export accepts `IAmamoOptions` followed by any number of `OxlintConfig` overrides:\n\n```ts\nfunction amamo(options?: IAmamoOptions, ...overrides: OxlintConfig[]): OxlintConfig;\n```\n\n| Option         | Type                                                             | Default             | Effect                                                        |\n| -------------- | ---------------------------------------------------------------- | ------------------- | ------------------------------------------------------------- |\n| `experimental` | `IExperimentalOptions`                                           | `{}`                | Selects installed Alpha JavaScript plugin adapters.           |\n| `ignores`      | `string[]`                                                       | `undefined`         | Sets the root `ignorePatterns`.                               |\n| `imports`      | `boolean`                                                        | `true`              | Selects the native Import plugin fragment.                    |\n| `jsdoc`        | `boolean`                                                        | `false`             | Selects the JSDoc fragment for script files.                  |\n| `jsxA11y`      | `boolean`                                                        | React/Next.js state | Selects or suppresses JSX accessibility rules.                |\n| `nextjs`       | `boolean`                                                        | `false`             | Selects Next.js and implies React.                            |\n| `node`         | `boolean`                                                        | `false`             | Selects Node rules and the Node environment for script files. |\n| `promise`      | `boolean`                                                        | `true`              | Selects Promise rules for script files.                       |\n| `react`        | `boolean`                                                        | `false`             | Selects React rules and implies JSX A11y.                     |\n| `reactPerf`    | `boolean`                                                        | `false`             | Selects explicit React allocation warnings.                   |\n| `rules`        | `OxlintConfig[\"rules\"]`                                          | `undefined`         | Adds root rule settings after selected presets.               |\n| `tailwindcss`  | `ITailwindcssOptions`                                            | `undefined`         | Enables `oxlint-tailwindcss` with an explicit v4 entry point. |\n| `test`         | `\"jest\" \\| \"vitest\" \\| readonly (\"jest\" \\| \"vitest\")[] \\| false` | `false`             | Selects one or both test-runner fragments.                    |\n| `typeAware`    | `boolean`                                                        | `false`             | Sets root `options.typeAware`.                                |\n| `typescript`   | `boolean`                                                        | `true`              | Selects the TypeScript fragment.                              |\n| `vue`          | `boolean`                                                        | `false`             | Selects Vue script-block rules.                               |\n\n`IExperimentalOptions` has seven optional boolean keys, all disabled by default: `cypress`,\n`mocha`, `playwright`, `regexp`, `sonarjs`, `storybook`, and `testingLibrary`.\n\n## Rules, Overrides, and Ignores\n\nUse `rules` for ordinary root-level changes:\n\n```ts\nimport amamo from \"@amamo/oxlint-config\";\n\nexport default amamo({\n  rules: {\n    eqeqeq: \"error\",\n    \"typescript/consistent-type-imports\": \"off\",\n  },\n});\n```\n\nEvery additional argument is an arbitrary `OxlintConfig` applied last. This is the escape hatch for\nsettings, environments, globals, plugin configuration, or imported third-party config objects:\n\n```ts\nimport amamo from \"@amamo/oxlint-config\";\n\nexport default amamo(\n  { rules: { \"no-console\": \"warn\" } },\n  {\n    rules: { \"no-console\": \"off\" },\n    settings: { react: { linkComponents: [{ name: \"Link\", linkAttribute: \"to\" }] } },\n  },\n);\n```\n\nFor file-specific behavior, pass an Oxlint override with an explicit `files` scope:\n\n```ts\nimport amamo from \"@amamo/oxlint-config\";\n\nexport default amamo(\n  {},\n  {\n    overrides: [\n      {\n        files: [\"scripts/**/*.ts\"],\n        rules: { \"no-console\": \"off\" },\n      },\n    ],\n  },\n);\n```\n\nSet project-level ignores through the first argument:\n\n```ts\nexport default amamo({ ignores: [\"dist/**\", \"coverage/**\", \"generated/**\"] });\n```\n\nSee the official [Oxlint configuration guide](https://oxc.rs/docs/guide/usage/linter/config.html)\nfor the full `OxlintConfig` surface.\n\n## Named Stable Exports\n\nNamed exports are the same fragments used by `amamo()`. Import them when you need manual\ncomposition; the default factory is simpler for most projects.\n\n| Export       | Scope and explicit behavior                                                                                                                   |\n| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |\n| `base`       | Native `eslint`, `oxc`, and `unicorn`; `correctness` errors, `perf` and `suspicious` warnings, other categories off.                          |\n| `typescript` | TypeScript files; enforces separate type-only imports and rejects duplicate imports while allowing one type-only import from the same module. |\n| `imports`    | Enables the native `import` plugin.                                                                                                           |\n| `promise`    | Script files; `catch-or-return` and `no-return-wrap` errors.                                                                                  |\n| `react`      | Script files; Hooks rules with exhaustive dependencies as a warning; supports the automatic JSX runtime.                                      |\n| `reactPerf`  | JSX/TSX; warns about new JSX, array, function, and object values passed as props.                                                             |\n| `nextjs`     | JSX/TSX; async client component and duplicate head errors, HTML link warning.                                                                 |\n| `jsxA11y`    | JSX/TSX; alt text, ARIA props/roles, and anchor validity checks.                                                                              |\n| `vue`        | `*.vue`; Vue environment plus duplicate key, computed side effect, and `defineProps` validation rules.                                        |\n| `node`       | Script files; Node environment, exports assignment error, and path concatenation warning.                                                     |\n| `jsdoc`      | Script files; warns on invalid JSDoc tag names.                                                                                               |\n| `jest`       | Test files; Jest environment, focused-test error, disabled-test and missing-expect warnings.                                                  |\n| `vitest`     | Test files; Vitest environment, focused-test error, disabled-test and missing-expect warnings.                                                |\n\n```ts\nimport { base, node, typescript } from \"@amamo/oxlint-config\";\nimport { defineConfig } from \"oxlint\";\n\nexport default defineConfig({ extends: [base, typescript, node] });\n```\n\n## Ecosystem Presets\n\n### React\n\n`react: true` applies Hooks rules to script files, supports the automatic JSX runtime, and enables\nJSX A11y unless `jsxA11y: false` is explicit.\n\n### Next.js\n\n`nextjs: true` selects React first, then Next.js, and derives JSX A11y. It does not inspect the\nruntime; the option or initializer-generated config is the source of truth.\n\n### Vue\n\n`vue: true` selects Oxlint's native Vue plugin for `*.vue` script content and enables the Vue\nenvironment. It does not add template-specific JavaScript-plugin rules.\n\n### Tailwind CSS\n\nInstall the optional plugin and pass the CSS file that imports Tailwind CSS v4:\n\n```sh\npnpm add --save-dev oxlint-tailwindcss\n```\n\n```ts\nimport amamo from \"@amamo/oxlint-config\";\n\nexport default amamo({\n  tailwindcss: { entryPoint: \"src/index.css\" },\n});\n```\n\nFor monorepos, `entryPoint` also accepts ordered `{ files, use }` mappings. The preset enables a\nfocused set of the plugin's rules; use `rules` for severity changes. Tailwind CSS v3 is not supported.\nSee the [oxlint-tailwindcss setup guide](https://oxlint-tailwindcss.pages.dev/setup). Because it runs\nthrough Oxlint's JavaScript plugin API, that upstream API remains Alpha.\n\n### Node\n\n`node: true` applies the Node environment and Node rules to JavaScript and TypeScript script-file\npatterns, including ESM and CommonJS extensions.\n\n### Jest\n\nUse `test: \"jest\"` for Jest globals and rules on `*.test.*`, `*.spec.*`, and `__tests__` script\nfiles.\n\n### Vitest\n\nUse `test: \"vitest\"` for the equivalent Vitest environment and focused/disabled/expect checks.\nSelect both runners with `test: [\"jest\", \"vitest\"]`.\n\n### JSDoc\n\n`jsdoc: true` enables the native JSDoc plugin and its tag-name validation warning on script files.\n\n### React Perf\n\n`reactPerf: true` enables four allocation-related warnings for JSX/TSX props. It is independent of\n`react`; enable the React preset too when the project uses React Hooks rules.\n\n```ts\nexport default amamo({\n  jsdoc: true,\n  nextjs: true,\n  node: true,\n  reactPerf: true,\n  test: [\"jest\", \"vitest\"],\n  vue: true,\n});\n```\n\n## Type-aware Linting\n\nInstall the optional engine within its tested peer range:\n\n```sh\npnpm add --save-dev oxlint-tsgolint\n```\n\nThen enable the root Oxlint option:\n\n```ts\nimport amamo from \"@amamo/oxlint-config\";\n\nexport default amamo({ typeAware: true });\n```\n\nThis option sets `options.typeAware: true`; it does not add a separate exported preset fragment.\nKeep TypeScript enabled, and configure any additional type-aware rules through `rules` or a trailing\noverride. Type-aware linting requires `oxlint-tsgolint`; follow the official\n[type-aware linting guide](https://oxc.rs/docs/guide/usage/linter/type-aware.html) for upstream\nTypeScript compatibility, supported rules, diagnostics, and performance notes.\n\n## Experimental JavaScript Plugins\n\nOxlint's ESLint-compatible JavaScript plugin API is Alpha. These adapters are opt-in, their peer\ndependencies are optional, and this package does not promise SemVer stability for their behavior or\ncompatibility. Install only the packages you enable.\n\n| Option           | Package                         | Tested peer range | Scoped rule                                                                 |\n| ---------------- | ------------------------------- | ----------------- | --------------------------------------------------------------------------- |\n| `cypress`        | `eslint-plugin-cypress`         | `^6.4.3`          | `cypress/no-assigning-return-values` as an error in Cypress files.          |\n| `mocha`          | `eslint-plugin-mocha`           | `^12.0.1`         | `mocha/no-exclusive-tests` as a warning in test files.                      |\n| `playwright`     | `eslint-plugin-playwright`      | `^2.11.0`         | `playwright/no-focused-test` as an error in test files.                     |\n| `regexp`         | `eslint-plugin-regexp`          | `^3.1.1`          | `regexp/no-dupe-characters-character-class` as an error in script files.    |\n| `sonarjs`        | `eslint-plugin-sonarjs`         | `^4.2.0`          | `sonarjs/no-all-duplicated-branches` as an error in script files.           |\n| `storybook`      | `eslint-plugin-storybook`       | `^10.5.5`         | `storybook/default-exports` as an error in stories and `.storybook` files.  |\n| `testingLibrary` | `eslint-plugin-testing-library` | `^7.16.2`         | `testing-library/no-global-regexp-flag-in-query` as an error in test files. |\n\nFor example:\n\n```sh\npnpm add --save-dev eslint-plugin-playwright eslint-plugin-testing-library\n```\n\n```ts\nimport amamo from \"@amamo/oxlint-config\";\n\nexport default amamo({\n  experimental: {\n    playwright: true,\n    testingLibrary: true,\n  },\n});\n```\n\nThe initializer detects already-installed experimental packages but keeps every adapter off by\ndefault, including under `--yes`. Interactive users must opt in. See the official\n[Oxlint JavaScript plugin guide](https://oxc.rs/docs/guide/usage/linter/js-plugins) for current\nupstream API support and limitations.\n\n## Initializer Detection and Write Safety\n\n### Detection\n\nThe initializer reads the root manifest plus ordinary package.json or pnpm workspace manifests.\nIt derives project choices from dependencies and a small set of config signals:\n\n- TypeScript from a `typescript` dependency, a root `tsconfig.json`, or a root\n  `tsconfig.*.json`.\n- React, Next.js, Vue, Jest, and Vitest from their package dependencies.\n- Tailwind CSS from one unambiguous project CSS file importing `\"tailwindcss\"`; multiple or missing\n  v4 entry points are reported and left for manual configuration.\n- Node from the root `engines.node` field or known server packages (`express`, `fastify`, `hono`,\n  `koa`, or `@nestjs/core`). `@types/node` alone does not enable Node rules.\n- Storybook from `storybook`, `eslint-plugin-storybook`, or a package under `@storybook/`; other\n  experimental adapters from their exact plugin packages.\n- The package manager from the invoking user agent or one unambiguous lockfile.\n\nThis is initialization-time detection only. Multiple package-manager lockfiles, a missing root\n`package.json`, or a required install without a safely detected manager stops the command.\n\n### Flags\n\n| Flag           | Behavior                                                                      |\n| -------------- | ----------------------------------------------------------------------------- |\n| `--dry-run`    | Prints detection and the complete plan; starts no install and writes no file. |\n| `--no-install` | Writes an approved safe plan without starting a package manager.              |\n| `--yes`        | Accepts detected stable choices and safe defaults for non-interactive use.    |\n\nOnly `init`, `--dry-run`, `--no-install`, and `--yes` are accepted. Unknown, repeated, or valued\nboolean flags are rejected with usage text.\n\n### Generated and Updated Files\n\n| Target                    | Behavior                                                                                                           |\n| ------------------------- | ------------------------------------------------------------------------------------------------------------------ |\n| `oxlint.config.ts`        | Created only when `.oxlintrc.json`, `.oxlintrc.jsonc`, `oxlint.config.ts`, and `oxlint.config.mts` are all absent. |\n| `package.json`            | Adds only missing `lint`, `lint:fix`, `format`, and `format:check` scripts.                                        |\n| `.vscode/settings.json`   | Adds Oxfmt then Oxlint save actions only when they can be merged safely.                                           |\n| `.vscode/extensions.json` | Adds the `oxc.oxc-vscode` recommendation without removing existing entries.                                        |\n| `.zed/settings.json`      | Adds Oxfmt formatting and safe Oxlint fixes on save for languages supported by the Oxc extension.                  |\n| Development dependencies  | Installs the package, Oxlint, Oxfmt, and only selected optional engines/adapters.                                  |\n\nIf a lint config already exists, it is preserved and the command prints a composition snippet\ninstead. JSONC edits keep comments and existing values where possible; incompatible values are\nreported as conflicts rather than overwritten.\n\n### Conflicts and Write Safety\n\nThe plan is assembled before execution. Install failures write no planned files. Before writing,\nthe initializer validates that every target is unique, inside the physical project root, and not a\nsymbolic link. It snapshots existing content, rechecks hashes and missing targets, writes through an\nexclusively created temporary file, preserves existing modes, and renames only after the final\ncheck. Concurrent or unsafe changes stop the operation and leave remaining paths unwritten.\n\nPackage-manager edits to `package.json` are refreshed after installation so new dependencies are\npreserved; newly conflicting scripts remain user-owned and are reported. A second run over the\nmanaged result plans no duplicate changes.\n\n## VS Code Save Formatting and Safe Fixes\n\nInstall the official [Oxc VS Code extension](https://marketplace.visualstudio.com/items?itemName=oxc.oxc-vscode).\nThe initializer recommends it and writes Oxfmt before Oxlint's safe fixes in the ordered save-action\nobject:\n\n```json\n{\n  \"editor.formatOnSave\": false,\n  \"editor.codeActionsOnSave\": {\n    \"source.format.oxc\": \"always\",\n    \"source.fixAll.oxc\": \"always\"\n  }\n}\n```\n\nThis provides save formatting through Oxfmt and then applies Oxlint fixes. If both keys already\nexist in reverse order, the initializer reports a conflict and preserves the file byte-for-byte.\nEditor type-aware behavior follows the root Oxlint config; see the official\n[editor setup guide](https://oxc.rs/docs/guide/usage/linter/editors.html).\n\n## Zed Save Formatting and Safe Fixes\n\nThe initializer asks Zed to install the [Oxc extension](https://zed.dev/extensions/oxc) and writes\nproject settings for every language it supports. JavaScript, JSX, TypeScript, TSX, Vue, and Svelte\nrun Oxfmt followed by safe Oxlint fixes; Astro runs only the supported Oxlint fixes. Other supported\ndata and markup languages run Oxfmt only. Existing settings are merged without replacing user\nvalues.\n\n```json\n{\n  \"languages\": {\n    \"TypeScript\": {\n      \"format_on_save\": \"on\",\n      \"formatter\": [\n        { \"language_server\": { \"name\": \"oxfmt\" } },\n        { \"code_action\": \"source.fixAll.oxc\" }\n      ]\n    }\n  }\n}\n```\n\nThe initializer preserves the file and reports a conflict when an existing `fixKind` permits unsafe\nfixes or an existing formatter sequence runs Oxlint before Oxfmt.\n\n## Oxfmt and Prettier Boundary\n\nThis package exports lint configuration, not a formatter preset. The initializer installs Oxfmt,\nadds `format` scripts, and otherwise uses Oxfmt's own defaults. Create an Oxfmt config only when the\nproject needs formatter-specific customization; see the official\n[Oxfmt configuration reference](https://oxc.rs/docs/guide/usage/formatter/config.html).\n\nOxfmt and Prettier are independent formatters. Avoid running both over the same files on save or in\nCI unless their responsibilities are deliberately separated. This package does not disable\nPrettier, migrate its config, emulate Prettier plugins, or add formatting rules to Oxlint. Use the\nofficial [Prettier migration guide](https://oxc.rs/docs/guide/usage/formatter/migrate-from-prettier.html)\nwhen moving an existing project.\n\n## Svelte and Astro Script-block Limitations\n\nOxlint can lint JavaScript and TypeScript inside Svelte and Astro script blocks. This package does\nnot select Svelte- or Astro-specific presets, add template rules, or promise linting for markup and\nstyles. Oxfmt supports Svelte formatting; this package makes no claim about Astro formatting.\n\nCheck the current upstream support in the official\n[Oxlint guide](https://oxc.rs/docs/guide/usage/linter.html) before adopting it for framework files.\n\n## Rule Explorer\n\nThe static [Rule Explorer](https://jikkai.github.io/oxlint-config/) is generated from the built\npackage, the installed Oxlint schema and rule inventory, controlled `--print-config` profiles, and\nthe package's experimental fixture. It does not evaluate uploaded or user-supplied configuration.\n\nIt provides:\n\n- Default and All Stable configuration controls, including dependencies and Alpha labels.\n- Enabled and All rule views, where All adds disabled native inventory to active applications.\n- Search plus plugin, preset, severity, state, and scope filters.\n- Rules, Presets, Scopes, and generated Config views.\n- Rule severities, source preset/plugin, scopes, options, native schemas, external-plugin\n  descriptions, and official documentation links.\n- English and Chinese UI, shareable URL state, browser history restoration, and desktop/mobile\n  layouts.\n\nThe build snapshot is deterministic and contains package/Oxlint versions but no generation\ntimestamp.\n\n## Compatibility and Stability Policy\n\n- Supported package compatibility is the Node engine and peer ranges published in `package.json`.\n- Native preset behavior follows the exact package version. Review rule changes on every upgrade;\n  no additional stable-rule SemVer policy is claimed.\n- JavaScript plugin adapters and Oxlint's JS plugin API are Alpha. Adapter compatibility is tested\n  only against the peer ranges listed above.\n- Tailwind CSS linting supports v4 only and depends on `oxlint-tailwindcss` plus Oxlint's Alpha JS\n  plugin API.\n- Type-aware mode depends on `oxlint-tsgolint` and upstream TypeScript compatibility.\n- The initializer preserves conflicts instead of making destructive guesses, but review every plan\n  before approving writes in an established repository.\n\n## FAQ\n\n### Does `amamo()` auto-detect my framework?\n\nNo. Frameworks and tests are explicit factory options. Only the one-time initializer inspects\ndependencies and config files to propose defaults.\n\n### Can I override any rule or add another Oxlint config?\n\nYes. Use `options.rules` for root rules and trailing `OxlintConfig` arguments for arbitrary or\nfile-scoped composition. Trailing overrides are applied last.\n\n### Can Jest and Vitest be enabled together?\n\nYes. Use `test: [\"jest\", \"vitest\"]`. Repeated values are deduplicated; when both are enabled, Jest\nis applied before Vitest.\n\n### Why is JSX A11y active when I selected React or Next.js?\n\nReact derives `jsxA11y: true`, and Next.js derives React. Set `jsxA11y: false` explicitly to disable\nthat dependency.\n\n### Does this package format code?\n\nNo. It configures Oxlint. Oxfmt is installed and invoked separately by the recommended workflow and\neditor save actions.\n\n### Will the initializer overwrite my existing config or scripts?\n\nNo. It preserves recognized lint configs, prints a composition snippet, adds only missing script\nkeys, and reports conflicting values. Unsafe or concurrently changed targets abort the write.\n\n### Why is an experimental rule unavailable?\n\nInstall the matching optional peer in its tested range and enable its `experimental` key. These\nadapters are never enabled by default.\n\n## Local Development and Verification\n\nInstall dependencies and build the root package:\n\n```sh\npnpm install\npnpm build\n```\n\nRun the repository's complete package verification entry:\n\n```sh\npnpm check\n```\n\n`pnpm check` runs `check:static` followed by the source test suite. `check:static` checks formatting\nwith Oxfmt, lints with Oxlint, and type-checks with TypeScript; `pnpm test` runs Vitest under `src`.\n\nDocumentation commands are separate from package verification:\n\n```sh\npnpm docs:build\npnpm docs:dev\n```\n\n`docs:build` builds the package and static site.\n\n`.github/workflows/docs.yml` deploys the exact commit from a successful same-repository `Release`\nworkflow run. An explicit manual dispatch deploys `github.sha`, the commit resolved from the ref\nselected by the operator. A repository administrator must select **GitHub Actions** as the Pages\nsource once under **Settings → Pages**; the workflow does not change that setting.\n\n## License\n\n[MIT](./LICENSE) © 白熱\n","readmeFilename":"README.md"}