{"_id":"@api-extractor-tools/change-detector","_rev":"5-4e9e305f3424253f3db9601cde0b9bd5","name":"@api-extractor-tools/change-detector","dist-tags":{"latest":"0.1.0","alpha":"0.1.0-alpha.2"},"versions":{"0.0.1":{"name":"@api-extractor-tools/change-detector","version":"0.0.1","keywords":[],"author":"","license":"MIT","_id":"@api-extractor-tools/change-detector@0.0.1","maintainers":[{"name":"northm","email":"michael.l.north@gmail.com"}],"bin":{"change-detector":"dist/cli.js"},"dist":{"shasum":"5c3fc2cba143f08e70fdc27e7f0071815ed67546","tarball":"https://registry.npmjs.org/@api-extractor-tools/change-detector/-/change-detector-0.0.1.tgz","fileCount":55,"integrity":"sha512-akBlvPigtrqm+9qRAPqc0BTv6Fszb5sYyttxQCnoG61V4GCar+RJym78dRurqf47STgN1wzdhws0JnCukBuQiA==","signatures":[{"sig":"MEYCIQCZPWrmi19YMjU4fSpMVRPoi/fVz7PmVqsA01kqYwKoWwIhANWJReRP2YKOpQmnluQ8az0NWK30qdDLEeyWmsKRzq4R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306814},"main":"dist/index.js","_from":"file:api-extractor-tools-change-detector-0.0.1.tgz","types":"dist/index.d.ts","scripts":{"test":"vitest run","build":"tsc","check":"pnpm check:eslint && pnpm check:typecheck-tests && pnpm check:api-report","check:eslint":"eslint src","check:api-report":"api-extractor run","generate:api-report":"api-extractor run --local --verbose","check:typecheck-tests":"tsc -p test/tsconfig.json"},"_npmUser":{"name":"northm","email":"michael.l.north@gmail.com"},"_resolved":"/tmp/242216933f6377ca5c0f77003676173c/api-extractor-tools-change-detector-0.0.1.tgz","_integrity":"sha512-akBlvPigtrqm+9qRAPqc0BTv6Fszb5sYyttxQCnoG61V4GCar+RJym78dRurqf47STgN1wzdhws0JnCukBuQiA==","_npmVersion":"10.8.2","description":"Detects changes between two API Extractor rollup files","directories":{},"_nodeVersion":"20.19.6","dependencies":{"typescript":"^5.9.3"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.15","@types/node":"^22.10.2","fixturify-project":"^7.1.3","@microsoft/api-extractor":"^7.55.1"},"_npmOperationalInternal":{"tmp":"tmp/change-detector_0.0.1_1765046410443_0.5056457286937805","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.0":{"name":"@api-extractor-tools/change-detector","version":"0.1.0-alpha.0","keywords":[],"author":"","license":"MIT","_id":"@api-extractor-tools/change-detector@0.1.0-alpha.0","maintainers":[{"name":"northm","email":"michael.l.north@gmail.com"}],"bin":{"change-detector":"dist/cli.js"},"dist":{"shasum":"2994a8c98b7d60a641dcd6563ecaed75dc0131cb","tarball":"https://registry.npmjs.org/@api-extractor-tools/change-detector/-/change-detector-0.1.0-alpha.0.tgz","fileCount":59,"integrity":"sha512-gDEvNIpbUTGqBZKDj4dv0KLheMIO5TitPNfbYi+lwgMm3Ovbnxe3b97/y2l+YIfKP8joMc0w5WCufpKBeqodfg==","signatures":[{"sig":"MEYCIQCKwOnNQVLK9bOaT1XAzld14iHQExCuOi1yyqd4+9EJcQIhAKvW02Zp9U4HWRDlVM+l/WWxNb19Z94u6tDG0XqWzFXl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102460},"main":"dist/index.js","_from":"file:api-extractor-tools-change-detector-0.1.0-alpha.0.tgz","types":"dist/change-detector-public.d.ts","scripts":{"test":"vitest run","build":"tsc","check":"pnpm check:eslint && pnpm check:typecheck-tests && pnpm check:api-report","check:eslint":"eslint src","test:coverage":"vitest run --coverage","check:api-report":"api-extractor run","generate:api-report":"api-extractor run --local --verbose","check:typecheck-tests":"tsc -p test/tsconfig.json"},"_npmUser":{"name":"northm","email":"michael.l.north@gmail.com"},"_resolved":"/tmp/395279293ffce2e1a07694904873d2ce/api-extractor-tools-change-detector-0.1.0-alpha.0.tgz","_integrity":"sha512-gDEvNIpbUTGqBZKDj4dv0KLheMIO5TitPNfbYi+lwgMm3Ovbnxe3b97/y2l+YIfKP8joMc0w5WCufpKBeqodfg==","_npmVersion":"10.8.2","description":"Detects changes between two API Extractor rollup files","directories":{},"_nodeVersion":"20.19.6","dependencies":{"typescript":"5.8.3","@api-extractor-tools/change-detector-core":"0.1.0-alpha.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.0.15","@types/node":"^22.10.2","fixturify-project":"^7.1.3","@vitest/coverage-v8":"^4.0.15","@microsoft/api-extractor":"^7.55.1"},"_npmOperationalInternal":{"tmp":"tmp/change-detector_0.1.0-alpha.0_1765153641646_0.3647552506653122","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.1":{"name":"@api-extractor-tools/change-detector","version":"0.1.0-alpha.1","keywords":[],"author":"","license":"MIT","_id":"@api-extractor-tools/change-detector@0.1.0-alpha.1","maintainers":[{"name":"northm","email":"michael.l.north@gmail.com"}],"bin":{"change-detector":"dist/cli.js"},"dist":{"shasum":"05621cd785fe52245287391b85e62ab96650c398","tarball":"https://registry.npmjs.org/@api-extractor-tools/change-detector/-/change-detector-0.1.0-alpha.1.tgz","fileCount":59,"integrity":"sha512-B2DXVyRAvTUIaPnMomi/JIN3sGCJTmp7f8fwCAOFlk/FH4zSo34lcnoe5YcM5DYZAccTMFsDOjotYGWk++wjAQ==","signatures":[{"sig":"MEQCIEu0sr1jaPP23Jp1m+oUD4LADkV1inI1GJmDJ//ZFncNAiBltMRuuAvp0gVa+ZkJMdjPfsFgCf8X8/FkYFtGv9EGyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106241},"main":"dist/index.js","_from":"file:api-extractor-tools-change-detector-0.1.0-alpha.1.tgz","types":"dist/change-detector-public.d.ts","scripts":{"test":"vitest run","build":"tsc","check":"pnpm check:eslint && pnpm check:typecheck-tests && pnpm check:api-report","check:eslint":"eslint src","test:coverage":"vitest run --coverage","check:api-report":"api-extractor run","generate:api-report":"api-extractor run --local --verbose","check:typecheck-tests":"tsc -p test/tsconfig.json"},"_npmUser":{"name":"northm","email":"michael.l.north@gmail.com"},"_resolved":"/tmp/6ce695728cf0fd4f5a37313a7df12e49/api-extractor-tools-change-detector-0.1.0-alpha.1.tgz","_integrity":"sha512-B2DXVyRAvTUIaPnMomi/JIN3sGCJTmp7f8fwCAOFlk/FH4zSo34lcnoe5YcM5DYZAccTMFsDOjotYGWk++wjAQ==","_npmVersion":"10.8.2","description":"Detects changes between two API Extractor rollup files","directories":{},"_nodeVersion":"20.19.6","dependencies":{"typescript":"5.8.3","@api-extractor-tools/change-detector-core":"0.1.0-alpha.1","@api-extractor-tools/input-processor-typescript":"0.1.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vitest":"^4.0.15","@types/node":"^22.10.2","fixturify-project":"^7.1.3","@vitest/coverage-v8":"^4.0.15","@microsoft/api-extractor":"^7.55.1"},"_npmOperationalInternal":{"tmp":"tmp/change-detector_0.1.0-alpha.1_1765481036628_0.15401812073754884","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.2":{"name":"@api-extractor-tools/change-detector","version":"0.1.0-alpha.2","keywords":[],"author":"","license":"MIT","_id":"@api-extractor-tools/change-detector@0.1.0-alpha.2","maintainers":[{"name":"northm","email":"michael.l.north@gmail.com"}],"bin":{"change-detector":"dist/cli.js"},"dist":{"shasum":"556ea38fc1d0a9784aa9c6b30725f6cc605c5043","tarball":"https://registry.npmjs.org/@api-extractor-tools/change-detector/-/change-detector-0.1.0-alpha.2.tgz","fileCount":60,"integrity":"sha512-jKDuhGoH0xVEHbjpxF09ktJ7XFEGnX19AReMOEkT+0S5FurGa2TYI3JKFflSHJf/7c9G4qhk+IoRiq+22YJaJA==","signatures":[{"sig":"MEYCIQDMaCzM1KV29FA4frMPH5r39XzwCMAEjF6D/70LuZttQAIhAOm35Cz/fhigMm2PmxsPXWmJkmgaLdeQYRUmeEZDREx8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131763},"main":"dist/index.js","_from":"file:api-extractor-tools-change-detector-0.1.0-alpha.2.tgz","types":"dist/change-detector-public.d.ts","scripts":{"test":"vitest run && pnpm test:types","build":"tsc && node ../declaration-file-normalizer/dist/cli.js dist/index.d.ts","check":"pnpm check:eslint && pnpm check:typecheck-tests && pnpm check:api-report","clean":"rm -rf dist","test:types":"tsd --files 'test/**/*.test-d.ts'","check:eslint":"eslint src test","test:coverage":"vitest run --coverage","check:api-report":"api-extractor run","generate:api-report":"api-extractor run --local --verbose","check:typecheck-tests":"tsc -p test/tsconfig.json"},"_npmUser":{"name":"northm","email":"michael.l.north@gmail.com"},"_resolved":"/tmp/68c8f2796199e7d7d1f66aca28048d4a/api-extractor-tools-change-detector-0.1.0-alpha.2.tgz","_integrity":"sha512-jKDuhGoH0xVEHbjpxF09ktJ7XFEGnX19AReMOEkT+0S5FurGa2TYI3JKFflSHJf/7c9G4qhk+IoRiq+22YJaJA==","_npmVersion":"10.8.2","description":"Detects changes between two API Extractor rollup files","directories":{},"_nodeVersion":"20.19.6","dependencies":{"typescript":"5.8.3","@api-extractor-tools/change-detector-core":"0.1.0-alpha.2","@api-extractor-tools/input-processor-typescript":"0.1.0-alpha.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsd":"^0.33.0","zod":"^4.1.13","vitest":"^4.0.15","@types/node":"^22.10.2","fixturify-project":"^7.1.3","@vitest/coverage-v8":"^4.0.15","@microsoft/api-extractor":"^7.55.1","@api-extractor-tools/declaration-file-normalizer":"0.0.1-alpha.2"},"_npmOperationalInternal":{"tmp":"tmp/change-detector_0.1.0-alpha.2_1767304041790_0.07108790936583165","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@api-extractor-tools/change-detector","version":"0.1.0","description":"Detects changes between two API Extractor rollup files","main":"dist/index.js","types":"dist/change-detector-public.d.ts","bin":{"change-detector":"dist/cli.js"},"keywords":[],"author":"","license":"MIT","dependencies":{"typescript":"5.8.3","@api-extractor-tools/change-detector-core":"0.1.0","@api-extractor-tools/input-processor-typescript":"0.1.0"},"devDependencies":{"@microsoft/api-extractor":"^7.55.1","@types/node":"^22.10.2","@vitest/coverage-v8":"^4.0.15","fixturify-project":"^7.1.3","tsd":"^0.33.0","vitest":"^4.0.15","zod":"^4.1.13","@api-extractor-tools/declaration-file-normalizer":"0.1.0"},"scripts":{"clean":"rm -rf dist","build":"tsc && node ../declaration-file-normalizer/dist/cli.js dist/index.d.ts","generate:api-report":"api-extractor run --local --verbose","test":"vitest run && pnpm test:types","test:types":"tsd --files 'test/**/*.test-d.ts'","test:coverage":"vitest run --coverage","check":"pnpm check:eslint && pnpm check:typecheck-tests && pnpm check:api-report","check:eslint":"eslint src test","check:typecheck-tests":"tsc -p test/tsconfig.json","check:api-report":"api-extractor run"},"_id":"@api-extractor-tools/change-detector@0.1.0","_integrity":"sha512-Xdv7577jYn+lupcArELt0p3QafeTr2B91Oi8Ev7ODjiQc73RwFcV2w5Ihg71H7DgEF/Kca9KUks4M5oKhPVzgQ==","_resolved":"/tmp/94ae5cea2a24baa7f995259ce4c56833/api-extractor-tools-change-detector-0.1.0.tgz","_from":"file:api-extractor-tools-change-detector-0.1.0.tgz","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-Xdv7577jYn+lupcArELt0p3QafeTr2B91Oi8Ev7ODjiQc73RwFcV2w5Ihg71H7DgEF/Kca9KUks4M5oKhPVzgQ==","shasum":"cb33f400bff156956ab5a6927ba76797c8dce8b7","tarball":"https://registry.npmjs.org/@api-extractor-tools/change-detector/-/change-detector-0.1.0.tgz","fileCount":60,"unpackedSize":139541,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAx6mQfuA/0aNxCXRIRtF5zUoO4WPMt4Kg0kmtKDt5OYAiAQf/i6rrR1EioY5+aD5fmh1sopT6ViG8sdI53si79rJA=="}]},"_npmUser":{"name":"northm","email":"michael.l.north@gmail.com"},"directories":{},"maintainers":[{"name":"northm","email":"michael.l.north@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/change-detector_0.1.0_1771015666340_0.7506066356696499"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-06T18:40:10.393Z","modified":"2026-02-13T20:47:46.611Z","0.0.1":"2025-12-06T18:40:10.590Z","0.1.0-alpha.0":"2025-12-08T00:27:21.786Z","0.1.0-alpha.1":"2025-12-11T19:23:56.776Z","0.1.0-alpha.2":"2026-01-01T21:47:21.942Z","0.1.0":"2026-02-13T20:47:46.496Z"},"license":"MIT","keywords":[],"description":"Detects changes between two API Extractor rollup files","maintainers":[{"name":"northm","email":"michael.l.north@gmail.com"}],"readme":"# Change detector\n\n[![npm version](https://img.shields.io/npm/v/%40api-extractor-tools%2Fchange-detector)](https://www.npmjs.com/package/@api-extractor-tools/change-detector)\n\nThis hybrid package (CLI / library) analyzes a pair of declaration file rollups generated by `@microsoft/api-extractor` and provides a detailed report of the degree of change found between them. The intended use of this tool is to provide library authors with detailed guidance (and actionable explanations) around how they should represent a given change using [Semantic Versioning](https://semver.org/).\n\n## Version comparison example\n\nIn a given `git` repo, a developer is working on a publishing a new version of their library. For now, let's ignore how we obtain them, but we end up with `.d.ts` rollups for\n\n- The `public` version of their library at `v1.1.0`\n- The `public` version of their library at a yet-to-be-versioned next release they're currently preparing.\n\nIf, through analysis of the old and new `.d.ts` rollups, we found\n\n```ts\n// old\n/**\n * Greet a planet!\n * @public\n */\nexport function greet(planet: 'earth' | 'mars'): string\n```\n\nand\n\n```ts\n// new\n/**\n * Greet a planet!\n * @public\n */\nexport function greet(planet: 'earth' | 'mars', prefix?: string): string\n```\n\nWe could regard recommend this change as compatible with a MINOR release. New functionality has been added and so the API signature changed, but it should not interfere with established use of the library. We'd recommend a version of `1.2.0`\n\nBut if instead in the new rollup we found\n\n```ts\n// new\n/**\n * Greet a planet!\n * @public\n */\nexport function greet(planet: 'earth' | 'mars', prefix: string): string\n```\n\nThe fact that the new parameter is not optional means this should be modeled as a MAJOR release. Established users who engage with this function must change their code to align with the new contract.\n\nThese comparisons should be made using the TypeScript compiler API, through performing a type equivalence check on a per-exported-symbol basis.\n\nUltimately this tool should generate a very clear report, describing what the overall recommendation of what the version expression of the yet-to-be-published version of the library should be, and a clear list of the changes that were identified and how they were incorporated into arriving at the recommendation.\n","readmeFilename":"README.md"}