Repository Analysis

video-dev/hls.js

HLS.js is a JavaScript library that plays HLS in browsers with support for MSE.

1.1 Likely human-written View on GitHub
1.1
Adjusted Score
1.1
Raw Score
100%
Time Factor
2026-05-30
Last Push
16,730
Stars
TypeScript
Language
126,627
Lines of Code
269
Files
150
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 0LOW 150

Pattern Findings

150 matches across 2 categories. Click a row to expand file-level details.

Over-Commented Block87 hits · 78 pts
SeverityFileLineSnippet
LOWtests/unit/types.d.ts1// Import type descriptions for global mocha functions `describe`, `it`, `beforeEach`, etc...
LOWtests/unit/controller/level-helper.ts341#EXTINF:6,
LOWtests/unit/controller/level-helper.ts361#EXT-X-TARGETDURATION:6
LOWtests/unit/controller/level-helper.ts461#EXT-X-SERVER-CONTROL:CAN-SKIP-UNTIL=36
LOWtests/unit/controller/level-helper.ts481#EXTINF:6,
LOWtests/unit/controller/level-helper.ts501fileSequence7.ts
LOWtests/unit/controller/level-helper.ts521#EXTINF:6,
LOWtests/unit/controller/level-helper.ts701#EXT-X-VERSION:9
LOWtests/unit/controller/level-helper.ts721#EXTINF:6,
LOWtests/unit/controller/level-helper.ts741#EXT-X-PART:DURATION=2,URI="ll.m4s?segment=fileSequence8.1.m4s"
LOWtests/unit/controller/level-helper.ts881
LOWtests/unit/controller/level-helper.ts901#EXT-X-DISCONTINUITY
LOWtests/unit/controller/level-helper.ts921#EXT-X-PART:DURATION=1.000000,URI="720p_10_1.m4v"
LOWtests/unit/controller/level-helper.ts941#EXT-X-DATERANGE:ID="nmss-daterange",START-DATE="2025-05-22T07:59:38.809Z"
LOWtests/unit/controller/level-helper.ts961#EXT-X-PART:DURATION=0.500000,URI="720p_10_2.m4v"
LOWtests/unit/controller/level-helper.ts1041#EXT-X-TARGETDURATION:6
LOWtests/unit/controller/level-helper.ts1081 const playlistUpdate = `#EXTM3U
LOWtests/unit/controller/level-helper.ts1181video_28.m4s
LOWtests/unit/controller/level-helper.ts1241#EXT-X-MAP:URI="getMP4InitFragment.mp4"
LOWtests/unit/controller/level-helper.ts1261 const playlist2 = `#EXTM3U
LOWtests/unit/controller/level-helper.ts1381video_5430.m4s
LOWtests/unit/controller/level-helper.ts1401#EXTINF:2.000,
LOWtests/unit/controller/level-helper.ts1421#EXTINF:1.984,
LOWtests/unit/controller/level-helper.ts1621
LOWtests/unit/controller/level-helper.ts1661
LOWtests/unit/controller/level-helper.ts1701
LOWtests/unit/controller/level-helper.ts1741#EXT-X-VERSION:6
LOWtests/unit/controller/level-helper.ts1761#EXT-X-PROGRAM-DATE-TIME:2025-08-06T16:00:20Z
LOWtests/unit/controller/level-helper.ts18611.m4s
LOWtests/unit/controller/level-helper.ts1941#EXT-X-PROGRAM-DATE-TIME:2026-04-08T18:16:40.125Z
LOWtests/unit/controller/level-helper.ts196120260408T181704.m4v
LOWtests/unit/controller/level-helper.ts1981#EXT-X-PART:DURATION=1.00000,URI="20260408T181728.4.m4v"
LOWtests/unit/controller/level-helper.ts2001#EXT-X-I-FRAMES-ONLY
LOWtests/unit/controller/level-helper.ts2021#EXT-X-PART:DURATION=1.00000,URI="20260408T181728.3.m4v",INDEPENDENT=YES
LOWtests/unit/controller/level-helper.ts2081#EXTINF:4.0, no desc
LOWtests/unit/controller/level-helper.ts2101#EXT-X-MEDIA-SEQUENCE:5
LOWtests/unit/controller/level-helper.ts2121#EXTINF:4, no desc
LOWtests/unit/controller/cmcd-controller.ts21#EXT-X-PROGRAM-DATE-TIME:2024-05-02T18:03:57.020+00:00
LOWtests/unit/controller/interstitials-controller.ts1441#EXT-X-MEDIA-SEQUENCE:1
LOWtests/unit/controller/interstitials-controller.ts2001 it('request asset-list with _HLS_start_offset when joining', function () {
LOWtests/unit/controller/interstitials-controller.ts2201 describe('#7845 Live start folloing preroll', function () {
LOWtests/unit/controller/interstitials-controller.ts2361fileSequence-10.s
LOWtests/unit/controller/error-controller.ts521#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-en",NAME="English",URI="audio-en.m3u8"
LOWtests/unit/controller/level-controller.ts641 expect(hlsUrlParameters).to.have.property('skip').to.be.undefined;
LOWtests/unit/controller/level-controller.ts1241#EXT-X-MEDIA:TYPE=AUDIO,PATHWAY-ID="Bar",STABLE-RENDITION-ID="audio_ec3",GROUP-ID="EC3-bar",LANGUAGE="en-US",NAME="Engli
LOWtests/unit/controller/level-controller.ts1301http://www.baz.com/tier16.m3u8
LOWtests/unit/controller/level-controller.ts1321#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="EC3-bar",LANGUAGE="en-US",NAME="English",DEFAULT=YES,AUTOSELECT=YES,CHANNELS="6",URI="
LOWtests/unit/controller/level-controller.ts1361### EC3 BAR ###
LOWtests/unit/loader/m3u8-parser.ts841#EXT-X-BYTERANGE:96256@943196
LOWtests/unit/loader/m3u8-parser.ts901lo007ts
LOWtests/unit/loader/m3u8-parser.ts1261http://dummy.url.com/hls/live/segment/segment_022916_164500865_719926.ts
LOWtests/unit/loader/m3u8-parser.ts1701#EXTINF:4.00000,
LOWtests/unit/loader/m3u8-parser.ts1901#EXT-X-SERVER-CONTROL:CAN-BLOCK-RELOAD=YES,CAN-SKIP-UNTIL=24,PART-HOLD-BACK=3.012
LOWtests/unit/loader/m3u8-parser.ts2101#EXTINF:6,
LOWtests/unit/loader/m3u8-parser.ts2381 );
LOWtests/unit/loader/m3u8-parser.ts2401#EXTINF:5.005,
LOWtests/unit/loader/m3u8-parser.ts24213.mp4
LOWtests/unit/loader/m3u8-parser.ts2461 });
LOWtests/unit/loader/m3u8-parser.ts24814.mp4
LOWtests/unit/loader/m3u8-parser.ts2741 'EXT-X-DEFINE duplicate Variable Name declarations: "foo"',
27 more matches not shown…
Hyper-Verbose Identifiers63 hits · 63 pts
SeverityFileLineSnippet
LOWdemo/metrics.js49function timeRangeCanvasonMouseDown(evt) {
LOWdemo/metrics.js71function timeRangeCanvasonMouseMove(evt) {
LOWdemo/metrics.js105function timeRangeCanvasonMouseOut(evt) {
LOWdemo/main.js1478function getDemoConfigPropOrDefault(propName, defaultVal) {
LOWdemo/main.js1532function onConfigPersistenceChanged(event) {
LOWdemo/canvas.js294function canvasBufferTimeRangeUpdate(
LOWdemo/chart/chartjs-horizontal-bar.ts217export function applyChartInstanceOverrides(chart) {
LOWtests/test-streams.js31function createTestStreamWithConfig(target, config) {
LOWtests/unit/events.js4function getAllCapsSnakeCaseToCamelCase(eventType) {
LOWtests/unit/controller/abr-controller.ts395function getMultiChannelAudioLevels(): {
LOWtests/unit/controller/base-stream-controller.ts103 function levelDetailsWithEndSequenceVodOrLive(
LOWtests/unit/controller/base-stream-controller.ts883 function createMediaFragWithInitSegment(encrypted: boolean = false) {
LOWtests/unit/controller/buffer-controller-operations.ts56function setSourceBufferBufferedRange(
LOWtests/unit/controller/level-helper.ts2230function expectPlaylistParsingError(object: any, message: string) {
LOWtests/unit/controller/stream-controller.ts842 function attachMediaAndStubTracker(
LOWtests/unit/controller/interstitials-controller.ts78function expectItemToHaveProperties(
LOWtests/unit/controller/fragment-tracker.ts594function triggerFragLoadedAndFragBuffered(hls: Hls, fragment: Fragment) {
LOWtests/unit/controller/error-controller.ts1167function expectFatalErrorEventToStopPlayer(
LOWtests/unit/loader/m3u8-parser.ts3377function expectPlaylistParsingError(object: any, message: string) {
LOWtests/functional/auto/testbench.js8function setupConsoleLogRedirection() {
LOWdocs/API.md2226function createHlsIframesOnlyIfNeeded() {
LOWsrc/utils/mediacapabilities-helper.ts53export function requiresMediaCapabilitiesDecodingInfo(
LOWsrc/utils/mediacapabilities-helper.ts116export function getMediaDecodingInfoPromise(
LOWsrc/utils/mediacapabilities-helper.ts280function getVariantDecodingBitrate(level: Level): number {
LOWsrc/utils/mp4-tools.ts561function parseSupplementalDoViCodec(
LOWsrc/utils/discontinuities.ts18export function shouldAlignOnDiscontinuities(
LOWsrc/utils/rendition-helper.ts216function logStartCodecCandidateIgnored(codeSet: string, reason: string) {
LOWsrc/utils/rendition-helper.ts420export function findClosestLevelWithAudioGroup(
LOWsrc/utils/level-helper.ts603export function reassignFragmentLevelIndexes(levels: Level[]) {
LOWsrc/utils/level-helper.ts614function notEqualAfterStrippingQueries(
LOWsrc/utils/error-helper.ts50export function getLoaderConfigWithoutReties(
LOWsrc/utils/user-agent.ts41export function userAgentHevcSupportIsInaccurate() {
LOWsrc/utils/imsc1-ttml-parser.ts233function parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo): number {
LOWsrc/utils/mediakeys-helper.ts24export function keySystemFormatToKeySystemDomain(
LOWsrc/utils/mediakeys-helper.ts48export function keySystemIdToKeySystemDomain(
LOWsrc/utils/mediakeys-helper.ts63export function keySystemDomainToKeySystemFormat(
LOWsrc/utils/mediakeys-helper.ts112export function getSupportedMediaKeySystemConfigurations(
LOWsrc/utils/mediakeys-helper.ts141function createMediaKeySystemConfigurations(
LOWsrc/utils/keysystem-util.ts24export function convertDataUriToArrayBytes(
LOWsrc/utils/codecs.ts93export function areCodecsMediaSourceSupported(
LOWsrc/utils/codecs.ts106function isCodecMediaSourceSupported(
LOWsrc/utils/codecs.ts119export function videoCodecPreferenceValue(
LOWsrc/utils/codecs.ts129export function codecsSetSelectionPreferenceValue(codecSet: string): number {
LOWsrc/utils/codecs.ts152function getCodecCompatibleNameLower(
LOWsrc/utils/codecs.ts224export function pickMostCompleteCodecName(
LOWsrc/utils/encryption-methods-util.ts9export function getAesModeFromFullSegmentMethod(
LOWsrc/utils/timescale-conversion.ts36export function toMpegTsClockFromTimescale(
LOWsrc/controller/iframe-controller.ts348function createHlsImageIFramesOnly(Base: typeof HlsIFramesOnlyClass) {
LOWsrc/controller/buffer-controller.ts2236function mediaErrorRecoveryMessage(
LOWsrc/controller/eme-controller.ts1949function getRequestToKeyUsablePromise(requestEmitter: LicenseAndKeysRequest) {
LOWsrc/controller/fragment-finders.ts110function fragmentWithinFastStartSwitch(
LOWsrc/controller/fragment-finders.ts138export function fragmentWithinToleranceTest(
LOWsrc/controller/error-controller.ts625export function createDoNothingErrorAction(resolved?: boolean): IErrorAction {
LOWsrc/controller/level-controller.ts792function setTrackCodecsAndReturnSupported(
LOWsrc/loader/m3u8-parser.ts884function findFragmentWithStartDate(
LOWsrc/loader/m3u8-parser.ts1070function assignMultipleMediaPlaylistTagOccuranceError(
LOWsrc/loader/m3u8-parser.ts1080function assignMustAppearBeforeSegmentsError(
LOWsrc/loader/fragment.ts484function getOwnPropertyDescriptorFromPrototypeChain(
LOWsrc/loader/level-key.ts262function createInitializationVector(segmentNumber: number) {
LOWsrc/loader/fragment-loader.ts416function isMethodFullSegmentAesCbc(method) {
3 more matches not shown…