From e9c8792bce513a9254293543846783c33ad8f6b1 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 19 Nov 2024 10:55:32 -0500 Subject: [PATCH 1/2] fix(parser): ensure dateRange uses startDate for condition --- src/parser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parser.js b/src/parser.js index bcded03..dac39a5 100644 --- a/src/parser.js +++ b/src/parser.js @@ -715,7 +715,7 @@ export default class Parser extends Stream { message: 'EXT-X-DATERANGE with an END-ON-NEXT=YES attribute must not contain DURATION or END-DATE attributes' }); } - if (dateRange.duration && dateRange.endDate) { + if (dateRange.duration && dateRange.startDate) { const startDate = dateRange.startDate; const newDateInSeconds = startDate.getTime() + (dateRange.duration * 1000); From e076e71ad9cc2c16102c8848cbb0d8c8094e101c Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 28 Jan 2025 16:17:56 -0500 Subject: [PATCH 2/2] chore(logging): START-DATE missing in EXT-X-DATERANGE Triggers a warn event when an EXT-X-DATERANGE tag includes both DURATION and END-DATE but lacks the required START-DATE. Ensures better HLS spec compliance. --- src/parser.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/parser.js b/src/parser.js index dac39a5..d74ea0f 100644 --- a/src/parser.js +++ b/src/parser.js @@ -715,7 +715,12 @@ export default class Parser extends Stream { message: 'EXT-X-DATERANGE with an END-ON-NEXT=YES attribute must not contain DURATION or END-DATE attributes' }); } - if (dateRange.duration && dateRange.startDate) { + if (dateRange.duration && dateRange.endDate && !dateRange.startDate) { + this.trigger('warn', { + message: 'EXT-X-DATERANGE with DURATION and END-DATE attributes must contain START-DATE attribute' + }); + } + if (dateRange.duration && dateRange.endDate && dateRange.startDate) { const startDate = dateRange.startDate; const newDateInSeconds = startDate.getTime() + (dateRange.duration * 1000);