{"_id":"@braccato/provider-blyrics","_rev":"6-1f3965035658d988478afe8b4a8201cc","name":"@braccato/provider-blyrics","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.0":{"name":"@braccato/provider-blyrics","version":"0.1.0","keywords":["lyrics","provider","lrclib","musixmatch"],"license":"MIT","_id":"@braccato/provider-blyrics@0.1.0","maintainers":[{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"}],"homepage":"https://github.com/better-lyrics/braccato","bugs":{"url":"https://github.com/better-lyrics/braccato/issues"},"dist":{"shasum":"f6f6f1ff9ea475f384e7278ca449187f0841d013","tarball":"https://registry.npmjs.org/@braccato/provider-blyrics/-/provider-blyrics-0.1.0.tgz","fileCount":4,"integrity":"sha512-imHAws+Oq4mMzndjO3M/w0RALMrRaR8DDGZusdrWeaAHTuymvPTkhWmapd9OAY/k8K2xYHML5OJH2LVsh+ting==","signatures":[{"sig":"MEQCIDAsyPAdAuEf8yZhcGxRbndS9IdPdmba7BWSdwzqbnLvAiAIYFMb9H++O80B+K0zHD0s0PWJxiM4LwFS8nQFnRy/uw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10653},"main":"dist/index.js","type":"module","_from":"file:braccato-provider-blyrics-0.1.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"},"_resolved":"/private/var/folders/_r/j57rksd52ps9r_z_c5d8p86r0000gn/T/d5c40031e2c0d2b8df729278d5970a35/braccato-provider-blyrics-0.1.0.tgz","_integrity":"sha512-imHAws+Oq4mMzndjO3M/w0RALMrRaR8DDGZusdrWeaAHTuymvPTkhWmapd9OAY/k8K2xYHML5OJH2LVsh+ting==","repository":{"url":"git+https://github.com/better-lyrics/braccato.git","type":"git","directory":"packages/provider-blyrics"},"_npmVersion":"10.9.3","description":"Lyrics provider chain with priority and validation","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"@braccato/parsers":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.0.4","typescript":"^5.7.3","vite-plugin-dts":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/provider-blyrics_0.1.0_1773177593389_0.7889891372785647","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@braccato/provider-blyrics","version":"0.1.1","keywords":["lyrics","provider","lrclib","musixmatch"],"license":"MIT","_id":"@braccato/provider-blyrics@0.1.1","maintainers":[{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"}],"homepage":"https://github.com/better-lyrics/braccato","bugs":{"url":"https://github.com/better-lyrics/braccato/issues"},"dist":{"shasum":"a0a90a1d3581cf9ff5ede52b9f19a1097765e59a","tarball":"https://registry.npmjs.org/@braccato/provider-blyrics/-/provider-blyrics-0.1.1.tgz","fileCount":4,"integrity":"sha512-81WuXatlXzuRssEADmx0ReoN42E2mDIGaKZqRHa1Z9WlbULwZfJr1w+g8zyEQpHhPDWwpU/krDcu6/q1J9AEag==","signatures":[{"sig":"MEUCIQDkg+R1qiGBzJgj5Fa9yB4TlkO411WKwf2TA8DCcuI3zwIgcE928yVNgx+j3F4PJ2U3AQbrNRhX8Eu11Af9ZjKf6kg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10663},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d66811954321f61c8c85e6647462bfc333e47586","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"},"repository":{"url":"git+https://github.com/better-lyrics/braccato.git","type":"git","directory":"packages/provider-blyrics"},"_npmVersion":"10.9.3","description":"Lyrics provider chain with priority and validation","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"@braccato/parsers":"workspace:^"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.0.4","typescript":"^5.7.3","vite-plugin-dts":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/provider-blyrics_0.1.1_1773177891373_0.9584186841757234","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@braccato/provider-blyrics","version":"0.1.2","keywords":["lyrics","provider","lrclib","musixmatch"],"license":"MIT","_id":"@braccato/provider-blyrics@0.1.2","maintainers":[{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"}],"homepage":"https://braccato.boidu.dev","bugs":{"url":"https://github.com/better-lyrics/braccato/issues"},"dist":{"shasum":"167186af4dfab79cc244aa97035c1f085ab63571","tarball":"https://registry.npmjs.org/@braccato/provider-blyrics/-/provider-blyrics-0.1.2.tgz","fileCount":5,"integrity":"sha512-wt3vuUAtoAOeQqGzkmQU0HuJZ3IUl02Hsa6qNQunOma4M9tO2NLOufATaHki2Uo7KNpNKvzKxhsxRUVu8J3NcQ==","signatures":[{"sig":"MEQCIG8lQJM7TcRcIXBPQQ143XEzvIFdrDPXsRsRkmtZ6JJDAiAE96UsxqgNfIWQRPK0+7apJQmZj2XOawJLFmzRJ0hF0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11786},"main":"dist/index.js","type":"module","_from":"file:braccato-provider-blyrics-0.1.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"},"_resolved":"/private/var/folders/_r/j57rksd52ps9r_z_c5d8p86r0000gn/T/c06a69e816b7a46d5cd3f04b8baf7067/braccato-provider-blyrics-0.1.2.tgz","_integrity":"sha512-wt3vuUAtoAOeQqGzkmQU0HuJZ3IUl02Hsa6qNQunOma4M9tO2NLOufATaHki2Uo7KNpNKvzKxhsxRUVu8J3NcQ==","repository":{"url":"git+https://github.com/better-lyrics/braccato.git","type":"git","directory":"packages/provider-blyrics"},"_npmVersion":"10.9.3","description":"Lyrics provider chain with priority and validation","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"@braccato/parsers":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.0.4","typescript":"^5.7.3","vite-plugin-dts":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/provider-blyrics_0.1.2_1778708945056_0.46915571117814214","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@braccato/provider-blyrics","version":"0.2.0","keywords":["lyrics","provider","lrclib","musixmatch"],"license":"MIT","_id":"@braccato/provider-blyrics@0.2.0","maintainers":[{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"}],"homepage":"https://braccato.boidu.dev","bugs":{"url":"https://github.com/better-lyrics/braccato/issues"},"dist":{"shasum":"17d14b864506c55d3334d4c2321f25429ba5c979","tarball":"https://registry.npmjs.org/@braccato/provider-blyrics/-/provider-blyrics-0.2.0.tgz","fileCount":5,"integrity":"sha512-7wHp+KUmRr8Mr4usf2q956VMIFZI/Yg3dg2n18jhW7qk82kXPjcUAI+6eBkwZBaZBD0r+QfbjBZD9/8HzXupgA==","signatures":[{"sig":"MEYCIQDSxTPhb/UbIzXOk73H1CK3Yzh+uE4vpjuRJbVkW5Dj9gIhALaZuGF+lRWQ4RgFsUD0kDqUJybLcrFGQWIhTGjTspON","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11786},"main":"dist/index.js","type":"module","_from":"file:braccato-provider-blyrics-0.2.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"},"_resolved":"/private/var/folders/_r/j57rksd52ps9r_z_c5d8p86r0000gn/T/2d4ce4e5d8dae2edfff0232d73b99755/braccato-provider-blyrics-0.2.0.tgz","_integrity":"sha512-7wHp+KUmRr8Mr4usf2q956VMIFZI/Yg3dg2n18jhW7qk82kXPjcUAI+6eBkwZBaZBD0r+QfbjBZD9/8HzXupgA==","repository":{"url":"git+https://github.com/better-lyrics/braccato.git","type":"git","directory":"packages/provider-blyrics"},"_npmVersion":"10.9.7","description":"Lyrics provider chain with priority and validation","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"@braccato/parsers":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.0.4","typescript":"^5.7.3","vite-plugin-dts":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/provider-blyrics_0.2.0_1785837803715_0.5512112731844518","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@braccato/provider-blyrics","version":"0.2.1","keywords":["lyrics","provider","lrclib","musixmatch"],"license":"MIT","_id":"@braccato/provider-blyrics@0.2.1","maintainers":[{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"}],"homepage":"https://braccato.boidu.dev","bugs":{"url":"https://github.com/better-lyrics/braccato/issues"},"dist":{"shasum":"ff2d666c2a1ed25890bb120894a64e26925f041e","tarball":"https://registry.npmjs.org/@braccato/provider-blyrics/-/provider-blyrics-0.2.1.tgz","fileCount":5,"integrity":"sha512-DzricmVdIgInpP/NAj0Ad9AM0gvKxPHClUvnZCRe+syQIH59/8w4LnDZGaPR3fIbP8iMZA2RYYRKP+Nff2Mx4g==","signatures":[{"sig":"MEUCIQDQxI3F/1zCXwLPYxiyPlEmtHk1sHqwW3x6i5+YxpM5ewIgHszJ20rHgeKP+/rGJ9/gIkESDOH9xnHPoiMzOwniAXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15929},"main":"dist/index.js","type":"module","_from":"file:braccato-provider-blyrics-0.2.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"},"_resolved":"/private/var/folders/_r/j57rksd52ps9r_z_c5d8p86r0000gn/T/8c4fc830487a2b62a24971d3ac04cc0d/braccato-provider-blyrics-0.2.1.tgz","_integrity":"sha512-DzricmVdIgInpP/NAj0Ad9AM0gvKxPHClUvnZCRe+syQIH59/8w4LnDZGaPR3fIbP8iMZA2RYYRKP+Nff2Mx4g==","repository":{"url":"git+https://github.com/better-lyrics/braccato.git","type":"git","directory":"packages/provider-blyrics"},"_npmVersion":"10.9.7","description":"Lyrics provider chain with priority and validation","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","dependencies":{"@braccato/parsers":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.0.4","typescript":"^5.7.3","vite-plugin-dts":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/provider-blyrics_0.2.1_1788381935534_0.4740400551507411","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"_id":"@braccato/provider-blyrics@0.2.2","bugs":{"url":"https://github.com/better-lyrics/braccato/issues"},"dist":{"shasum":"457abcd1b8b7868c700c79f7a1fffb9502c801ef","tarball":"https://registry.npmjs.org/@braccato/provider-blyrics/-/provider-blyrics-0.2.2.tgz","fileCount":5,"integrity":"sha512-jn4cZVp13Uj5uANN5018M5PUfHmighEY93x9txB9RRUvl8YNbjBzn4KNUOrMU2m1ln0aWrqccVp9yTgxrhtSFg==","signatures":[{"sig":"MEUCIQDel3c2tpImNavE498KjMws/QAEz1hOMxYC/CGZysZSpQIgHF6VZ9WXkGrXE49bwpNOw43mCm8eZtYdQAZPPCj0l88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCPEE+0OwHkJ7Hk0MKZkzvqqkUatan6KEsdTq+pBcFF5gIgcKUBChvIca8fMboBmSPqYct9l53xCFIrJeXBSFRvBUw="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@braccato%2fprovider-blyrics@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16423},"main":"dist/index.js","name":"@braccato/provider-blyrics","type":"module","_from":"file:braccato-provider-blyrics-0.2.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"license":"MIT","scripts":{"dev":"vite build --watch","test":"vitest run","build":"vite build","typecheck":"tsc --noEmit","test:watch":"vitest"},"version":"0.2.2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee86674c-36a8-4b25-adf8-ed5f570cfbce"}},"homepage":"https://braccato.boidu.dev","keywords":["lyrics","provider","lrclib","musixmatch"],"_resolved":"/tmp/70bc0f2aa9d4c8cd4ae793b9cc1b0aae/braccato-provider-blyrics-0.2.2.tgz","_integrity":"sha512-jn4cZVp13Uj5uANN5018M5PUfHmighEY93x9txB9RRUvl8YNbjBzn4KNUOrMU2m1ln0aWrqccVp9yTgxrhtSFg==","repository":{"url":"git+https://github.com/better-lyrics/braccato.git","type":"git","directory":"packages/provider-blyrics"},"_npmVersion":"11.19.0","description":"Lyrics provider chain with priority and validation","directories":{},"maintainers":[{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"@braccato/parsers":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.7","vitest":"^3.0.4","typescript":"^5.7.3","vite-plugin-dts":"^4.3.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/provider-blyrics_0.2.2_1790352957944_0.6263247049822487"}}},"time":{"created":"2026-03-10T21:19:53.285Z","modified":"2026-09-25T16:15:58.409Z","0.1.0":"2026-03-10T21:19:53.538Z","0.1.1":"2026-03-10T21:24:51.542Z","0.1.2":"2026-05-13T21:49:05.245Z","0.2.0":"2026-08-04T10:03:23.873Z","0.2.1":"2026-09-02T20:45:35.681Z","0.2.2":"2026-09-25T16:15:58.041Z"},"bugs":{"url":"https://github.com/better-lyrics/braccato/issues"},"license":"MIT","homepage":"https://braccato.boidu.dev","keywords":["lyrics","provider","lrclib","musixmatch"],"repository":{"url":"git+https://github.com/better-lyrics/braccato.git","type":"git","directory":"packages/provider-blyrics"},"description":"Lyrics provider chain with priority and validation","maintainers":[{"name":"boidushya","email":"boidushyabhattacharya@gmail.com"}],"readme":"# @braccato/provider-blyrics\n\nLyrics provider chain with priority ordering and validation. Fetch synchronized lyrics from multiple sources with automatic fallback.\n\nThe [provider guide](https://docs.betterlyrics.org/braccato/provider) walks through setting up a chain with fallback across providers.\n\n## Install\n\n```bash\nnpm i @braccato/provider-blyrics\n```\n\n## Usage\n\n```typescript\nimport { ProviderChain, createLRCLibSyncedProvider } from \"@braccato/provider-blyrics\";\n\nconst chain = new ProviderChain();\nchain.register(\"lrclib-synced\", createLRCLibSyncedProvider());\n\nconst result = await chain.fetchLyrics(\n  { song: \"Title\", artist: \"Artist\", duration: 240 },\n  { signal: abortController.signal }\n);\n```\n\n## Built-in Providers\n\n```typescript\nimport {\n  createBLyricsProvider,\n  createLRCLibSyncedProvider,\n  createLRCLibPlainProvider,\n  createLegatoProvider,\n  createBinimumProvider,\n  createPortatoProvider,\n  createUnisonProvider,\n} from \"@braccato/provider-blyrics\";\n```\n\n`createUnisonProvider` matches on `videoId`, so pass it on the context when you have one:\n\n```typescript\nconst result = await chain.fetchLyrics(\n  { song: \"Title\", artist: \"Artist\", duration: 240, videoId: \"dQw4w9WgXcQ\" },\n  { signal: abortController.signal }\n);\n```\n\n## Validation\n\nValidate fetched lyrics against a reference to prevent wrong matches:\n\n```typescript\nimport { createSimilarityValidator } from \"@braccato/provider-blyrics\";\n\nconst validate = createSimilarityValidator(referenceText, 0.5);\nconst result = await chain.fetchLyrics(context, { validate });\n```\n\nSee the [full documentation](https://braccato.boidu.dev) for details.\n","readmeFilename":"README.md"}