diff --git a/package-lock.json b/package-lock.json index 5cfd8cf..8d7a8cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-ssm": "^3.306.0", - "@eyevinn/m3u8": ">=0.1.2", + "@eyevinn/m3u8": ">=0.5.6", "@fastify/aws-lambda": "^3.2.0", "aws-lambda": "^1.0.7", "dotenv": "^8.2.0", @@ -2455,9 +2455,9 @@ } }, "node_modules/@eyevinn/m3u8": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@eyevinn/m3u8/-/m3u8-0.5.2.tgz", - "integrity": "sha512-xIcBKo36ZhMG3JEM4r4+T/Bpz1QRG5wlbizo7d1onop6x76NUi+ACkXXxDlna7j+ELlljVhbkGhu0zTfCpJbHQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@eyevinn/m3u8/-/m3u8-0.5.6.tgz", + "integrity": "sha512-aYWN9Rzofs3MCuoGrJww6vExnKg8bLHN2jAmzjK8t/akwT3bzwR3i2kqH895ZysR87mikgOzF3IaBp4OYYfwWg==", "dependencies": { "chunked-stream": "~0.0.2" } @@ -14925,9 +14925,9 @@ } }, "@eyevinn/m3u8": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@eyevinn/m3u8/-/m3u8-0.5.2.tgz", - "integrity": "sha512-xIcBKo36ZhMG3JEM4r4+T/Bpz1QRG5wlbizo7d1onop6x76NUi+ACkXXxDlna7j+ELlljVhbkGhu0zTfCpJbHQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@eyevinn/m3u8/-/m3u8-0.5.6.tgz", + "integrity": "sha512-aYWN9Rzofs3MCuoGrJww6vExnKg8bLHN2jAmzjK8t/akwT3bzwR3i2kqH895ZysR87mikgOzF3IaBp4OYYfwWg==", "requires": { "chunked-stream": "~0.0.2" } diff --git a/package.json b/package.json index e371863..1b9669e 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ }, "dependencies": { "@aws-sdk/client-ssm": "^3.306.0", - "@eyevinn/m3u8": ">=0.1.2", + "@eyevinn/m3u8": ">=0.5.6", "@fastify/aws-lambda": "^3.2.0", "aws-lambda": "^1.0.7", "dotenv": "^8.2.0", diff --git a/src/manifests/handlers/hls/media.test.ts b/src/manifests/handlers/hls/media.test.ts index d6b7b3a..4888d42 100644 --- a/src/manifests/handlers/hls/media.test.ts +++ b/src/manifests/handlers/hls/media.test.ts @@ -375,7 +375,7 @@ https://mock.mock.com/stream/hls/manifest_1_00001.ts expect(response.body).toEqual(expected.body); }); - fit('should handle init segments for HLS cmaf media', async () => { + it('should handle init segments for HLS cmaf media', async () => { // Arrange const getMedia = () => { return new Promise((resolve) => { @@ -448,7 +448,8 @@ https://mock.mock.com/stream/hls/subdir/142d4370-56c9-11ee-a816-2da19aea6ed1_205 https://mock.mock.com/stream/hls/subdir/142d4370-56c9-11ee-a816-2da19aea6ed1_20571919-video=6500000-2.m4s #EXTINF:3.8400, no desc https://mock.mock.com/stream/hls/subdir/142d4370-56c9-11ee-a816-2da19aea6ed1_20571919-video=6500000-3.m4s -#EXT-X-ENDLIST` +#EXT-X-ENDLIST +` }; expect(response.statusCode).toEqual(expected.statusCode); expect(response.headers).toEqual(expected.headers); diff --git a/src/manifests/utils/hlsManifestUtils.ts b/src/manifests/utils/hlsManifestUtils.ts index d46083f..4a58cfa 100644 --- a/src/manifests/utils/hlsManifestUtils.ts +++ b/src/manifests/utils/hlsManifestUtils.ts @@ -156,6 +156,11 @@ export default function (): HLSManifestTools { if (!sourceSegURL.match(/^http/)) { sourceSegURL = `${sourceBaseURL}/${item.get('uri')}`; } + let sourceMapURL: string | undefined = item.get('map-uri'); + if (sourceMapURL && !sourceMapURL.match(/^http/)) { + sourceMapURL = `${sourceBaseURL}/${sourceMapURL}`; + item.set('map-uri', sourceMapURL); + } if (!corruption) { item.set('uri', sourceSegURL); diff --git a/src/shared/types.ts b/src/shared/types.ts index 4471ed4..430ee3b 100644 --- a/src/shared/types.ts +++ b/src/shared/types.ts @@ -17,8 +17,8 @@ export type TargetLevel = number; /* eslint-disable */ export type M3UItem = { - get: (key: 'uri' | 'type') => string | any; - set: (key: 'uri', value: string) => void; + get: (key: 'uri' | 'type' | 'map-uri') => string | any; + set: (key: 'uri' | 'map-uri', value: string) => void; }; export type M3U = {