{"_id":"@artsy/changelog","name":"@artsy/changelog","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@artsy/changelog","version":"0.1.0","description":"Shared parser for Artsy PR-description changelog sections (used by eigen and release-lookout).","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"clean":"rm -rf dist","build":"npm run clean && tsc -p .","prepublishOnly":"npm run build","watch":"tsc -w -p .","test":"jest","type-check":"tsc --noEmit --pretty","release":"auto shipit"},"repository":{"type":"git","url":"git+https://github.com/artsy/artsy-changelog.git"},"keywords":["artsy","changelog","release"],"author":{"name":"Mounir Dhahri","email":"mounir.dhahri@artsymail.com"},"contributors":[{"name":"Art.sy Inc","email":"it@artsymail.com"}],"license":"MIT","bugs":{"url":"https://github.com/artsy/artsy-changelog/issues"},"homepage":"https://github.com/artsy/artsy-changelog#readme","devDependencies":{"@types/jest":"^29.5.13","jest":"^29.7.0","ts-jest":"^29.2.5","typescript":"4.8.4"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"_id":"@artsy/changelog@0.1.0","gitHead":"9ed08895fb330725ea9d01363c54f749019d6ad1","_nodeVersion":"24.7.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-nzWF92kF+voLhtkAepnUhszM3xfzwKkrh/b8pb+WQFNpr38hfN7pQhPRCTC0jNqo7U70d0hqokyc0orqES/Dvw==","shasum":"ab8c9d866298bd99749bc4d0bc0983655f37b65a","tarball":"https://registry.npmjs.org/@artsy/changelog/-/changelog-0.1.0.tgz","fileCount":8,"unpackedSize":6737,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDx5wMtdv+rXypykkd61r3lbyrxu3Pf3m1I9aItqf/JpwIhAPZnMnIJABOgzZTCznH6JnNgDbMIV/Zbjhhv6zK93wzW"}]},"_npmUser":{"name":"artsy-engineering","email":"opensource@artsymail.com"},"directories":{},"maintainers":[{"name":"artsy-engineering","email":"opensource@artsymail.com"},{"name":"anandaroop","email":"anandaroop.roy+npm@gmail.com"},{"name":"mzikherman","email":"mzikherman@gmail.com"},{"name":"dblandin","email":"dblandin@gmail.com"},{"name":"joeyaghion","email":"joey@artsymail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/changelog_0.1.0_1782477621561_0.8624208608250536"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-26T12:40:21.381Z","0.1.0":"2026-06-26T12:40:21.695Z","modified":"2026-06-26T12:40:22.048Z"},"maintainers":[{"name":"artsy-engineering","email":"opensource@artsymail.com"},{"name":"anandaroop","email":"anandaroop.roy+npm@gmail.com"},{"name":"mzikherman","email":"mzikherman@gmail.com"},{"name":"dblandin","email":"dblandin@gmail.com"},{"name":"joeyaghion","email":"joey@artsymail.com"}],"description":"Shared parser for Artsy PR-description changelog sections (used by eigen and release-lookout).","homepage":"https://github.com/artsy/artsy-changelog#readme","keywords":["artsy","changelog","release"],"repository":{"type":"git","url":"git+https://github.com/artsy/artsy-changelog.git"},"contributors":[{"name":"Art.sy Inc","email":"it@artsymail.com"}],"author":{"name":"Mounir Dhahri","email":"mounir.dhahri@artsymail.com"},"bugs":{"url":"https://github.com/artsy/artsy-changelog/issues"},"license":"MIT","readme":"# @artsy/changelog\n\nShared parser for Artsy's PR-description changelog convention. A single source of truth used by\nboth [eigen](https://github.com/artsy/eigen) (Danger + `generate-changelog`) and\n[release-lookout](https://github.com/artsy/release-lookout) (release-candidate PR descriptions).\n\nArtsy PRs declare release notes in four `####`-headed sections inside the PR body:\n\n```\n#### Cross-platform user-facing changes\n#### iOS user-facing changes\n#### Android user-facing changes\n#### Dev changes\n```\n\nThis package parses a raw PR body into a structured result. It is intentionally **I/O-free** —\nfetching PRs / determining ranges is left to each consumer.\n\n## Usage\n\n```ts\nimport { parsePRDescription, changelogTemplateSections } from \"@artsy/changelog\"\n\nconst result = parsePRDescription(pr.body)\n\nswitch (result.type) {\n  case \"no_changes\": // PR contains `#nochangelog`\n    break\n  case \"error\": // no changelog sections found / all empty\n    break\n  case \"changes\":\n    result.crossPlatformUserFacingChanges // string[]\n    result.iOSUserFacingChanges\n    result.androidUserFacingChanges\n    result.devChanges\n    break\n}\n```\n\n## API\n\n- `parsePRDescription(body: string): ParseResult` — parse a PR body.\n- `ParseResult` — `{ type: \"no_changes\" } | { type: \"error\" } | ({ type: \"changes\" } & ParseResultChanges)`.\n- `changelogTemplateSections` — the section-key → section-title map.\n\n## Development\n\n```sh\nyarn        # install\nyarn test   # jest\nyarn build  # tsc → dist\n```\n","readmeFilename":"README.md","_rev":"1-847ae59d9f88f488044edc3ba6778f4f"}