{"_id":"@climatiq/oxc-presets","_rev":"3-6353093b4d46077aaa92797e1cb16251","name":"@climatiq/oxc-presets","dist-tags":{"latest":"2.0.0"},"versions":{"0.1.0":{"name":"@climatiq/oxc-presets","version":"0.1.0","keywords":["config","javascript","oxfmt","oxlint","typescript"],"author":{"name":"Climatiq"},"license":"MIT","_id":"@climatiq/oxc-presets@0.1.0","maintainers":[{"name":"grindcode","email":"grindcode@gmail.com"},{"name":"igmoweb","email":"igmoweb@gmail.com"}],"homepage":"https://github.com/climatiq/oxc-presets#readme","bugs":{"url":"https://github.com/climatiq/oxc-presets/issues"},"dist":{"shasum":"d716fa15721349ea127f5d79c895c2062e45131c","tarball":"https://registry.npmjs.org/@climatiq/oxc-presets/-/oxc-presets-0.1.0.tgz","fileCount":27,"integrity":"sha512-hwUa+NclJ4pte1/yY3z2uSAwgUBJ2iA/SCbzvBIa9/t09Xs1UDxT3yDoLy8FmCXdOeA8pgCxHbDk5znBEuHcjA==","signatures":[{"sig":"MEQCID7wcE5sOdfbwLyVYNCE6NNj/euQyHhHXHsRZnioRdASAiBEqXlROAjMLbYA6SKrhru8N9TdGt/S+afVGAlk4ySMwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81462},"main":"index.js","type":"module","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./index.js","./oxfmt":{"types":"./oxfmt-preset.d.ts","import":"./oxfmt-preset.js","default":"./oxfmt-preset.js"},"./oxlint":"./oxlint-config.json","./clsx-plugin":{"types":"./lint-rules/clsx-plugin.d.ts","import":"./lint-rules/clsx-plugin.js","default":"./lint-rules/clsx-plugin.js"}},"gitHead":"9592fd1eae176e5993325a36b2d0496a6970f25e","scripts":{"lint":"oxlint -c oxlint-config.json","test":"vitest run","format":"oxfmt -c ./oxfmt.config.mjs","lint:fix":"oxlint -c oxlint-config.json --fix --max-warnings=0","type-check":"tsc --noEmit","format:check":"oxfmt -c ./oxfmt.config.mjs --check"},"_npmUser":{"name":"grindcode","email":"grindcode@gmail.com"},"repository":{"url":"git+https://github.com/climatiq/oxc-presets.git","type":"git"},"_npmVersion":"11.6.2","description":"Oxc onfiguration (oxlint, oxfmt) for Climatiq projects","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@oxlint/plugins":"^1.76.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.18.0+sha512.33d83c77da82f49fba836925c6f1b841181ec3132b670639bd012f7075f5c7cf634c5f870147c19aae7478fac01df09d8892e880454896edd23ee9b33757563c","devDependencies":{"oxfmt":"^0.61.0","oxlint":"^1.76.0","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^24.13.3","oxlint-tsgolint":"^7.0.2001"},"peerDependencies":{"oxfmt":">=0.45.0 <1","oxlint":">=1.73.0 <2","oxlint-tsgolint":">=7.0.2001 <8"},"peerDependenciesMeta":{"oxfmt":{"optional":false},"oxlint":{"optional":true},"oxlint-tsgolint":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oxc-presets_0.1.0_1785773586182_0.8388784242459209","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@climatiq/oxc-presets","version":"1.0.0","keywords":["config","javascript","oxfmt","oxlint","typescript"],"author":{"name":"Climatiq"},"license":"MIT","_id":"@climatiq/oxc-presets@1.0.0","maintainers":[{"name":"grindcode","email":"grindcode@gmail.com"},{"name":"igmoweb","email":"igmoweb@gmail.com"}],"homepage":"https://github.com/climatiq/oxc-presets#readme","bugs":{"url":"https://github.com/climatiq/oxc-presets/issues"},"dist":{"shasum":"b3215719c26dd987411194171132ff3bcb2e4465","tarball":"https://registry.npmjs.org/@climatiq/oxc-presets/-/oxc-presets-1.0.0.tgz","fileCount":17,"integrity":"sha512-R0twO+iyEH3tZl5+q38JGliKGMcJ9yvvlnN5idP9EEBHRfdNX4wHoH+L99/mFGYzlT7Gq+sE2FtzNXLWa0pYoQ==","signatures":[{"sig":"MEUCIFI3rX49TBBCepsDrlbSUnO0pn9KGz+uYtdxMVF1uIVMAiEA1y4Va52NrVZ9d8MeuOdD39LxxJsfkW25HptvoXJtV98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@climatiq%2foxc-presets@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":63673},"main":"index.js","type":"module","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":"./index.js","./oxfmt":{"types":"./oxfmt-preset.d.ts","import":"./oxfmt-preset.js","default":"./oxfmt-preset.js"},"./oxlint":"./oxlint-config.json","./clsx-plugin":{"types":"./lint-rules/clsx-plugin.d.ts","import":"./lint-rules/clsx-plugin.js","default":"./lint-rules/clsx-plugin.js"}},"gitHead":"8fe9db184174c280a8c1eb5a7d7c72bd3d911c21","scripts":{"lint":"oxlint -c oxlint-config.json","test":"vitest run","format":"oxfmt -c ./oxfmt.config.mjs","lint:fix":"oxlint -c oxlint-config.json --fix --max-warnings=0","type-check":"tsc --noEmit","format:check":"oxfmt -c ./oxfmt.config.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b72fe0a9-b540-409b-9cc5-7a79e88f5f61"}},"repository":{"url":"git+https://github.com/climatiq/oxc-presets.git","type":"git"},"_npmVersion":"12.0.2","description":"Oxc onfiguration (oxlint, oxfmt) for Climatiq projects","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@oxlint/plugins":"^1.76.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.18.0+sha512.33d83c77da82f49fba836925c6f1b841181ec3132b670639bd012f7075f5c7cf634c5f870147c19aae7478fac01df09d8892e880454896edd23ee9b33757563c","devDependencies":{"oxfmt":"^0.61.0","oxlint":"^1.76.0","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^24.13.3","oxlint-tsgolint":"^7.0.2001"},"peerDependencies":{"oxfmt":">=0.45.0 <1","oxlint":">=1.73.0 <2","oxlint-tsgolint":">=7.0.2001 <8"},"peerDependenciesMeta":{"oxfmt":{"optional":false},"oxlint":{"optional":true},"oxlint-tsgolint":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/oxc-presets_1.0.0_1785831823241_0.9144208319393641","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@climatiq/oxc-presets","version":"2.0.0","description":"Oxc onfiguration (oxlint, oxfmt) for Climatiq projects","keywords":["config","javascript","oxfmt","oxlint","typescript"],"homepage":"https://github.com/climatiq/oxc-presets#readme","bugs":{"url":"https://github.com/climatiq/oxc-presets/issues"},"license":"MIT","author":{"name":"Climatiq"},"repository":{"type":"git","url":"git+https://github.com/climatiq/oxc-presets.git"},"type":"module","main":"index.js","exports":{".":"./index.js","./oxfmt":{"types":"./oxfmt-preset.d.ts","import":"./oxfmt-preset.js","default":"./oxfmt-preset.js"},"./oxlint":"./oxlint-config.json","./clsx-plugin":{"types":"./lint-rules/clsx-plugin.d.ts","import":"./lint-rules/clsx-plugin.js","default":"./lint-rules/clsx-plugin.js"}},"scripts":{"format":"oxfmt -c ./oxfmt.config.mjs","format:check":"oxfmt -c ./oxfmt.config.mjs --check","lint":"oxlint -c oxlint-config.json","lint:fix":"oxlint -c oxlint-config.json --fix --max-warnings=0","test":"vitest run","type-check":"tsc --noEmit"},"dependencies":{"@oxlint/plugins":"^1.76.0"},"devDependencies":{"@types/node":"^24.13.3","oxfmt":"^0.61.0","oxlint":"^1.78.0","oxlint-tsgolint":"^7.0.2001","typescript":"^7.0.2","vitest":"^4.1.10"},"engines":{"node":"^20.19.0 || >=22.12.0"},"packageManager":"pnpm@11.18.0+sha512.33d83c77da82f49fba836925c6f1b841181ec3132b670639bd012f7075f5c7cf634c5f870147c19aae7478fac01df09d8892e880454896edd23ee9b33757563c","peerDependencies":{"oxfmt":">=0.45.0 <1","oxlint":">=1.73.0 <2","oxlint-tsgolint":">=7.0.2001 <8"},"peerDependenciesMeta":{"oxfmt":{"optional":false},"oxlint":{"optional":true},"oxlint-tsgolint":{"optional":true}},"publishConfig":{"access":"public","provenance":true},"gitHead":"52d7c507a83b340049a9a5bcf66275e722d436aa","_id":"@climatiq/oxc-presets@2.0.0","_nodeVersion":"24.18.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-b9OZjC3rgCV/ckG4EP8aoYApclE30RbjOOBR72e2aJQB+r9MBJxtxo/EHjtMjILbBkFIQf9QehbHLFQt0EBy/A==","shasum":"58c7fb453c3886e4ac2fe2021cfa8f76ff80e811","tarball":"https://registry.npmjs.org/@climatiq/oxc-presets/-/oxc-presets-2.0.0.tgz","fileCount":17,"unpackedSize":64025,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@climatiq%2foxc-presets@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCWAanSZtBKI3VkdG7gcHCQ5aVTLbceSarpmYP0kgKOwAIhAMVPpQSTVraIWHaelkty3GlKiTfoHQP8wSxmIiKAyeMo"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b72fe0a9-b540-409b-9cc5-7a79e88f5f61"}},"directories":{},"maintainers":[{"name":"grindcode","email":"grindcode@gmail.com"},{"name":"igmoweb","email":"igmoweb@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/oxc-presets_2.0.0_1788778973301_0.9397948440018042"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-03T16:13:06.067Z","modified":"2026-09-07T11:02:53.781Z","0.1.0":"2026-08-03T16:13:06.376Z","1.0.0":"2026-08-04T08:23:43.377Z","2.0.0":"2026-09-07T11:02:53.447Z"},"bugs":{"url":"https://github.com/climatiq/oxc-presets/issues"},"author":{"name":"Climatiq"},"license":"MIT","homepage":"https://github.com/climatiq/oxc-presets#readme","keywords":["config","javascript","oxfmt","oxlint","typescript"],"repository":{"type":"git","url":"git+https://github.com/climatiq/oxc-presets.git"},"description":"Oxc onfiguration (oxlint, oxfmt) for Climatiq projects","maintainers":[{"name":"grindcode","email":"grindcode@gmail.com"},{"name":"igmoweb","email":"igmoweb@gmail.com"}],"readme":"# Climatiq Oxc Config Presets\n\nThis package provides Climatiq's [`oxlint`](https://npmx.dev/oxlint) & [`oxfmt`](https://npmx.dev/oxfmt) configuration as a base config for any project in Climatiq.\nIt includes configurations for React, Next.js, TypeScript, etc.\n\n## Installation\n\n```bash\nnpm install --save-dev @climatiq/oxc-presets\n```\n\nor with yarn:\n\n```bash\nyarn add --dev @climatiq/oxc-presets\n```\n\nor with pnpm:\n\n```bash\npnpm add -D @climatiq/oxc-presets\n```\n\n## Usage\n\n### Oxlint\n\nInstall [Oxlint](https://npmx.dev/oxlint) alongside this package (it is listed in\npeerDependencies), as well as [`oxlint-tsgolint`](https://npmx.dev/oxlint-tsgolint) for\ntype-aware linting.\n\nThe `clsx`/`cn` rules ship with this package as an Oxlint JS plugin, so there is nothing else\nto install for them — see [`lint-rules/`](./lint-rules/index.md).\n\nCreate an `.oxlintrc.json` file in your project root with the following content:\n\n```jsonc\n{\n    \"$schema\": \"./node_modules/oxlint/configuration_schema.json\",\n    \"extends\": [\"./node_modules/@climatiq/oxc-presets/oxlint-config.json\"],\n}\n```\n\nIf you want to opt-out of type-aware linting, don't install `oxlint-tsgolint` and add the following to your oxlint config:\n\n```jsonc\n{\n    \"$schema\": \"./node_modules/oxlint/configuration_schema.json\",\n    \"extends\": [\"./node_modules/@climatiq/oxc-presets/oxlint-config.json\"],\n    \"options\": {\n        \"typeAware\": false,\n    },\n}\n```\n\n### Oxfmt\n\nInstall [Oxfmt](https://npmx.dev/oxfmt) alongside this package (it is listed in peerDependencies).\n\nThe @climatiq/oxc-presets/oxfmt entry resolves to a plain .js preset (this package uses \"type\": \"module\") so Node does not need to strip TypeScript from files under node_modules when you extend it.\n\nCreate an `oxfmt.config.ts` file in your project root:\n\n```ts\nimport { defineConfig } from 'oxfmt';\nimport climatiqOxfmt from '@climatiq/oxc-presets/oxfmt';\n\nexport default defineConfig({\n    ...climatiqOxfmt,\n    printWidth: 100,\n    // or any other overrides\n});\n```\n\nOxfmt does not have an `extends` field; spreading the preset and setting any top-level option afterward is how you override it (same idea for `ignorePatterns`: spread `climatiqOxfmt.ignorePatterns` and append paths).\n\n## What's Included\n\n### Oxlint\n\nThe Oxlint config includes:\n\n- **Next.js** rules\n- **React** rules\n- **TypeScript** rules\n- **clsx/cn** rules, bundled as an Oxlint JS plugin — see [`lint-rules/`](./lint-rules/index.md)\n- **Unused imports** detection and auto-removal\n- Sensible defaults for TypeScript projects\n\n#### clsx/cn rules\n\nThe `clsx/*` rules are copied from\n[`eslint-plugin-clsx`](https://github.com/temoncher/eslint-plugin-clsx) (MIT) and converted to\nOxlint's JS plugin API, so consumers do not need `eslint-plugin-clsx` installed. Which modules\ncount as `clsx` is configured through `settings.clsxOptions`; this preset ships with:\n\n```jsonc\n{\n    \"settings\": {\n        \"clsxOptions\": {\n            \"clsx\": [\"default\", \"clsx\"],\n            \"classnames\": [\"default\"],\n            \"@/src/lib/utils\": [\"cn\"],\n        },\n    },\n}\n```\n\nOxlint does not currently inherit `settings` through `extends`, so the same map is also the\nplugin's built-in default: `clsx`, `classnames` and `cn` are covered out of the box, with no\nconfiguration on your side. Add your own `settings.clsxOptions` block only if your `cn` helper\nlives somewhere else — note that it **replaces** the default rather than extending it, so\nre-list `clsx` and `classnames` if you still want them covered.\n\nFull rule documentation is in [`lint-rules/index.md`](./lint-rules/index.md).\n\n### Oxfmt\n\nThe Oxfmt config includes:\n\n- 1 Indentation = 4 spaces\n- single-quotes\n- semis\n- trailing commas\n- Sorting for Tailwind classes enabled\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n\n## Release process\n\nTo publish a new release, just create a new Release on the GitHub Repo Releases page with the new version.\n\nThe GitHub Actions workflow `release.yaml` will tag the new version and publish it to npm.\n\nTherefore, the version in the package.json does not necessarily reflect the current version of the package.\n","readmeFilename":"README.md"}