hls.js 1.5.5-0.canary.9983 → 1.5.5-0.canary.9985

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/hls.js CHANGED
@@ -497,76 +497,6 @@
497
497
  return ErrorDetails;
498
498
  }({});
499
499
 
500
- var Logger = function Logger(label, logger) {
501
- this.trace = void 0;
502
- this.debug = void 0;
503
- this.log = void 0;
504
- this.warn = void 0;
505
- this.info = void 0;
506
- this.error = void 0;
507
- var lb = "[" + label + "]:";
508
- this.trace = noop;
509
- this.debug = logger.debug.bind(null, lb);
510
- this.log = logger.log.bind(null, lb);
511
- this.warn = logger.warn.bind(null, lb);
512
- this.info = logger.info.bind(null, lb);
513
- this.error = logger.error.bind(null, lb);
514
- };
515
- var noop = function noop() {};
516
- var fakeLogger = {
517
- trace: noop,
518
- debug: noop,
519
- log: noop,
520
- warn: noop,
521
- info: noop,
522
- error: noop
523
- };
524
- function createLogger() {
525
- return _extends({}, fakeLogger);
526
- }
527
-
528
- // let lastCallTime;
529
- // function formatMsgWithTimeInfo(type, msg) {
530
- // const now = Date.now();
531
- // const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';
532
- // lastCallTime = now;
533
- // msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )';
534
- // return msg;
535
- // }
536
-
537
- function consolePrintFn(type, id) {
538
- var func = self.console[type];
539
- return func ? func.bind(self.console, (id ? '[' + id + '] ' : '') + "[" + type + "] >") : noop;
540
- }
541
- function getLoggerFn(key, debugConfig, id) {
542
- return debugConfig[key] ? debugConfig[key].bind(debugConfig) : consolePrintFn(key, id);
543
- }
544
- var exportedLogger = createLogger();
545
- function enableLogs(debugConfig, context, id) {
546
- // check that console is available
547
- var newLogger = createLogger();
548
- if (typeof console === 'object' && debugConfig === true || typeof debugConfig === 'object') {
549
- var keys = [
550
- // Remove out from list here to hard-disable a log-level
551
- // 'trace',
552
- 'debug', 'log', 'info', 'warn', 'error'];
553
- keys.forEach(function (key) {
554
- newLogger[key] = getLoggerFn(key, debugConfig, id);
555
- });
556
- // Some browsers don't allow to use bind on console object anyway
557
- // fallback to default if needed
558
- try {
559
- newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.5-0.canary.9983");
560
- } catch (e) {
561
- /* log fn threw an exception. All logger methods are no-ops. */
562
- return createLogger();
563
- }
564
- }
565
- exportedLogger = newLogger;
566
- return newLogger;
567
- }
568
- var logger = exportedLogger;
569
-
570
500
  var DECIMAL_RESOLUTION_REGEX = /^(\d+)x(\d+)$/;
571
501
  var ATTR_LIST_REGEX = /(.+?)=(".*?"|.*?)(?:,|$)/g;
572
502
 
@@ -655,6 +585,77 @@
655
585
  return AttrList;
656
586
  }();
657
587
 
588
+ var Logger = function Logger(label, logger) {
589
+ this.trace = void 0;
590
+ this.debug = void 0;
591
+ this.log = void 0;
592
+ this.warn = void 0;
593
+ this.info = void 0;
594
+ this.error = void 0;
595
+ var lb = "[" + label + "]:";
596
+ this.trace = noop;
597
+ this.debug = logger.debug.bind(null, lb);
598
+ this.log = logger.log.bind(null, lb);
599
+ this.warn = logger.warn.bind(null, lb);
600
+ this.info = logger.info.bind(null, lb);
601
+ this.error = logger.error.bind(null, lb);
602
+ };
603
+ var noop = function noop() {};
604
+ var fakeLogger = {
605
+ trace: noop,
606
+ debug: noop,
607
+ log: noop,
608
+ warn: noop,
609
+ info: noop,
610
+ error: noop
611
+ };
612
+ function createLogger() {
613
+ return _extends({}, fakeLogger);
614
+ }
615
+
616
+ // let lastCallTime;
617
+ // function formatMsgWithTimeInfo(type, msg) {
618
+ // const now = Date.now();
619
+ // const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';
620
+ // lastCallTime = now;
621
+ // msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )';
622
+ // return msg;
623
+ // }
624
+
625
+ function consolePrintFn(type, id) {
626
+ var func = self.console[type];
627
+ return func ? func.bind(self.console, (id ? '[' + id + '] ' : '') + "[" + type + "] >") : noop;
628
+ }
629
+ function getLoggerFn(key, debugConfig, id) {
630
+ return debugConfig[key] ? debugConfig[key].bind(debugConfig) : consolePrintFn(key, id);
631
+ }
632
+ var exportedLogger = createLogger();
633
+ function enableLogs(debugConfig, context, id) {
634
+ // check that console is available
635
+ var newLogger = createLogger();
636
+ if (typeof console === 'object' && debugConfig === true || typeof debugConfig === 'object') {
637
+ var keys = [
638
+ // Remove out from list here to hard-disable a log-level
639
+ // 'trace',
640
+ 'debug', 'log', 'info', 'warn', 'error'];
641
+ keys.forEach(function (key) {
642
+ newLogger[key] = getLoggerFn(key, debugConfig, id);
643
+ });
644
+ // Some browsers don't allow to use bind on console object anyway
645
+ // fallback to default if needed
646
+ try {
647
+ newLogger.log("Debug logs enabled for \"" + context + "\" in hls.js version " + "1.5.5-0.canary.9985");
648
+ } catch (e) {
649
+ /* log fn threw an exception. All logger methods are no-ops. */
650
+ return createLogger();
651
+ }
652
+ }
653
+ // global exported logger uses the log methods from last call to `enableLogs`
654
+ _extends(exportedLogger, newLogger);
655
+ return newLogger;
656
+ }
657
+ var logger = exportedLogger;
658
+
658
659
  // Avoid exporting const enum so that these values can be inlined
