{"_id":"@bryophyte/analyser","name":"@bryophyte/analyser","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@bryophyte/analyser","version":"0.1.0","private":false,"type":"module","description":"Static analysis for react components","keywords":["analysis","typescript"],"main":"dist/cli.cjs","bin":{"bryophyte":"dist/cli.cjs"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"sideEffects":false,"scripts":{"build:lib":"tsup src/index.ts --dts --format esm --target node20 --sourcemap --clean --external ts-morph","build:api":"tsup src/api.ts --format esm --target node20 --sourcemap --external ts-morph","build:tui":"tsup src/tui.tsx --format esm --target node20 --sourcemap --external ts-morph --external react --external react-dom --external ink","build:cli":"tsup src/cli.ts --format cjs --target node20 --sourcemap --external ts-morph","build":"bun run build:lib && bun run build:api && bun run build:tui && bun run build:cli","dev":"tsup src/index.ts --dts --format esm --watch --target node20 --external ts-morph","prepack":"tsup src/cli.ts --format cjs --target node20 --clean --external ts-morph","publish:dry-run":"npm publish --dry-run --access public","test":"bun test","typecheck":"tsc --noEmit","clean":"rimraf dist"},"dependencies":{"@clack/prompts":"^0.7.0","@mermaid-js/mermaid-cli":"^10.9.0","@types/react":"^19.2.7","@types/react-dom":"^19.2.3","commander":"^12.1.0","fast-glob":"^3.3.2","ink":"^6.5.1","ink-select-input":"^6.2.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","react":"^19.2.0","react-dom":"^19.2.0","ts-morph":"^27.0.0"},"devDependencies":{"@bryophyte/types":"workspace:*","@types/node":"^20.14.10","tsup":"^8.0.0"},"peerDependencies":{"typescript":"^5.5.3"},"_id":"@bryophyte/analyser@0.1.0","gitHead":"34f2bc148ad294bc0cab6146e3c56a3656db539c","_nodeVersion":"22.14.0","_npmVersion":"11.1.0","dist":{"integrity":"sha512-PvNUjNUH5JVFb7Q9OvOFEgmEYOj5ydffgQ/hc4fN4Y0gGYv1QsGJeRp/60NaVKOC1obExe3/tlJ8pfCSjGZofQ==","shasum":"0d4729fca67f05eb5c3cb17039e940e54406fdb1","tarball":"https://registry.npmjs.org/@bryophyte/analyser/-/analyser-0.1.0.tgz","fileCount":3,"unpackedSize":76624,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBLEfcan4VTcFPKSiQiG9tTr+zeL/MneWSYvlSgSFDQ6AiBpCxZGRhMAWCeW5LJz08bwPFepJ4YaB9XXkxfpqZDZgg=="}]},"_npmUser":{"name":"muell_morty","email":"maarten.schmidt98@gmail.com"},"directories":{},"maintainers":[{"name":"muell_morty","email":"maarten.schmidt98@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/analyser_0.1.0_1771175674520_0.5548142369989439"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-15T17:14:34.460Z","0.1.0":"2026-02-15T17:14:34.668Z","modified":"2026-02-15T17:14:34.843Z"},"maintainers":[{"name":"muell_morty","email":"maarten.schmidt98@gmail.com"}],"description":"Static analysis for react components","keywords":["analysis","typescript"],"readme":"# Bryophyte Analyser\n\nBryophyte Analyser is a CLI/TUI for React + TypeScript codebases that discovers exported components, records prop usage, and traces where components are used across packages.\n\n## Quick Start\n\n### Prerequisites\n\n- Bun installed (`bun --version`)\n- A project or monorepo with `package.json` files\n\n### 1) Install\n\nInside this repo:\n\n```bash\nbun install\n```\n\n### 2) Initialize Bryophyte once at your workspace root\n\n```bash\nbunx bryophyte init .\n```\n\nThis creates `.bryophyte/` and a central analyses folder at `.bryophyte/analyses/`.\n\n### 3) Analyze one or more packages\n\n```bash\nbunx bryophyte analyse packages/ui\nbunx bryophyte analyse packages/app\n```\n\nEach analyzed package is written as a JSON file to `.bryophyte/analyses/<package-name>.json`.\n\n### 4) Search component usage in a target package\n\n```bash\nbunx bryophyte search Button packages/app --svg\n```\n\nThis prints a Mermaid graph and can optionally write `.mmd`/`.svg` output.\n\n## Command Reference\n\n### `bryophyte init [rootPath]`\n\nInitialize (or reuse) a central `.bryophyte` folder.\n\n```bash\nbunx bryophyte init .\n```\n\n### `bryophyte analyse <projectPath>`\n\nAnalyze exported React components in a project.\n\n```bash\nbunx bryophyte analyse packages/ui\n```\n\nWhat it records:\n\n- component exports (default/named; function/arrow/class/variable)\n- extracted prop definitions\n- component usages and prop usage metadata (including snippets and context)\n\n### `bryophyte search <componentName> <targetPath>`\n\nSearch for usage flow of a previously analyzed component.\n\n```bash\nbunx bryophyte search Button packages/app -o button-usage.mmd --svg\n```\n\nUseful flags:\n\n- `-o, --out <file>` write Mermaid graph to file\n- `--svg [file]` render SVG graph\n- `--list` choose package when multiple packages export the same component\n- `--skip-intermediate` collapse intermediate chain nodes\n\n## Typical Workflow\n\n```bash\n# one-time setup\nbunx bryophyte init .\n\n# analyze source and target packages\nbunx bryophyte analyse packages/ui\nbunx bryophyte analyse packages/app\n\n# trace one component into app routes\nbunx bryophyte search Button packages/app --svg\n```\n\n## Notes\n\n- Search relies on analysis files in `.bryophyte/analyses/`; run `analyse` before `search`.\n- Route traversal stops when a path contains a `routes` segment.\n- Path aliases and re-exports are supported with best-effort resolution.\n","readmeFilename":"README.md","_rev":"1-7ce823658782653d66f9ab528362cb29"}