{"_id":"@dry-lint/dry-lint","_rev":"2-de29bd9bf4f5b542e01d8b37599ee4c8","name":"@dry-lint/dry-lint","dist-tags":{"latest":"3.0.0"},"versions":{"2.0.0":{"name":"@dry-lint/dry-lint","version":"2.0.0","_id":"@dry-lint/dry-lint@2.0.0","maintainers":[{"name":"lwensveen","email":"lodewijkwensveen@gmail.com"}],"dist":{"shasum":"a78643ca870cc08ad7de0d20adb83c9d215f4e46","tarball":"https://registry.npmjs.org/@dry-lint/dry-lint/-/dry-lint-2.0.0.tgz","fileCount":38,"integrity":"sha512-lJqiGFj50Nxkwi5EErtP2V9YYynzFkpNQRuwX/ef3BP9O65BFdzCKRvaCo4J4/+sgIHKPuLO7afIGIp7szIlNA==","signatures":[{"sig":"MEUCIQCiIJlpPqBrXGZT9UGzhJ3VNTUjFoOCSRk0VSJqnSoX5wIgUmUWGls9BFdEBZsPsEEn6wKMlg1S1SYnmZqF86YxZuE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29925},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./registry":{"types":"./dist/registry.d.ts","default":"./dist/registry.js"},"./ts-project":{"types":"./dist/ts-project.d.ts","default":"./dist/ts-project.js"}},"gitHead":"7487540294c449b5fd0fd150c013572bec4c2803","private":false,"scripts":{"lint":"eslint \"src/**/*.{ts,tsx}\"","size":"pkg-size .","test":"vitest run","build":"bun run clean && tsc -b","clean":"bunx rimraf dist/* dist tsconfig.tsbuildinfo","test:ci":"vitest run","test:watch":"vitest","check-types":"tsc -b --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"lwensveen","actor":{"name":"lwensveen","type":"user","email":"lodewijkwensveen@gmail.com"},"email":"lodewijkwensveen@gmail.com"},"_npmVersion":"11.4.2","description":"Core singleton registry and shared utilities for Dry Lint plugins.","directories":{},"_nodeVersion":"22.15.1","dependencies":{"ts-morph":"^26.0.0","fast-levenshtein":"^3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.30.1","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^24.0.11","@types/fast-levenshtein":"^0.0.4"},"peerDependencies":{"@dry-lint/dry-lint":"2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dry-lint_2.0.0_1752005050408_0.9571265638624784","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@dry-lint/dry-lint","description":"Core singleton registry and shared utilities for Dry Lint plugins.","version":"3.0.0","dependencies":{"fast-json-stable-stringify":"^2.1.0","fast-levenshtein":"^3.0.0","ts-morph":"^26.0.0"},"devDependencies":{"@types/cli-progress":"^3.11.6","@types/fast-levenshtein":"^0.0.4","@types/node":"^24.0.13","cli-progress":"^3.12.0","esbuild":"^0.25.6","eslint":"^9.31.0","rimraf":"^6.0.1","typescript":"^5.8.3","vitest":"^3.2.4"},"engines":{"node":">=18"},"exports":{".":"./dist/index.js"},"main":"dist/index.js","peerDependencies":{"@dry-lint/dry-lint":"3.0.0"},"private":false,"publishConfig":{"access":"public"},"scripts":{"build":"tsc -b","check-types":"tsc -b --noEmit","clean":"rimraf -g 'dist/*' dist tsconfig.tsbuildinfo","lint":"eslint \"src/**/*.{ts,tsx}\"","size":"pkg-size .","test":"vitest run","test:ci":"vitest run","test:coverage":"vitest run --coverage","test:watch":"vitest"},"type":"module","types":"dist/index.d.ts","_id":"@dry-lint/dry-lint@3.0.0","gitHead":"f1ccfd8cc0f7abc40e131221bd9e49c5d844d3f9","_nodeVersion":"22.15.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-9/vAPRXHoBuxv5OW5pfFX427iUF5N8lx/8/bQayYZx1ZhHlWveqAl/hd/x8t2G3H6QVHNzfgvRtLHs3COB6rrg==","shasum":"532f90de9cf2db44befc626ba678aa593c315e04","tarball":"https://registry.npmjs.org/@dry-lint/dry-lint/-/dry-lint-3.0.0.tgz","fileCount":46,"unpackedSize":35339,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDy1ThxbzXpihtNti1of/69FTUUf10nRmMG4l28rrBhxQIhAJVEmuwFUss1bFNnM3nmw5yLFYSqqhjJkVh4FnzQpsz7"}]},"_npmUser":{"name":"lwensveen","email":"lodewijkwensveen@gmail.com"},"directories":{},"maintainers":[{"name":"lwensveen","email":"lodewijkwensveen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dry-lint_3.0.0_1752358155648_0.46783939137171493"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-08T20:04:10.316Z","modified":"2025-07-12T22:09:16.364Z","2.0.0":"2025-07-08T20:04:10.614Z","3.0.0":"2025-07-12T22:09:15.837Z"},"description":"Core singleton registry and shared utilities for Dry Lint plugins.","maintainers":[{"name":"lwensveen","email":"lodewijkwensveen@gmail.com"}],"readme":"# `@dry-lint/dry-lint`\n\n[![CI](https://github.com/dry-lint/dry-lint/actions/workflows/ci.yml/badge.svg)](https://github.com/dry-lint/dry-lint/actions/workflows/ci.yml) [![Docs](https://img.shields.io/badge/docs-%E2%9C%93-blue)](https://dry-lint.github.io/dry-lint/) [![License](https://img.shields.io/npm/l/@dry-lint/cli)](https://github.com/dry-lint/dry-lint/blob/main/LICENSE)\n\nThe **core engine** and registry for [**dry-lint**](https://github.com/dry-lint/dry-lint).\nProvides the singleton extractor registry, structural similarity algorithms, and `ts-morph` project — powering all official plugins and the CLI.\n\n---\n\n## Install\n\nYou usually **don’t install `@dry-lint/dry-lint` directly**.\nIt’s included automatically when you install the CLI or any official plugins.\n\nExample:\n\n```bash\n# Example: TypeScript + Zod plugins + CLI\nbun add -D @dry-lint/cli @dry-lint/typescript @dry-lint/zod\n```\n\nThe CLI depends on `@dry-lint/dry-lint` under the hood.\n\n---\n\n## How it works\n\n`@dry-lint/dry-lint` exposes the core APIs:\n\n```ts\nimport { registerExtractor, findDuplicates } from '@dry-lint/dry-lint';\n\nregisterExtractor((filePath, fileText) => {\n  // Return an array of declarations for this file\n  return [];\n});\n\nconst groups = await findDuplicates(['src/**/*.ts'], { threshold: 0.9 });\n```\n\nPlugins use `registerExtractor` to plug in domain-specific parsers.\nThe CLI and custom Node scripts use `findDuplicates` to orchestrate extraction, grouping, and output.\n\n---\n\n## What replaced `@dry-lint/core`?\n\n- The old `@dry-lint/core` is fully merged into this package.\n- One singleton registry, one `ts-morph` project, no duplicate states.\n- All plugins and the CLI now share the same stable core.\n\nIf you see any instructions to install `@dry-lint/core`, just use `@dry-lint/dry-lint` instead.\n\n---\n\n## Resources\n\n- [Monorepo & Plugin List](https://github.com/dry-lint/dry-lint#-packages)\n- [Official CLI](https://www.npmjs.com/package/@dry-lint/cli)\n- [Full Documentation](https://dry-lint.github.io/dry-lint/)\n\n---\n\n## License\n\nMIT — see [LICENSE](https://github.com/dry-lint/dry-lint/blob/main/LICENSE).\n","readmeFilename":"README.md"}