{"_id":"@aj-archipelago/subvibe","_rev":"14-300667ace9a0a86a5162b214c765bfb5","name":"@aj-archipelago/subvibe","dist-tags":{"latest":"1.0.12"},"versions":{"1.0.0":{"name":"@aj-archipelago/subvibe","version":"1.0.0","keywords":[],"author":"","license":"ISC","_id":"@aj-archipelago/subvibe@1.0.0","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"dist":{"shasum":"032aa904cd5cb725bfb4b3b2bb6c21849689e030","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.0.tgz","fileCount":23,"integrity":"sha512-q2qI9EDFXHTFUW3ucvvVbyLSbH9ve+qdYNrIfMgKG7/M9SONZtqVeWmQkgFgx/yggdPZBdgTdNyZDloHpTXtmg==","signatures":[{"sig":"MEUCIQCTIIeH9SR6jissAxgFgPJCuoBHGoguU/WmFHoXpZfSNwIgM5003hj/xO905DnyR5Q64i9zFwudvHHgU8UBvCX/MJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103219},"main":"./dist/subvibe.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/subvibe.esm.js","browser":"./dist/subvibe.umd.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/subvibe.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/subvibe.cjs.js"}}},"gitHead":"028a6334b56d33e19c6a4134c49f4b0fd1d9c6f0","scripts":{"test":"jest","build":"rollup -c"},"_npmUser":{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},"deprecated":"Versions prior to 1.0.3 were missing distribution files. Please update to the latest version.","_npmVersion":"10.9.2","description":"The world's first fully vibe-coded subtitle utility library! Convert and manipulate subtitle files with style.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"debug":"^4.3.4"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^9.19.0","rollup":"^2.79.2","globals":"^15.14.0","ts-jest":"^29.2.5","@eslint/js":"^9.19.0","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/debug":"^4.1.12","typescript-eslint":"^8.23.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.0_1738785933483_0.4142986726359643","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aj-archipelago/subvibe","version":"1.0.1","keywords":[],"author":"","license":"ISC","_id":"@aj-archipelago/subvibe@1.0.1","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"dist":{"shasum":"1c176d33fa46a0a0667d9f775eb7e7ea7650e88b","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.1.tgz","fileCount":25,"integrity":"sha512-ij1GKRO2bYVq/qfz+djjIKALPoTogOLwpKhWctj3W/F6sK+WI6/3O71IUd2gES0+XspDXUQW1jEQ+dbRKK/P8Q==","signatures":[{"sig":"MEYCIQDJJU4A3r3q0wFPRLtphf3FQdcExbidvBB8vEocJS1qVwIhAPXvF4GXs2zW0zIbE4CkxZqmD7yBlNHPrYgWlTEXtvlv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112500},"main":"./dist/subvibe.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/subvibe.esm.js","browser":"./dist/subvibe.umd.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/subvibe.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/subvibe.cjs.js"}}},"gitHead":"29e64338c1045d343d94f0113ac8384193a91a59","scripts":{"test":"jest","build":"rollup -c"},"_npmUser":{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},"deprecated":"Versions prior to 1.0.3 were missing distribution files. Please update to the latest version.","_npmVersion":"10.9.2","description":"The world's first fully vibe-coded subtitle utility library! Convert and manipulate subtitle files with style.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"debug":"^4.3.4"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^9.19.0","rollup":"^2.79.2","globals":"^15.14.0","ts-jest":"^29.2.5","@eslint/js":"^9.19.0","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/debug":"^4.1.12","typescript-eslint":"^8.23.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.1_1738872551964_0.15764978861643963","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aj-archipelago/subvibe","version":"1.0.2","keywords":[],"author":"","license":"MIT","_id":"@aj-archipelago/subvibe@1.0.2","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"dist":{"shasum":"f5c4d33acf9a7da8c8776c98ee1c03b04ae8ea3b","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.2.tgz","fileCount":25,"integrity":"sha512-fxuBaF1TLnkhhM5ZGBrYofZBqhHXbtgUnTLS19CZHivG9+VBDdUUxomP2MuqaYI7NQfCRwebxBmjPtEMqpyQXg==","signatures":[{"sig":"MEQCIAgqKFLzq6jXovrgTIJGepAKZpeLrl97++tl4wsZ7pfEAiAZFDKldZkhB8lS/WF2BgElLwHwQ7LpQ+HSaheJBOxq2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112572},"main":"./dist/subvibe.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/subvibe.esm.js","browser":"./dist/subvibe.umd.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/subvibe.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/subvibe.cjs.js"}}},"gitHead":"783f0b6f48fb7c0c4805b3962620496aa8fb1d33","scripts":{"test":"jest","build":"rollup -c"},"_npmUser":{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},"deprecated":"Versions prior to 1.0.3 were missing distribution files. Please update to the latest version.","repository":{"url":"git+https://github.com/aj-archipelago/subvibe.git","type":"git"},"_npmVersion":"10.9.2","description":"The world's first fully vibe-coded subtitle utility library! Convert and manipulate subtitle files with style.","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^9.19.0","rollup":"^2.79.2","globals":"^15.14.0","ts-jest":"^29.2.5","@eslint/js":"^9.19.0","typescript":"^5.7.3","@types/jest":"^29.5.14","typescript-eslint":"^8.23.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.2_1738874385756_0.28377401989252604","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aj-archipelago/subvibe","version":"1.0.3","keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"author":{"url":"https://github.com/aj-archipelago","name":"AJ Archipelago"},"license":"MIT","_id":"@aj-archipelago/subvibe@1.0.3","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"dist":{"shasum":"94ada4cddc615722dd64c44af47d8a429c3e7476","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.3.tgz","fileCount":23,"integrity":"sha512-yHlUPLbPslY9GGUQNlJInA1YxKjIlX9hP5Y1KfLQVqROWiv4tgNstSVxhWgszvR9UrIhl1rvzwFNDHeGfce3Rw==","signatures":[{"sig":"MEQCIEQvI7WrdExrSNFF++ZyoEFDTXGl0ozbv6KMd7jr1I+nAiBPjXuhboeoCKUoHh1JNfjfBX4tRzzcHVbS+p53xqxbgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157074},"main":"./dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/index.esm.js","browser":"./dist/index.umd.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"gitHead":"838293f5c910e458f602b6b02a6e6c0f3b5bf1a8","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},"repository":{"url":"git+https://github.com/aj-archipelago/subvibe.git","type":"git"},"_npmVersion":"10.9.2","description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.0.0","ts-jest":"^29.2.5","prettier":"^3.0.0","typescript":"^5.7.3","@types/jest":"^29.5.14","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.3_1738950306848_0.34533283794746783","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aj-archipelago/subvibe","version":"1.0.4","keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"author":{"url":"https://github.com/aj-archipelago","name":"AJ Archipelago"},"license":"MIT","_id":"@aj-archipelago/subvibe@1.0.4","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"dist":{"shasum":"81bbbef48c0a6b03b17af2761ab76a8651183652","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.4.tgz","fileCount":23,"integrity":"sha512-iZh7eB6WKgnyuJZmC6Kb9I0ywqJplOsLs7uf5yYGwVVJ77qSG3Kwho7EGA1wkCt+hk07qYwdq9kwB5kI4llG8Q==","signatures":[{"sig":"MEUCICGpQDC6DKjubh4arexuhdYQsZ/w1BWy8iB37ijh/3EDAiEAsZzUqs+mx2xHKUSq9dtF/MyKv+YsKLqwst5DktKbz4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157483},"main":"./dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/index.esm.js","browser":"./dist/index.umd.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"gitHead":"42d3e7f91f66ad22a519ba4c314cd8c57db4ce1f","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"guclua","email":"guclua@aljazeera.net"},"repository":{"url":"git+https://github.com/aj-archipelago/subvibe.git","type":"git"},"_npmVersion":"10.2.3","description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.0.0","ts-jest":"^29.2.5","prettier":"^3.0.0","typescript":"^5.7.3","@types/jest":"^29.5.14","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.4_1739194875751_0.3135139755473244","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@aj-archipelago/subvibe","version":"1.0.5","keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"author":{"url":"https://github.com/aj-archipelago","name":"AJ Archipelago"},"license":"MIT","_id":"@aj-archipelago/subvibe@1.0.5","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"dist":{"shasum":"6086aa65ea674353d36ea0a311ceab4b5ccdbbe5","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.5.tgz","fileCount":23,"integrity":"sha512-4BekGa70RNXQ/R8/8lL8P62OGYIJmDAITXpUgxEvkEqXqo8Z20zPudBWtdL3G/sGHrIJN09go/K5xq+NiQBmnA==","signatures":[{"sig":"MEQCIAkvE1i4AB1vW8aUcZ9ztzVEuE9FQXUzMtJwTP2FOi8eAiAoTVAEx+OgamKnFda1uFaSAo/eAeJ9wzhsCRvDHd3F9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157483},"main":"./dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/index.esm.js","browser":"./dist/index.umd.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"gitHead":"ddab64c98d540e1599f6e6a025ad5ae9acad582d","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},"repository":{"url":"git+https://github.com/aj-archipelago/subvibe.git","type":"git"},"_npmVersion":"10.9.2","description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.0.0","ts-jest":"^29.2.5","prettier":"^3.0.0","typescript":"^5.7.3","@types/jest":"^29.5.14","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.5_1739195558232_0.6653167757773961","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@aj-archipelago/subvibe","version":"1.0.6","keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"author":{"url":"https://github.com/aj-archipelago","name":"AJ Archipelago"},"license":"MIT","_id":"@aj-archipelago/subvibe@1.0.6","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"dist":{"shasum":"511a1871c3948267ba6f896b63f6e3b6793972cf","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.6.tgz","fileCount":23,"integrity":"sha512-IrJTxmIhgxbtWiL0gER4QytQYKwVg5KsSpLHRck9N0IZCtYIvmoBtK1mdmjL0aIYAoKua7YA8AiSmhTODw0fHw==","signatures":[{"sig":"MEYCIQCCtrYnUvIeEzy7Ebw5JMNQ3dDa4HpDOen6oO07S7uW5QIhAMj/2rTHBBYE0NP3rJrWvDz85ddUl0uSmt4nhM9YKVSn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159028},"main":"./dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/index.esm.js","browser":"./dist/index.umd.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"gitHead":"c0871736f6c388d2fe04f3aa464acc2252d83f64","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},"repository":{"url":"git+https://github.com/aj-archipelago/subvibe.git","type":"git"},"_npmVersion":"10.9.2","description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.0.0","ts-jest":"^29.2.5","prettier":"^3.0.0","typescript":"^5.7.3","@types/jest":"^29.5.14","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.6_1739375004779_0.47877243418501547","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@aj-archipelago/subvibe","version":"1.0.7","keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"author":{"url":"https://github.com/aj-archipelago","name":"AJ Archipelago"},"license":"MIT","_id":"@aj-archipelago/subvibe@1.0.7","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"dist":{"shasum":"fa3f0bac8cff4cd087bc33f005dd9cb9cab834f9","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.7.tgz","fileCount":31,"integrity":"sha512-ey6Jm1woTjwigEEjG6aqz7Zg8eTweP5SbWjpSvBs3Nd2oBo70zS+/cWawcpho29It7MVal7lUAg8WuuJWyhDZw==","signatures":[{"sig":"MEUCIQCfNLdzjr8uX84sery04nXnfoTQIEv7/vUPViA12SHEeAIgF7+hEd39i3c5kSUWePFZ2K6fHu89i+nEeJQIKN5SRTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":232046},"main":"./dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/index.esm.js","browser":"./dist/index.umd.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"gitHead":"e278c7f7345aa6ffc3c5684504156a7cc50a4324","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},"repository":{"url":"git+https://github.com/aj-archipelago/subvibe.git","type":"git"},"_npmVersion":"10.9.2","description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.0.0","ts-jest":"^29.2.5","prettier":"^3.0.0","typescript":"^5.7.3","@types/jest":"^29.5.14","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.7_1739813555845_0.5848232542158958","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@aj-archipelago/subvibe","version":"1.0.8","keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"author":{"url":"https://github.com/aj-archipelago","name":"AJ Archipelago"},"license":"MIT","_id":"@aj-archipelago/subvibe@1.0.8","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"dist":{"shasum":"884194d26b1c6cc0c20da1ea7fa84aa243f3e78f","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.8.tgz","fileCount":31,"integrity":"sha512-MlD6BeJBMqILXUe8qscmmZGorG60E6M7jXSLy6YJZxhQKu2Lir4qm7riDwRiE12PdL3QnNUnLx2jw9Re+mhJkA==","signatures":[{"sig":"MEUCIQCxo98u/Suy1Kaqj6v4YZTeg2HCQLhDkPc7w2AxYfv6agIgV6cLte0BHbCXsaU51SWWNVbUHjgYHjjsSd6TV5tkLQg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231643},"main":"./dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/index.esm.js","browser":"./dist/index.umd.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"gitHead":"7fccacce0efe49beb394eb92feea3b8d53da54de","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},"repository":{"url":"git+https://github.com/aj-archipelago/subvibe.git","type":"git"},"_npmVersion":"10.9.2","description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.0.0","ts-jest":"^29.2.5","prettier":"^3.0.0","typescript":"^5.7.3","@types/jest":"^29.5.14","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.8_1740248096503_0.8488856588760811","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@aj-archipelago/subvibe","version":"1.0.9","keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"author":{"url":"https://github.com/aj-archipelago","name":"AJ Archipelago"},"license":"MIT","_id":"@aj-archipelago/subvibe@1.0.9","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"dist":{"shasum":"67dd6c16210168aa1ac7350ff550075b957c4c56","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.9.tgz","fileCount":32,"integrity":"sha512-QGHwy7ykRf3fOpf8cKN1/bruXHIox/La4XsXGutoSheoeo+6PZTxnCscOv20X7/JwKMjkfKtkmnvRi278WZoGg==","signatures":[{"sig":"MEQCIB0sWPyPr5RjvFnDYe9Hv2pDbOOggiuDCncXWPPfUI5wAiARt7yWrdASqPQn/DsBfK3TQMJuHGS4CVLM+qjNy7ovnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242353},"main":"./dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/index.esm.js","browser":"./dist/index.umd.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"gitHead":"772718deec3486eb116a8de83da00a57f77559e2","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},"repository":{"url":"git+https://github.com/aj-archipelago/subvibe.git","type":"git"},"_npmVersion":"10.9.2","description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.0.0","ts-jest":"^29.2.5","prettier":"^3.0.0","typescript":"^5.7.3","@types/jest":"^29.5.14","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.9_1741109370872_0.6593864995097971","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@aj-archipelago/subvibe","version":"1.0.10","keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"author":{"url":"https://github.com/aj-archipelago","name":"AJ Archipelago"},"license":"MIT","_id":"@aj-archipelago/subvibe@1.0.10","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"dist":{"shasum":"51309fd45df6882f1e342dec63bc1b733ad817e7","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.10.tgz","fileCount":32,"integrity":"sha512-QnhDa/96fne67m4ilIVlmYWcd7WwEngXs5yvZiUBSLfFeyU7QQNeG9qSV3m2Rjuiei2FPFyUwNovEqCnSo0ZXA==","signatures":[{"sig":"MEYCIQDqtvEkF9hb86gjeVz4MoIWL4EoxAKE5M7OuxC4YGn1YwIhALhfF19vNX9vjtJpCh1ppT3HT5Gtti9NfdNGm1ch2RXS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247112},"main":"./dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/index.esm.js","browser":"./dist/index.umd.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"gitHead":"234ad1895a7a9235f953f5607072dd07511cfd62","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},"repository":{"url":"git+https://github.com/aj-archipelago/subvibe.git","type":"git"},"_npmVersion":"10.9.2","description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.0.0","ts-jest":"^29.2.5","prettier":"^3.0.0","typescript":"^5.7.3","@types/jest":"^29.5.14","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.10_1741618093029_0.5837489755503988","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@aj-archipelago/subvibe","version":"1.0.11","keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"author":{"url":"https://github.com/aj-archipelago","name":"AJ Archipelago"},"license":"MIT","_id":"@aj-archipelago/subvibe@1.0.11","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"dist":{"shasum":"5e6a70c2e7df3f9d3621eb48df508af5b8dc1263","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.11.tgz","fileCount":33,"integrity":"sha512-Q5SYKT8oh8wgsBejzKHrliiUhhmIeRczGYfQ2r6qLQNAWBVe5UsfypG6y800yPb7GH53dxnbuLGdcCYpk93Q0g==","signatures":[{"sig":"MEUCIQCX+N2gBskSmuWDfHAo+27JL5kKYAWK73oVHZOq8InTzgIgYx76biOW92weKndrnHID5u7FF4x2X/kSW1Wu+1IsRAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":374843},"main":"./dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"./dist/index.esm.js","browser":"./dist/index.umd.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"gitHead":"26dae8641d2918f89cf336a471a0c0ace8b70299","scripts":{"dev":"tsup --watch","test":"jest","build":"tsup","coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"guclua","email":"guclua@aljazeera.net"},"repository":{"url":"git+https://github.com/aj-archipelago/subvibe.git","type":"git"},"_npmVersion":"10.9.2","description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.0.0","ts-jest":"^29.2.5","prettier":"^3.0.0","typescript":"^5.7.3","@types/jest":"^29.5.14","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/subvibe_1.0.11_1747921053126_0.8004190707348211","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@aj-archipelago/subvibe","version":"1.0.12","main":"./dist/index.cjs.js","repository":{"type":"git","url":"git+https://github.com/aj-archipelago/subvibe.git"},"scripts":{"test":"jest","build":"tsup","prepublishOnly":"npm run build","dev":"tsup --watch","coverage":"jest --coverage"},"keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"author":{"name":"AJ Archipelago","url":"https://github.com/aj-archipelago"},"license":"MIT","description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","type":"module","devDependencies":{"@types/jest":"^29.5.14","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","eslint-config-prettier":"^9.0.0","jest":"^29.7.0","prettier":"^3.0.0","ts-jest":"^29.2.5","tsup":"^8.0.1","typescript":"^5.7.3"},"module":"./dist/index.esm.js","browser":"./dist/index.umd.js","types":"dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.esm.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs.js"}}},"engines":{"node":">=14.0.0"},"homepage":"https://github.com/aj-archipelago/subvibe#readme","bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"_id":"@aj-archipelago/subvibe@1.0.12","gitHead":"26dae8641d2918f89cf336a471a0c0ace8b70299","_nodeVersion":"23.11.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-yx/LqBWBIYm4UDptnpC3DRSi/UivMlXxGyJ1AhGk1w0ZvoYGjTExVei/sD9UOn6u5X7hS4u3AjrtsHc3NalW2w==","shasum":"4e47c8126c5fe282ac67aa7e8dd8dc914167e562","tarball":"https://registry.npmjs.org/@aj-archipelago/subvibe/-/subvibe-1.0.12.tgz","fileCount":33,"unpackedSize":374843,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDCC6vY8qP0J570CEF3Qlm1NYrbyurWuLa1D1MaFJHSGwIhANhxgcyrs/1qZaKLfPF851otIpP/Obo+4H3U2j7PE5XM"}]},"_npmUser":{"name":"guclua","email":"guclua@aljazeera.net"},"directories":{},"maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/subvibe_1.0.12_1747978974663_0.9855768862292151"},"_hasShrinkwrap":false}},"time":{"created":"2025-02-05T20:05:33.361Z","modified":"2025-05-23T05:42:55.103Z","1.0.0":"2025-02-05T20:05:33.678Z","1.0.1":"2025-02-06T20:09:12.146Z","1.0.2":"2025-02-06T20:39:45.927Z","1.0.3":"2025-02-07T17:45:07.040Z","1.0.4":"2025-02-10T13:41:15.919Z","1.0.5":"2025-02-10T13:52:38.454Z","1.0.6":"2025-02-12T15:43:25.037Z","1.0.7":"2025-02-17T17:32:36.036Z","1.0.8":"2025-02-22T18:14:56.694Z","1.0.9":"2025-03-04T17:29:31.061Z","1.0.10":"2025-03-10T14:48:13.185Z","1.0.11":"2025-05-22T13:37:33.392Z","1.0.12":"2025-05-23T05:42:54.817Z"},"bugs":{"url":"https://github.com/aj-archipelago/subvibe/issues"},"author":{"name":"AJ Archipelago","url":"https://github.com/aj-archipelago"},"license":"MIT","homepage":"https://github.com/aj-archipelago/subvibe#readme","keywords":["subtitles","srt","webvtt","vtt","subtitle-parser","subtitle-converter","typescript"],"repository":{"type":"git","url":"git+https://github.com/aj-archipelago/subvibe.git"},"description":"A zero-dependency TypeScript library for parsing, converting, and manipulating SRT and WebVTT subtitle files","maintainers":[{"name":"jmac-aj","email":"mccartneyj@aljazeera.net"},{"name":"siddiqh","email":"siddiquih@aljazeera.net"},{"name":"guclua","email":"guclua@aljazeera.net"},{"name":"larabuli-aj","email":"arabulil@aljazeera.net"},{"name":"ajpaulingalls","email":"ingallsp@aljazeera.net"},{"name":"data-angel","email":"jmac@theroot.org"}],"readme":"# 🎵 Subvibe\n\nThe world's first fully vibe-coded subtitle utility library! Convert and manipulate subtitle files with style.\n\n## ✨ Features\n\n- 🔄 Parse and generate SRT (SubRip) subtitle files\n- 🌐 Parse and generate WebVTT subtitle files\n- 🛡️ Type-safe subtitle manipulation\n- 🪶 Zero dependencies, pure vibes only\n- ⚡ Lightning-fast performance\n- 📝 Clean, modern TypeScript API\n\n## 📦 Installation\n\n```bash\n# Using npm\nnpm i @aj-archipelago/subvibe\n\n# Using yarn\nyarn add @aj-archipelago/subvibe\n\n# Using pnpm\npnpm add @aj-archipelago/subvibe\n```\n\n## 🚀 Quick Start\n\n### ESM Import and Usage\n\n```typescript\nimport subvibe from '@aj-archipelago/subvibe';\n\nconst content = `1\n00:00:01,000 --> 00:00:04,000\nHello, world!`;\n\nconst result = subvibe.parse(content);\nconsole.log(result.cues[0].text); // \"Hello, world!\"\n```\n\n### Auto-detecting and Parsing Subtitles\n\n```typescript\nimport { parse } from '@aj-archipelago/subvibe';\n\n// Your subtitle content (either SRT or WebVTT)\nconst content = `1\n00:00:01,000 --> 00:00:04,000\nHey, what's the vibe?\n\n2\n00:00:04,500 --> 00:00:06,000\nThe vibe is immaculate!`;\n\n// Parse automatically - format will be detected\nconst result = parse(content);\n\nconsole.log(result.type);    // 'srt' or 'vtt'\nconsole.log(result.cues);    // array of subtitle cues\n```\n\nThe `parse()` function will automatically detect whether your content is SRT or WebVTT format and parse it accordingly. It's the easiest way to work with subtitles when you're not sure about the format.\n\n### Converting Between Formats\n\n```typescript\nimport { parse, generateSRT, generateVTT, resync, build } from '@aj-archipelago/subvibe';\n\n// Parse any subtitle format\nconst result = parse(content);\n\n// Convert to VTT\nconst vttContent = generateVTT(result);\n\n// Convert to SRT\nconst srtContent = generateSRT(result);\n\n// Build subtitles in any format from cues\nconst textContent = build(result.cues);                 // Plain text\nconst srtContent = build(result.cues, 'srt');          // SRT format\nconst vttContent = build(result.cues, 'vtt');          // VTT format\n```\n\n### Working with Subtitles Programmatically\n\n```typescript\nimport { SubtitleCue } from '@aj-archipelago/subvibe';\n\nconst cues: SubtitleCue[] = [\n  {\n    index: 1,\n    startTime: 1000,  // milliseconds\n    endTime: 4000,\n    text: \"Hey, what's the vibe?\"\n  },\n  {\n    index: 2,\n    startTime: 4500,\n    endTime: 6000,\n    text: \"The vibe is immaculate!\"\n  }\n];\n```\n\n## 🛠️ API Reference\n\n### Core Functions\n\n#### `parse(content: string): ParsedSubtitles`\n\nAuto-detect and parse subtitle content in either SRT or WebVTT format.\n\n```typescript\nconst result = parse(content);\nconsole.log(result.type);    // 'srt' or 'vtt'\nconsole.log(result.cues);    // parsed subtitle cues\n```\n\n#### `build(cues: SubtitleCue[], format?: 'text' | 'srt' | 'vtt'): string`\n\nGenerate subtitle content in various formats from an array of cues. The default format is 'text'.\n\n```typescript\n// Generate plain text (default)\nconst textContent = build(cues);\n\n// Generate SRT format\nconst srtContent = build(cues, 'srt');\n\n// Generate VTT format\nconst vttContent = build(cues, 'vtt');\n```\n\n#### `resync(cues: SubtitleCue[], options: TimeShiftOptions): SubtitleCue[]`\n\nShift subtitle timestamps by a specified offset.\n\n```typescript\nconst options = {\n  offset: 1000,      // milliseconds to shift\n  startAt: 0,        // optional: start time\n  endAt: Infinity,   // optional: end time\n  preserveGaps: true // optional: maintain gaps\n};\nconst shiftedCues = resync(cues, options);\n```\n\n#### `parseSRT(content: string): ParsedSubtitles`\n\nParse SRT subtitle content.\n\n#### `parseVTT(content: string): ParsedVTT`\n\nParse WebVTT subtitle content with support for styles, regions, and voice spans.\n\n#### `generateSRT(input: ParsedSubtitles | SubtitleCue[]): string`\n\nGenerate SRT content from either a ParsedSubtitles object or an array of subtitle cues.\n\n```typescript\n// Both forms are supported:\nconst srtFromResult = generateSRT(result);        // Pass the full parsed result\nconst srtFromCues = generateSRT(result.cues);     // Pass just the cues array\n```\n\n#### `generateVTT(subtitles: ParsedVTT): string`\n\nGenerate WebVTT content with support for styles and regions.\n\n### Types\n\n```typescript\ninterface SubtitleCue {\n  index: number;\n  startTime: number;  // milliseconds\n  endTime: number;    // milliseconds\n  text: string;       // subtitle text content\n}\n\ninterface ParsedSubtitles {\n  type: 'srt' | 'vtt' | 'unknown';\n  cues: SubtitleCue[];\n  errors?: ParseError[];\n}\n\ninterface ParsedVTT extends ParsedSubtitles {\n  type: 'vtt';\n  styles?: string[];    // CSS style blocks\n  regions?: VTTRegion[];\n}\n```\n\n### Advanced Utility Functions\n\nSubvibe provides a rich set of utility functions for advanced subtitle manipulation and processing:\n\n#### Time Manipulation\n\n```typescript\n// Shift subtitle timing\nconst options: TimeShiftOptions = {\n  offset: 1000,      // milliseconds to shift (positive or negative)\n  startAt: 0,        // only shift cues after this time (optional)\n  endAt: Infinity,   // only shift cues before this time (optional)\n  preserveGaps: true // maintain relative gaps between subtitles (optional)\n};\nconst shiftedCues = SubtitleUtils.shiftTime(cues, options);\n\n// Scale subtitle timing\nconst options: TimeScaleOptions = {\n  factor: 1.1,     // scale factor (e.g., 1.1 for 10% slower)\n  anchor: 0,       // time point around which to scale (optional)\n  startAt: 0,      // only scale cues after this time (optional)\n  endAt: Infinity  // only scale cues before this time (optional)\n};\nconst scaledCues = SubtitleUtils.scaleTime(cues, options);\n```\n\n#### Subtitle Processing\n\n```typescript\n// Merge overlapping subtitles\nconst mergedCues = SubtitleUtils.mergeOverlapping(cues);\n\n// Fix common timing issues\nconst fixedCues = SubtitleUtils.fixTimings(cues);\n\n// Remove formatting tags\nconst strippedCues = SubtitleUtils.stripFormatting(cues);\n\n// Validate subtitles\nconst validationResult = SubtitleUtils.validate(cues);\nconsole.log(validationResult.isValid);    // boolean\nconsole.log(validationResult.errors);     // array of errors\n\n// Normalize subtitles to strict format\nconst options: NormalizeOptions = {\n  format: 'srt',              // 'srt' or 'vtt'\n  removeFormatting: false,    // remove styling tags\n  fixTimings: true,          // fix timing issues\n  mergeOverlapping: true,    // merge overlapping subtitles\n  minimumDuration: 500,      // minimum duration in ms\n  maximumDuration: 7000,     // maximum duration in ms\n  minimumGap: 40,           // minimum gap between subtitles in ms\n  removeEmpty: true,        // remove empty subtitles\n  cleanupSpacing: true      // clean up extra whitespace\n};\nconst normalizedCues = SubtitleUtils.normalize(cues, options);\n```\n\n#### Format Detection and Parsing\n\n```typescript\n// Parse various timestamp formats\nconst ms = SubtitleUtils.parseLooseTime(\"1:23.456\");     // 83456\nconst ms = SubtitleUtils.parseLooseTime(\"1h 23m\");       // 4980000\nconst ms = SubtitleUtils.parseLooseTime(\"5m 35s\");       // 335000\nconst ms = SubtitleUtils.parseLooseTime(\"23.456\");       // 23456\nconst ms = SubtitleUtils.parseLooseTime(\"1:23,456\");     // 83456\n\n// Check if text contains timestamp\nconst hasTime = SubtitleUtils.hasTimestamp(\"at 1:23.456\");  // true\n\n// Find timestamp range in text\nconst range = SubtitleUtils.findTimestampRange(\"1:23 --> 4:56\");\nconsole.log(range?.start);  // milliseconds\nconsole.log(range?.end);    // milliseconds\n\n// Check if text looks like subtitle content\nconst isSubtitle = SubtitleUtils.looksLikeSubtitle(content);\n\n// Auto-detect and parse subtitle format\nconst result = SubtitleUtils.detectAndParse(content);\nconsole.log(result.type);     // 'srt', 'vtt', or 'unknown'\nconsole.log(result.cues);     // parsed subtitle cues\nconsole.log(result.errors);   // parsing errors if any\n```\n\nThese utility functions make it easy to perform common subtitle manipulation tasks while maintaining proper timing and format consistency. They're particularly useful when working with subtitles from different sources or when you need to adjust timing for different playback speeds.\n\n## 💡 Why Subvibe?\n\n- 🎯 **Smart Format Detection**: Automatically handles SRT and WebVTT formats with flexible timestamp parsing\n- 🛡️ **Type Safety**: Built with TypeScript for robust, error-free subtitle manipulation\n- 🚀 **Zero Dependencies**: Lightweight and efficient, only the code you need\n- 🧩 **Flexible Parsing**: Supports multiple timestamp formats including ultra-short (SS.mmm) and short (MM:SS,mmm) formats\n- 🧪 **Well Tested**: Comprehensive test suite ensures reliability\n- 📦 **Modern Package**: Built for modern JavaScript/TypeScript applications\n- 🎨 **Clean API**: Intuitive and easy-to-use interface\n- 🌟 **Active Development**: Regular updates and improvements\n\n## 🤝 Contributing\n\nWe love contributions! Here's how you can help:\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\nPlease make sure to update tests as appropriate and follow our code of conduct.\n\n## 📝 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n<div align=\"center\">Built with 💖 by subtitle enthusiasts for subtitle enthusiasts.</div>\n","readmeFilename":"README.md"}