{"_id":"@byomakase/omakase-tams-player","_rev":"28-447fcb168b7694193cd16acbc7da27d2","name":"@byomakase/omakase-tams-player","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0-RC3":{"name":"@byomakase/omakase-tams-player","version":"1.0.0-RC3","license":"Apache-2.0","_id":"@byomakase/omakase-tams-player@1.0.0-RC3","maintainers":[{"name":"byomakase","email":"admin@byomakase.org"}],"homepage":"https://player.byomakase.org","bugs":{"url":"https://bitbucket.org/pepedigital/omakase-player-utils/issues"},"dist":{"shasum":"cbe4742d30f969e6aeaf064d22403b7cb4f5c348","tarball":"https://registry.npmjs.org/@byomakase/omakase-tams-player/-/omakase-tams-player-1.0.0-RC3.tgz","fileCount":10,"integrity":"sha512-s6Bq5yNsrWMymwxnwHZ24m57XEL4Q+FOspdAdCr++mAPd/UjSyfHrVwn/PTI0on8A++k+Z7TzJbMzNZM1mrKbg==","signatures":[{"sig":"MEYCIQCv9yr8oyGStpBpkoubF6fXGRTa8gFV0DisQyxzrVwQNQIhAMRj/zgfwtv3R0amDuNY36UbmMJybI0CHECriPA8ENJC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4954546},"main":"dist/omakase-tams-player.cjs.js","types":"dist/omakase-tams-player.d.ts","module":"dist/omakase-tams-player.es.js","gitHead":"6bdbd8ae58ef30208ff7f31cd5d4d0d94e8ff427","scripts":{"dev":"vite","build":"vite build","build:prod":"rm -rf dist && tsc --noEmit && vite build --mode production","publish:dry":"npm run build:prod && npm pack","publish:latest":"npm run build:prod && npm publish --access public --tag latest","publish:snapshot":"npm run build && npm publish --access public --tag snapshot"},"_npmUser":{"name":"byomakase","email":"admin@byomakase.org"},"copyright":"Copyright 2026 ByOmakase, LLC <https://byomakase.org/>","repository":{"url":"git+ssh://git@bitbucket.org/pepedigital/omakase-player-utils.git","type":"git"},"_npmVersion":"11.9.0","description":"Omakase TAMS adapter","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.3.6","rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.7","@types/node":"^25.3.0","aws-amplify":"^6.16.1","vite-plugin-dts":"^4.5.4","@aws-sdk/client-cognito-identity":"^3.893.0","@aws-sdk/client-cognito-identity-provider":"^3.893.0"},"peerDependencies":{"@byomakase/omakase-player":"0.25.3"},"_npmOperationalInternal":{"tmp":"tmp/omakase-tams-player_1.0.0-RC3_1773086057674_0.1151361770145014","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@byomakase/omakase-tams-player","version":"1.0.1","license":"Apache-2.0","_id":"@byomakase/omakase-tams-player@1.0.1","maintainers":[{"name":"byomakase","email":"admin@byomakase.org"}],"homepage":"https://player.byomakase.org","bugs":{"url":"https://bitbucket.org/pepedigital/omakase-player-utils/issues"},"dist":{"shasum":"0438641885742a8c8b76b5ef183c37e6d1a2ceae","tarball":"https://registry.npmjs.org/@byomakase/omakase-tams-player/-/omakase-tams-player-1.0.1.tgz","fileCount":10,"integrity":"sha512-q6ofS1TJabiORbWvJAPi5UqJQuJFWpPWYTB89DLR3InNL07EX/T3oiG9fH4KGiIpnZRjcOHuaYjy3ny44h9Jxg==","signatures":[{"sig":"MEQCIEOCNAa3pQQz3axtr4cvEYh0OEDMiKvt7jSPN3IUN+jKAiBGa2dsastPlrTE27x4X8N9p2IcINsNr+yaOO4SfpkTzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4954542},"main":"dist/omakase-tams-player.cjs.js","types":"dist/omakase-tams-player.d.ts","module":"dist/omakase-tams-player.es.js","gitHead":"6bdbd8ae58ef30208ff7f31cd5d4d0d94e8ff427","scripts":{"dev":"vite","build":"vite build","build:prod":"rm -rf dist && tsc --noEmit && vite build --mode production","publish:dry":"npm run build:prod && npm pack","publish:latest":"npm run build:prod && npm publish --access public --tag latest","publish:snapshot":"npm run build && npm publish --access public --tag snapshot"},"_npmUser":{"name":"byomakase","email":"admin@byomakase.org"},"copyright":"Copyright 2026 ByOmakase, LLC <https://byomakase.org/>","repository":{"url":"git+ssh://git@bitbucket.org/pepedigital/omakase-player-utils.git","type":"git"},"_npmVersion":"11.9.0","description":"Omakase TAMS adapter","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.3.6","rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.7","@types/node":"^25.3.0","aws-amplify":"^6.16.1","vite-plugin-dts":"^4.5.4","@aws-sdk/client-cognito-identity":"^3.893.0","@aws-sdk/client-cognito-identity-provider":"^3.893.0"},"peerDependencies":{"@byomakase/omakase-player":"0.25.3"},"_npmOperationalInternal":{"tmp":"tmp/omakase-tams-player_1.0.1_1773086353713_0.5939825189847958","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@byomakase/omakase-tams-player","version":"1.0.2","license":"Apache-2.0","_id":"@byomakase/omakase-tams-player@1.0.2","maintainers":[{"name":"byomakase","email":"admin@byomakase.org"}],"homepage":"https://player.byomakase.org","bugs":{"url":"https://bitbucket.org/pepedigital/omakase-player-utils/issues"},"dist":{"shasum":"49ba4b5a6513bf36e087add1aa4b14bca57a7f35","tarball":"https://registry.npmjs.org/@byomakase/omakase-tams-player/-/omakase-tams-player-1.0.2.tgz","fileCount":10,"integrity":"sha512-0KejAnD624KpIX+M7Yyznrkq1/vt8vXoJ2t8cw3sWWWgjnwGin1b3HRHTN5a0InSBAdBxkQwrLx3TAwnoiZdZw==","signatures":[{"sig":"MEYCIQCpXlR0NlOgLrON0rT8YuX0G7P/IwyNTnTslhuo9u7LnwIhAM+gIDP0Us+sX/TS66uFdx4P+Y9ycQtJfmglnuR44iRn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4955131},"main":"dist/omakase-tams-player.cjs.js","types":"dist/omakase-tams-player.d.ts","module":"dist/omakase-tams-player.es.js","gitHead":"d9fcfbec084248100eb82b9d14c17e2ffe3c8f67","scripts":{"dev":"vite","build":"vite build","build:prod":"rm -rf dist && tsc --noEmit && vite build --mode production","publish:dry":"npm run build:prod && npm pack","publish:latest":"npm run build:prod && npm publish --access public --tag latest","publish:snapshot":"npm run build && npm publish --access public --tag snapshot"},"_npmUser":{"name":"byomakase","email":"admin@byomakase.org"},"copyright":"Copyright 2026 ByOmakase, LLC <https://byomakase.org/>","repository":{"url":"git+ssh://git@bitbucket.org/pepedigital/omakase-player-utils.git","type":"git"},"_npmVersion":"11.9.0","description":"Omakase TAMS adapter","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.3.6","rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.7","@types/node":"^25.3.0","aws-amplify":"^6.16.1","vite-plugin-dts":"^4.5.4","@aws-sdk/client-cognito-identity":"^3.893.0","@aws-sdk/client-cognito-identity-provider":"^3.893.0"},"peerDependencies":{"@byomakase/omakase-player":"0.25.3"},"_npmOperationalInternal":{"tmp":"tmp/omakase-tams-player_1.0.2_1774443628125_0.23946030392123552","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@byomakase/omakase-tams-player","version":"1.0.3","license":"Apache-2.0","_id":"@byomakase/omakase-tams-player@1.0.3","maintainers":[{"name":"byomakase","email":"admin@byomakase.org"}],"homepage":"https://player.byomakase.org","bugs":{"url":"https://bitbucket.org/pepedigital/omakase-player-utils/issues"},"dist":{"shasum":"777c8d909511b6aaa4a72966697873e413e7930b","tarball":"https://registry.npmjs.org/@byomakase/omakase-tams-player/-/omakase-tams-player-1.0.3.tgz","fileCount":10,"integrity":"sha512-Igy20GuAbJwX/HdC8PNqmMa8K2se9MnijaQusvasAQEvUmLcqw9Otz4kzi/7EOBTTmDGHy/eppI5fJ987q7eZw==","signatures":[{"sig":"MEQCIDu/4pge8SDeUpsCH9QQRac0xdct+QxrRRxbZlw8u40PAiB20Er5hrSxJ3h87AR3FDc/0a5gd634nr+Ni/BLfZaQuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5080133},"main":"dist/omakase-tams-player.cjs.js","types":"dist/omakase-tams-player.d.ts","module":"dist/omakase-tams-player.es.js","gitHead":"be4155abc64bee30b0fb0a59ceeee9e75ea78165","scripts":{"dev":"vite","build":"vite build","build:prod":"rm -rf dist && tsc --noEmit && vite build --mode production","publish:dry":"npm run build:prod && npm pack","publish:latest":"npm run build:prod && npm publish --access public --tag latest","publish:snapshot":"npm run build && npm publish --access public --tag snapshot"},"_npmUser":{"name":"byomakase","email":"admin@byomakase.org"},"copyright":"Copyright 2026 ByOmakase, LLC <https://byomakase.org/>","repository":{"url":"git+ssh://git@bitbucket.org/pepedigital/omakase-player-utils.git","type":"git"},"_npmVersion":"11.9.0","description":"Omakase TAMS adapter","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.3.6","rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.7","@types/node":"^25.3.0","aws-amplify":"^6.16.1","vite-plugin-dts":"^4.5.4","@aws-sdk/client-cognito-identity":"^3.893.0","@aws-sdk/client-cognito-identity-provider":"^3.893.0"},"peerDependencies":{"@byomakase/omakase-player":"0.25.3"},"_npmOperationalInternal":{"tmp":"tmp/omakase-tams-player_1.0.3_1775638326601_0.9434898232057303","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@byomakase/omakase-tams-player","version":"1.0.4","license":"Apache-2.0","_id":"@byomakase/omakase-tams-player@1.0.4","maintainers":[{"name":"byomakase","email":"admin@byomakase.org"}],"homepage":"https://player.byomakase.org","bugs":{"url":"https://bitbucket.org/pepedigital/omakase-player-utils/issues"},"dist":{"shasum":"754e0c08fba9763b0ea2138f12a93c3ea14d6963","tarball":"https://registry.npmjs.org/@byomakase/omakase-tams-player/-/omakase-tams-player-1.0.4.tgz","fileCount":10,"integrity":"sha512-xbI+vrUD/QPJVARjhVRPKiCKlBYPwEXtaD/w4n+T56yWYV8js9jp92Ji3aF+10ID2wAlLYCN1gmjJHuaDiBx7g==","signatures":[{"sig":"MEQCIFO529yX0D/LosqXuQjAsvk3SZMKKlOJwJQKixwvg1qrAiBcqoeFjxeXJ+EoRluEGVd8roe1dowz9rYzfwdANA0Arw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5083804},"main":"dist/omakase-tams-player.cjs.js","types":"dist/omakase-tams-player.d.ts","module":"dist/omakase-tams-player.es.js","gitHead":"e09523af95531747966ccc6d0423fddc14d81bc1","scripts":{"dev":"vite","build":"vite build","build:prod":"rm -rf dist && tsc --noEmit && vite build --mode production","publish:dry":"npm run build:prod && npm pack","publish:latest":"npm run build:prod && npm publish --access public --tag latest","publish:snapshot":"npm run build && npm publish --access public --tag snapshot"},"_npmUser":{"name":"byomakase","email":"admin@byomakase.org"},"copyright":"Copyright 2026 ByOmakase, LLC <https://byomakase.org/>","repository":{"url":"git+ssh://git@bitbucket.org/pepedigital/omakase-player-utils.git","type":"git"},"_npmVersion":"11.9.0","description":"Omakase TAMS adapter","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.3.6","rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.7","@types/node":"^25.3.0","aws-amplify":"^6.16.1","vite-plugin-dts":"^4.5.4","@aws-sdk/client-cognito-identity":"^3.893.0","@aws-sdk/client-cognito-identity-provider":"^3.893.0"},"peerDependencies":{"@byomakase/omakase-player":"0.25.4"},"_npmOperationalInternal":{"tmp":"tmp/omakase-tams-player_1.0.4_1778680383381_0.9870813994651655","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@byomakase/omakase-tams-player","version":"1.0.5","license":"Apache-2.0","_id":"@byomakase/omakase-tams-player@1.0.5","maintainers":[{"name":"byomakase","email":"admin@byomakase.org"}],"homepage":"https://player.byomakase.org","bugs":{"url":"https://bitbucket.org/pepedigital/omakase-player-utils/issues"},"dist":{"shasum":"a1d070ade29dd4ecc2726f2ac24506c47cb8ffd7","tarball":"https://registry.npmjs.org/@byomakase/omakase-tams-player/-/omakase-tams-player-1.0.5.tgz","fileCount":10,"integrity":"sha512-7jmyN6L1Zyjat4KckkuNsz6LKV3USnmomx0f6DeXHA08L9BxkAG25GRqEJZAtWhhNATAFo9oZkIZpV3R4V/PuQ==","signatures":[{"sig":"MEUCIEqDIDb6Zbkkm1c0rOL/6AZDQgaa1GBrXaRpRFyAlXnnAiEAqB4O2V9ardXYjsQ3aMvibbgH8hmVjTgNeUi6rDVu4G8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5089805},"main":"dist/omakase-tams-player.cjs.js","types":"dist/omakase-tams-player.d.ts","module":"dist/omakase-tams-player.es.js","gitHead":"9799336a7ebae8a1349c0328c43109667f0dd586","scripts":{"dev":"vite","build":"vite build","build:prod":"rm -rf dist && tsc --noEmit && vite build --mode production","publish:dry":"npm run build:prod && npm pack","publish:latest":"npm run build:prod && npm publish --access public --tag latest","publish:snapshot":"npm run build && npm publish --access public --tag snapshot"},"_npmUser":{"name":"byomakase","email":"admin@byomakase.org"},"copyright":"Copyright 2026 ByOmakase, LLC <https://byomakase.org/>","repository":{"url":"git+ssh://git@bitbucket.org/pepedigital/omakase-player-utils.git","type":"git"},"_npmVersion":"11.9.0","description":"Omakase TAMS adapter","directories":{},"_nodeVersion":"25.6.1","dependencies":{"zod":"^4.3.6","rxjs":"^7.8.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.7","@types/node":"^25.3.0","aws-amplify":"^6.16.1","vite-plugin-dts":"^4.5.4","@aws-sdk/client-cognito-identity":"^3.893.0","@aws-sdk/client-cognito-identity-provider":"^3.893.0"},"peerDependencies":{"@byomakase/omakase-player":"0.25.4"},"_npmOperationalInternal":{"tmp":"tmp/omakase-tams-player_1.0.5_1779198031434_0.32741608765928243","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@byomakase/omakase-tams-player","version":"1.0.6","description":"Omakase TAMS adapter","main":"dist/omakase-tams-player.cjs.js","module":"dist/omakase-tams-player.es.js","types":"dist/omakase-tams-player.d.ts","homepage":"https://player.byomakase.org","copyright":"Copyright 2026 ByOmakase, LLC <https://byomakase.org/>","license":"Apache-2.0","scripts":{"build":"vite build","build:prod":"rm -rf dist && tsc --noEmit && vite build --mode production","dev":"vite","publish:dry":"npm run build:prod && npm pack","publish:latest":"npm run build:prod && npm publish --access public --tag latest","publish:snapshot":"npm run build && npm publish --access public --tag snapshot"},"repository":{"type":"git","url":"git+ssh://git@bitbucket.org/pepedigital/omakase-player-utils.git"},"peerDependencies":{"@byomakase/omakase-player":"0.25.4"},"devDependencies":{"@aws-sdk/client-cognito-identity":"^3.893.0","@aws-sdk/client-cognito-identity-provider":"^3.893.0","@types/node":"^25.3.0","aws-amplify":"^6.16.1","vite":"^7.2.7","vite-plugin-dts":"^4.5.4"},"dependencies":{"rxjs":"^7.8.2","zod":"^4.3.6"},"gitHead":"0d1c86bdc8a7d598d4386157d8b6f3faacbb2e14","_id":"@byomakase/omakase-tams-player@1.0.6","bugs":{"url":"https://bitbucket.org/pepedigital/omakase-player-utils/issues"},"_nodeVersion":"25.6.1","_npmVersion":"11.9.0","dist":{"integrity":"sha512-7oxAf1f8e5XB9sf4IqnRFnZiCioUQ09EpP33ayYy5qcevSJ34ZS86tUm6KoP74z5fp0guTINkElbSUd3VBBRyw==","shasum":"3943346033e8ab93f98e1cb0ce905dfc4e97fdb6","tarball":"https://registry.npmjs.org/@byomakase/omakase-tams-player/-/omakase-tams-player-1.0.6.tgz","fileCount":10,"unpackedSize":5091933,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCL2TMaTJ78e1dZSpZqlQLhqaFsxkQysGFZnwSczL7roAIgflv7nAGhkQf2A4YLFpVVgoW2egKWFVD4cjza83Luph0="}]},"_npmUser":{"name":"byomakase","email":"admin@byomakase.org"},"directories":{},"maintainers":[{"name":"byomakase","email":"admin@byomakase.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/omakase-tams-player_1.0.6_1779282336118_0.16271089132341277"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-21T16:59:11.210Z","modified":"2026-05-20T13:05:36.402Z","1.0.0-SNAPSHOT.1771692652":"2026-02-21T16:59:11.490Z","1.0.0-SNAPSHOT.1772437212":"2026-03-02T07:41:21.760Z","1.0.0-SNAPSHOT.1772437520":"2026-03-02T07:46:49.707Z","1.0.0-SNAPSHOT.1772554135":"2026-03-03T16:09:32.585Z","1.0.0-SNAPSHOT.1772554472":"2026-03-03T16:15:09.097Z","1.0.0-SNAPSHOT.1772555046":"2026-03-03T16:25:06.378Z","1.0.0-SNAPSHOT.1772719884":"2026-03-05T14:12:09.925Z","1.0.0-RC1":"2026-03-07T21:10:23.219Z","1.0.0":"2026-03-09T19:43:18.720Z","1.0.0-RC2":"2026-03-09T19:52:33.197Z","1.0.0-RC3":"2026-03-09T19:54:17.887Z","1.0.1":"2026-03-09T19:59:13.985Z","1.0.2":"2026-03-25T13:00:28.304Z","1.0.3":"2026-04-08T08:52:06.800Z","1.0.4":"2026-05-13T13:53:03.596Z","1.0.5":"2026-05-19T13:40:31.589Z","1.0.6":"2026-05-20T13:05:36.297Z"},"bugs":{"url":"https://bitbucket.org/pepedigital/omakase-player-utils/issues"},"license":"Apache-2.0","homepage":"https://player.byomakase.org","repository":{"type":"git","url":"git+ssh://git@bitbucket.org/pepedigital/omakase-player-utils.git"},"description":"Omakase TAMS adapter","maintainers":[{"name":"byomakase","email":"admin@byomakase.org"}],"readme":"# Omakase TAMS Player\n\nOmakase TAMS Player is a TypeScript component that allows native playback of media stored in TAMS. Omakase TAMS Player has the same interface as the vanilla Omakase Player so it can be easily integrated in an existing Omakase Player project.\n\nOmakase TAMS Player can load a source or a flow by URL or can receive flow(s) and flow segments directly.\n\nOmakase TAMS Player implements `OmakasePlayerApi` but it extends certain functionalities and APIs. No core Omakase Player capabilities have been changed by the Omakase TAMS Player.\n\n| Addition                                                                                              | Explanation                                                                                                                                                                                               |\n| ----------------------------------------------------------------------------------------------------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| loadVideo(videoSource: string, options?: TamsVideoLoadOptions): Observable<TamsVideo \\| Video>        | Accepts a URL of TAMS source or flow resource, if `protocol` is set in `options`, media other than TAMS can be loaded (all of the formats supported by Omakase Player).                                   |\n| loadVideo(videoSource: string[], options?: TamsVideoLoadOptions): Observable<TamsVideo \\| Video>      | Accepts an array of flows. Flows should be time aligned, either part of the same source or different time synchronized sources. Only one video flow is allowed. Multi flows are not allowed in this case. |\n| loadVideo(videoSource: TamsMediaData, options?: TamsVideoLoadOptions): Observable<TamsVideo \\| Video> | Allows user to fetch and manage resources and resource segments manually. Omakase Player doesn’t interact with TAMS API in this case, it just fetches provided segments from TAMS storage.                |\n| setTamsEndpoint(endpoint: string)                                                                     | Sets TAMS endpoint. If not invoked before video load, the endpoint is resolved from the url                                                                                                               |\n| video.getVideo(): TamsVideo \\| Video                                                                  | `getVideo` returns `TamsVideo` if TAMS flow is loaded                                                                                                                                                     |\n| video.onVideoLoading$(): TamsVideoLoadingEvent                                                        |                                                                                                                                                                                                           |\n| video.onVideoLoaded$(): TamsVideoLoadedEvent                                                          |                                                                                                                                                                                                           |\n| isTamsLoaded(): boolean;                                                                              | Returns true if the currently loaded media is sourced from TAMS                                                                                                                                           |\n\n`TamsMediaData` is an object containing all of the data needed for manually loading a TAMS resource\n\n```ts\nexport type TamsMediaData = {\n  flow: Flow;\n  subflows?: Flow[];\n  flowsSegments: Map<string, FlowSegment[]>;\n};\n```\n\nAs seen in the `TamsMediaData`, playback of multiflows is supported as well as the playback of a single (audio or video) flow. Text tracks are also supported with automatic slewing.\n\n`TamsVideo` is an extended `Video` interface:\n\n```ts\nexport interface TamsVideo extends Video {\n  mediaStartTime: number;\n  thumbnailVttTrackUrl?: string;\n  tamsMediaData?: TamsMediaData;\n  videoUrls?: Map<string, string>;\n  audioUrls?: Map<string, string>;\n  textUrls?: Map<string, string>;\n}\n```\n\n- `mediaStartTime` represents the start time of the first main media segment in regards to TAMS timeline. Useful to align segments with Omakase timeline.\n- `thumbnailVttTrackUrl` represents the URL of the generated thumbnail VTT file if an image flow is found.\n- `tamsMediaData` represents the flows and segments used to bootstrap the playback. Present if `returnTamsMediaData` is set to `true` during video load\n- `videoUrls` represents a map of created video manifest urls\n- `audioUrls` represents a map of created audio manifest urls\n- `textUrls` represents a map of created text manifest urls\n\n`TamsVideoLoadOptions` is an extended `VideoLoadOptions` interface:\n\n```ts\nexport interface TamsVideoLoadOptions extends VideoLoadOptions {\n  timerange?: string | undefined;\n  duration?: number | undefined;\n  returnTamsMediaData?: boolean;\n  ffomTimeZoneOffset?: number;\n}\n```\n\n- `timerange` can be used to specify the timerange of flows to be loaded into the player. Overrides `duration` if both are present.\n- `duration` can be used to load the requested duration from the flow's end.\n- `returnTamsMediaData` can be used to return the fetched flows and segments in the `TamsVideo` object\n- `ffomTimeZoneOffset` can be used to shift the ffom from UTC to other timezones. The provided value has to be an integer from `[-23, 23]` range.\n\nIf `protocol` is not provided, the player assumes the provided URL represents a TAMS resource. If neither `timerange` nor `duration` is specified, the player will load last `600` seconds of media.\n`TamsVideoLoadingEvent` is an extended `VideoLoadingEvent` interface:\n\n```ts\nexport interface TamsVideoLoadingEvent extends VideoLoadingEvent {\n  isTamsLoading?: boolean;\n}\n```\n\n`TamsVideoLoadedEvent` is an extended `VideoLoadedEvent` interface:\n\n```ts\nexport interface TamsVideoLoadedEvent extends VideoLoadedEvent {\n  isTamsLoaded?: boolean;\n  video: Video | TamsVideo;\n}\n```\n\n## Usage\n\nLoading TAMS media by providing resource URL:\n\n```ts\nlet omakasePlayer = new OmakaseTamsPlayer(config);\nomakasePlayer\n  .loadVideo(\"https://tams.example/sources/uuid1\", videoLoadOptions)\n  .subscribe({\n    next: (tamsVideo) => {\n      console.log(tamsVideo);\n    },\n  });\n```\n\nLoading TAMS media by providing manually fetched resource:\n\n```ts\nlet omakasePlayer = new OmakaseTamsPlayer(config);\nomakasePlayer\n  .loadVideo(\n    { flow: flow, subflows: subflows, flowsSegments: flowsSegments },\n    videoLoadOptions,\n  )\n  .subscribe({\n    next: (tamsVideo) => {\n      console.log(tamsVideo);\n    },\n  });\n```\n\nLoading multiple TAMS flows:\n\n```js\nomakasePlayer\n  .loadVideo([\n    \"https://tams.example/flows/uuid1\",\n    \"https://tams.example/flows/uuid2\",\n    \"https://tams.example/flows/uuid3\",\n    \"https://tams.example/flows/uuid4\",\n  ])\n  .subscribe((tamsVideo) => {\n    console.log(tamsVideo);\n  });\n```\n\nWhen providing a list of urls, player will assume that the urls represent TAMS flows. If TAMS sources or multiflows are provided the player will return an error. If more than one video flow is provided the player will return an error.\n\nOmakase timeline can be instantiated as follows:\n\n```js\nomakasePlayer\n  .loadVideo(\"https://tams.example/flows/uuid\")\n  .subscribe((tamsVideo) => {\n    omakasePlayer\n      .createTimeline({\n        timelineHTMLElementId: \"omakase-timeline\",\n      })\n      .subscribe({\n        next: (timelineApi) => {\n          if (tamsVideo.thumbnailVttTrackUrl) {\n            let thumbnailLane = new omakase.ThumbnailLane({\n              description: \"Thumbnails\",\n              vttUrl: tamsVideo.thumbnailVttTrackUrl,\n            });\n\n            timelineApi.addTimelineLane(thumbnailLane);\n          }\n\n          tamsVideo?.textUrls?.forEach((textUrl, label) => {\n            // external function for now - not provided\n            fetchAndMergeSubtitlesManifest(textUrl).subscribe((vtt) => {\n              const subtitlesLane = new SubtitlesLane({\n                vttUrl: vtt,\n                description: label,\n                style: {\n                  paddingTop: 5,\n                  paddingBottom: 5,\n                  marginBottom: 5,\n                },\n              });\n              timelineApi.addTimelineLane(subtitlesLane);\n            });\n          });\n        },\n      });\n  });\n```\n\nSetting authentication should usually be done before the video loads or through the OmakaseTamsPlayer's constructor:\n\n```js\nomakasePlayer.setAuthentication({\n  type: \"custom\",\n  headers: (url) => {\n      // Returns empty headers for S3 presigned resources to exclude them from custom authentication\n      if (url.includes('X-Amz-Signature') || url.includes('x-amz-signature')) {\n          return { headers: {} };\n      }\n      // Default behavior adds a Bearer access token for TAMS API requests\n      return {\n          headers: {\n              Authorization: `Bearer ${getAccessToken()}`,\n          }\n      };\n\n      // Any additional resource provider authentication should be handled if Omakase Player\n      // is accessing such resources\n      \n  },\n});\n```\n\n## Links\n\n- [Omakase Player](https://api.player.byomakase.org/)\n- [TAMS](https://bbc.github.io/tams/main/index.html)\n","readmeFilename":"README.md"}