659
660
 
660
661
  function isDateRangeCueAttribute(attrName) {
@@ -4186,10 +4187,10 @@
4186
4187
  var loaderContext = loader.context;
4187
4188
  if (loaderContext && loaderContext.url === context.url && loaderContext.level === context.level) {
4188
4189
  // same URL can't overlap
4189
- logger.trace('[playlist-loader]: playlist request ongoing');
4190
+ this.hls.logger.trace('[playlist-loader]: playlist request ongoing');
4190
4191
  return;
4191
4192
  }
4192
- logger.log("[playlist-loader]: aborting previous loader for type: " + context.type);
4193
+ this.hls.logger.log("[playlist-loader]: aborting previous loader for type: " + context.type);
4193
4194
  loader.abort();
4194
4195
  }
4195
4196
 
@@ -4299,7 +4300,7 @@
4299
4300
  // alt audio rendition in which quality levels (main)
4300
4301
  // contains both audio+video. but with mixed audio track not signaled
4301
4302
  if (!embeddedAudioFound && levels[0].audioCodec && !levels[0].attrs.AUDIO) {
4302
- logger.log('[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one');
4303
+ this.hls.logger.log('[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one');
4303
4304
  audioTracks.unshift({
4304
4305
  type: 'main',
4305
4306
  name: 'main',
@@ -4399,7 +4400,7 @@
4399
4400
  message += " id: " + context.id + " group-id: \"" + context.groupId + "\"";
4400
4401
  }
4401
4402
  var error = new Error(message);
4402
- logger.warn("[playlist-loader]: " + message);
4403
+ this.hls.logger.warn("[playlist-loader]: " + message);
4403
4404
  var details = ErrorDetails.UNKNOWN;
4404
4405
  var fatal = false;
4405
4406
  var loader = this.getInternalLoader(context);
@@ -6501,7 +6502,12 @@
6501
6502
  var cdnAge = lastAdvanced + details.ageHeader;
6502
6503
  var currentGoal = Math.min(cdnAge - details.partTarget, details.targetduration * 1.5);
6503
6504
  if (currentGoal > 0) {
6504
- if (previousDetails && currentGoal > previousDetails.tuneInGoal) {
6505
+ if (cdnAge > details.targetduration * 3) {
6506
+ // Omit segment and part directives when the last response was more than 3 target durations ago,
6507
+ this.log("Playlist last advanced " + lastAdvanced.toFixed(2) + "s ago. Omitting segment and part directives.");
6508
+ msn = undefined;
6509
+ part = undefined;
6510
+ } else if (previousDetails != null && previousDetails.tuneInGoal && cdnAge - details.partTarget > previousDetails.tuneInGoal) {
6505
6511
  // If we attempted to get the next or latest playlist update, but currentGoal increased,
6506
6512
  // then we either can't catchup, or the "age" header cannot be trusted.
6507
6513
  this.warn("CDN Tune-in goal increased from: " + previousDetails.tuneInGoal + " to: " + currentGoal + " with playlist age: " + details.age);
@@ -25220,7 +25226,7 @@
25220
25226
  su: !_this.initialized
25221
25227
  });
25222
25228
  } catch (error) {
25223
- logger.warn('Could not generate manifest CMCD data.', error);
25229
+ _this.hls.logger.warn('Could not generate manifest CMCD data.', error);
25224
25230
  }
25225
25231
  };
25226
25232
  /**
@@ -25248,7 +25254,7 @@
25248
25254
  }
25249
25255
  _this.apply(context, data);
25250
25256
  } catch (error) {
25251
- logger.warn('Could not generate segment CMCD data.', error);
25257
+ _this.hls.logger.warn('Could not generate segment CMCD data.', error);
25252
25258
  }
25253
25259
  };
25254
25260
  this.hls = hls;
@@ -27202,7 +27208,12 @@
27202
27208
  if (curLevel.fragmentError === 0) {
27203
27209
  curLevel.loadError = 0;
27204
27210
  }
27205
- this.playlistLoaded(level, data, curLevel.details);
27211
+ // Ignore matching details populated by loading a Media Playlist directly
27212
+ var previousDetails = curLevel.details;
27213
+ if (previousDetails === data.details && previousDetails.advanced) {
27214
+ previousDetails = undefined;
27215
+ }
27216
+ this.playlistLoaded(level, data, previousDetails);
27206
27217
  } else if ((_data$deliveryDirecti2 = data.deliveryDirectives) != null && _data$deliveryDirecti2.skip) {
27207
27218
  // received a delta playlist update that cannot be merged
27208
27219
  details.deltaUpdateFailed = true;
@@ -30023,7 +30034,7 @@
30023
30034
  * Get the video-dev/hls.js package version.
30024
30035
  */
30025
30036
  function get() {
30026
- return "1.5.5-0.canary.9983";
30037
+ return "1.5.5-0.canary.9985";
30027
30038
  }
30028
30039
  }, {
30029
30040
  key: "Events",