{"_id":"@2digits/oxlint-plugin","_rev":"3-360e94b36ed385a8a60315443744348e","name":"@2digits/oxlint-plugin","dist-tags":{"temp":"0.0.0-tegami-trusted-publish-setup","latest":"0.0.3"},"versions":{"0.0.0-tegami-trusted-publish-setup":{"name":"@2digits/oxlint-plugin","version":"0.0.0-tegami-trusted-publish-setup","_id":"@2digits/oxlint-plugin@0.0.0-tegami-trusted-publish-setup","maintainers":[{"name":"2-digits-admin","email":"app@socialbrothers.nl"},{"name":"v1re","email":"niels.mentink@gmail.com"}],"dist":{"shasum":"3c3dc94ed9fbbb119b31b2f06f729af3a47a6cef","tarball":"https://registry.npmjs.org/@2digits/oxlint-plugin/-/oxlint-plugin-0.0.0-tegami-trusted-publish-setup.tgz","fileCount":2,"integrity":"sha512-IUMckw7TVAJoMUG6HaQy1K8t84YsyWYqpjmnJsYDocetxnEjabjnEs44XGk+i8wW91+gIjfwochmKk4wS42/kg==","signatures":[{"sig":"MEMCIDGSJisw1dVRIxkboIidEWYPjkTljxHrfe4csXASnKF/Ah8LiAZLaDWplxAk8NmKczwXGApKNdKKEpSjxn8czbpE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":384},"_npmUser":{"name":"v1re","email":"niels.mentink@gmail.com"},"_npmVersion":"11.19.0","description":"Placeholder published by Tegami for npm trusted publishing setup.","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oxlint-plugin_0.0.0-tegami-trusted-publish-setup_1788441811900_0.13892123667991818","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@2digits/oxlint-plugin","version":"0.0.1","keywords":["2digits","oxlint","oxlint-plugin"],"license":"MIT","_id":"@2digits/oxlint-plugin@0.0.1","maintainers":[{"name":"2-digits-admin","email":"app@socialbrothers.nl"},{"name":"v1re","email":"niels.mentink@gmail.com"}],"dist":{"shasum":"ee5dc258d9c40e35cb9dd5e1c1a96a05fbd0bfce","tarball":"https://registry.npmjs.org/@2digits/oxlint-plugin/-/oxlint-plugin-0.0.1.tgz","fileCount":5,"integrity":"sha512-gQ3xLmbZq3vvbZCcOwCJQIR09mtXw+hRfYgHSKaoQFUJpgL+2qffToZxgH7eaUrteKUnHcsKLVEoAmAMFTsMyA==","signatures":[{"sig":"MEUCIFCPRzPNn43WClq4AFupJ/mhtbY0OaVBdf4Td2jekpTxAiEApZiDj3MQpwLVh5oZ9JhpGc3L1EmoqAWzjQtKjIGItqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48619},"type":"module","types":"./dist/index.d.mts","public":true,"exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"scripts":{"dev":"vp pack --watch","test":"vp test run","build":"vp pack --minify","types":"tsgo --noEmit"},"_npmUser":{"name":"v1re","email":"niels.mentink@gmail.com"},"repository":{"url":"git+https://github.com/2digits-agency/configs.git","type":"git","directory":"packages/oxlint-plugin"},"description":"Custom Oxlint rules for 2digits projects.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@oxlint/plugins":"1.81.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxlint":"1.81.0","publint":"0.3.24","vite-plus":"0.3.0","typescript":"6.0.3","@2digits/tsconfig":"0.8.7","@arethetypeswrong/core":"0.18.5","@typescript/native-preview":"7.0.0-dev.20260707.2"},"_npmOperationalInternal":{"tmp":"tmp/oxlint-plugin_0.0.1_1788441868992_0.03645681133896783","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@2digits/oxlint-plugin","version":"0.0.3","description":"Custom Oxlint rules for 2digits projects.","keywords":["2digits","oxlint","oxlint-plugin"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/2digits-agency/configs.git","directory":"packages/oxlint-plugin"},"type":"module","sideEffects":false,"types":"./dist/index.d.mts","exports":{".":"./dist/index.mjs","./package.json":"./package.json"},"publishConfig":{"access":"public"},"dependencies":{"@oxlint/plugins":"1.81.0"},"devDependencies":{"@2digits/tsconfig":"0.8.8","@arethetypeswrong/core":"0.18.5","oxlint":"1.81.0","publint":"0.3.24","typescript":"7.0.2","vite-plus":"0.3.0"},"public":true,"scripts":{"build":"vp pack --minify","dev":"vp pack --watch","test":"vp test run","types":"tsc --noEmit"},"_id":"@2digits/oxlint-plugin@0.0.3","dist":{"integrity":"sha512-mbxRN7Q8nMh4RnaYwqKOl608CSD2XeTAo/Kfyh3xCc/9YLyR4a1NVCj4z9q1AYcR6vdlBiZNwTY9gwDobZ2cTg==","shasum":"bc7e2c077a24c1d2d1c5c2de2be09633102f7774","tarball":"https://registry.npmjs.org/@2digits/oxlint-plugin/-/oxlint-plugin-0.0.3.tgz","fileCount":5,"unpackedSize":53053,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@2digits%2foxlint-plugin@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQChOw2Qy99ar3nJLJesjsdptypFAZylguMKElc/9pM6uAIhAOCdvGH96G9Q3ZpU+SrhVoxRBvf3+LULprJweXoyMoCb"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3f1732fc-3730-4970-885a-3e8a27b4a2ae"}},"directories":{},"maintainers":[{"name":"2-digits-admin","email":"app@socialbrothers.nl"},{"name":"v1re","email":"niels.mentink@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/oxlint-plugin_0.0.3_1788867491070_0.1109888182031149"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-03T13:23:31.594Z","modified":"2026-09-08T11:38:11.565Z","0.0.0-tegami-trusted-publish-setup":"2026-09-03T13:23:32.034Z","0.0.1":"2026-09-03T13:24:29.182Z","0.0.3":"2026-09-08T11:38:11.205Z"},"license":"MIT","keywords":["2digits","oxlint","oxlint-plugin"],"repository":{"type":"git","url":"git+https://github.com/2digits-agency/configs.git","directory":"packages/oxlint-plugin"},"description":"Custom Oxlint rules for 2digits projects.","maintainers":[{"name":"2-digits-admin","email":"app@socialbrothers.nl"},{"name":"v1re","email":"niels.mentink@gmail.com"}],"readme":"# @2digits/oxlint-plugin\n\nCustom [Oxlint JavaScript plugin](https://oxc.rs/docs/guide/usage/linter/writing-js-plugins.html) rules used by\n`@2digits/oxlint-config`.\n\nThe recommended set is enabled by default by `@2digits/oxlint-config`. The opt-in `prefer-effect-filesystem` and\n`prefer-effect-path` rules are excluded because the configured `@effect/tsgo/nodeBuiltinImport` diagnostic already\nenforces those imports more broadly. To register the plugin directly:\n\n```ts\nimport { defineConfig } from 'oxlint';\n\nimport { recommendedRules } from '@2digits/oxlint-plugin';\n\nexport default defineConfig({\n  jsPlugins: [{ name: '2digits', specifier: import.meta.resolve('@2digits/oxlint-plugin') }],\n  rules: recommendedRules,\n});\n```\n\n## Rules\n\nThe package exports all rules as `rules`, their names as `RuleName`, and the default error-level configuration as\n`recommendedRules`.\n\n- Copied and adapted Effect practices: `avoid-data-tagged-error`, `ban-error-string`,\n  `effect-promise-vs-trypromise`, `no-logging-in-catch`, and `throw-in-effect-gen`.\n- Syntax-safe Effect diagnostics proposed in open `Effect-TS/tsgo` issues: the remaining `cors-*`, `dual-*`,\n  `no-*`, `prefer-*`, `preserve-*`, and `require-*` Effect rules.\n- Effect v4 API guidance for Array, DateTime, Duration, Encoding, FileSystem, Filter, Headers, Match, Path, and Url,\n  plus interruptible `Effect.tryPromise` thunks.\n- Effect and Alchemy import policy: namespace imports from PascalCase submodule entrypoints, canonical Effect aliases,\n  and no root-barrel module imports. `@effect/vitest` and lowercase unstable barrels are intentionally exempt.\n- Alchemy v2 practices: every `alchemy-*` rule.\n\nSee each rule's `meta.docs.url` for its upstream rule, issue, or framework documentation. Copied-code attribution is in\n[`NOTICE`](./NOTICE).\n\n## Automatic fixes\n\nRun `vp lint --fix` to apply fixes from `prefer-effect-duration`, `no-empty-effect-callback`,\n`no-effect-alchemy-barrel-imports`, `prefer-effect-alchemy-namespace-imports`,\n`alchemy-no-v1-worker-properties`, and `alchemy-no-deprecated-docker-constraints`.\nFixes skip ambiguous bindings, conflicting properties, and unsupported import references.\n\n## Adding a rule\n\nOxlint's JavaScript plugin API is currently alpha and does not expose type information. Keep rules syntax-safe and leave\nsemantic Effect checks to `@effect/tsgo` / `@effect/language-service`.\n\nOxfmt formats imports but does not enforce package-specific import architecture. The Effect language service's\n`namespaceImportPackages` and `importAliases` settings guide generated auto-imports only, so the plugin enforces the same\npolicy for handwritten imports.\n\n1. Add one rule file under `src/rules/alchemy` or `src/rules/effect` with `defineRule` through `defineSyntaxRule` or\n   `defineEffectRule`.\n2. Register it in `src/rules/index.ts`. `src/index.ts` automatically includes it in `recommendedRules`.\n3. Add a matching test file under `test/rules` with valid and invalid `RuleTester` cases.\n4. Run `vp test`, `vp check`, and `vp run build`.\n\n`defineEffectRule` resolves namespace and named imports from `effect`, `@effect/*`, and `alchemy/*` entrypoints, so rules\nshould match canonical API paths instead of hard-coding local import names.\n","readmeFilename":""}