From aab3b906f3e3d2b6842c265298bd12d8f37b67d9 Mon Sep 17 00:00:00 2001 From: Joe Forbes Date: Tue, 27 Mar 2018 16:23:06 -0400 Subject: [PATCH] refactor: export corrections (#68) --- src/ad-cue-tags.js | 10 ++---- src/bin-utils.js | 55 ++++++++++++++----------------- src/decrypter-worker.js | 6 ++-- src/master-playlist-controller.js | 4 +-- src/media-segment-request.js | 4 +-- src/mse/remove-cues-from-track.js | 4 +-- src/mse/virtual-source-buffer.js | 6 ++-- src/segment-loader.js | 8 ++--- src/sync-controller.js | 4 +-- src/videojs-http-streaming.js | 2 +- src/vtt-segment-loader.js | 6 ++-- test/ad-cue-tags.test.js | 30 ++++++++--------- test/browserify-test.js | 2 +- test/index.html | 4 +-- test/webpack-test.js | 2 +- 15 files changed, 63 insertions(+), 84 deletions(-) diff --git a/src/ad-cue-tags.js b/src/ad-cue-tags.js index 7181901ce..aeb9e3fd7 100644 --- a/src/ad-cue-tags.js +++ b/src/ad-cue-tags.js @@ -6,7 +6,7 @@ import window from 'global/window'; /** * Searches for an ad cue that overlaps with the given mediaTime */ -const findAdCue = function(track, mediaTime) { +export const findAdCue = function(track, mediaTime) { let cues = track.cues; for (let i = 0; i < cues.length; i++) { @@ -19,7 +19,7 @@ const findAdCue = function(track, mediaTime) { return null; }; -const updateAdCues = function(media, track, offset = 0) { +export const updateAdCues = function(media, track, offset = 0) { if (!media.segments) { return; } @@ -89,9 +89,3 @@ const updateAdCues = function(media, track, offset = 0) { mediaTime += segment.duration; } }; - -export default { - updateAdCues, - findAdCue -}; - diff --git a/src/bin-utils.js b/src/bin-utils.js index d026bdc00..546ff7ad5 100644 --- a/src/bin-utils.js +++ b/src/bin-utils.js @@ -40,7 +40,7 @@ const formatAsciiString = function(e) { * Modified message with TypedArray values expanded * @function createTransferableMessage */ -const createTransferableMessage = function(message) { +export const createTransferableMessage = function(message) { const transferable = {}; Object.keys(message).forEach((key) => { @@ -64,7 +64,7 @@ const createTransferableMessage = function(message) { * Returns a unique string identifier for a media initialization * segment. */ -const initSegmentId = function(initSegment) { +export const initSegmentId = function(initSegment) { let byterange = initSegment.byterange || { length: Infinity, offset: 0 @@ -78,35 +78,30 @@ const initSegmentId = function(initSegment) { /** * utils to help dump binary data to the console */ -const utils = { - hexDump(data) { - let bytes = Array.prototype.slice.call(data); - let step = 16; - let result = ''; - let hex; - let ascii; +export const hexDump = (data) => { + let bytes = Array.prototype.slice.call(data); + let step = 16; + let result = ''; + let hex; + let ascii; - for (let j = 0; j < bytes.length / step; j++) { - hex = bytes.slice(j * step, j * step + step).map(formatHexString).join(''); - ascii = bytes.slice(j * step, j * step + step).map(formatAsciiString).join(''); - result += hex + ' ' + ascii + '\n'; - } - return result; - }, - tagDump(tag) { - return utils.hexDump(tag.bytes); - }, - textRanges(ranges) { - let result = ''; - let i; + for (let j = 0; j < bytes.length / step; j++) { + hex = bytes.slice(j * step, j * step + step).map(formatHexString).join(''); + ascii = bytes.slice(j * step, j * step + step).map(formatAsciiString).join(''); + result += hex + ' ' + ascii + '\n'; + } - for (i = 0; i < ranges.length; i++) { - result += textRange(ranges, i) + ' '; - } - return result; - }, - createTransferableMessage, - initSegmentId + return result; }; -export default utils; +export const tagDump = ({ bytes }) => hexDump(bytes); + +export const textRanges = (ranges) => { + let result = ''; + let i; + + for (i = 0; i < ranges.length; i++) { + result += textRange(ranges, i) + ' '; + } + return result; +}; diff --git a/src/decrypter-worker.js b/src/decrypter-worker.js index 2d4c2dbae..d1880c8fe 100644 --- a/src/decrypter-worker.js +++ b/src/decrypter-worker.js @@ -1,8 +1,6 @@ import window from 'global/window'; -import {Decrypter} from 'aes-decrypter'; -import BinUtils from './bin-utils'; - -const { createTransferableMessage } = BinUtils; +import { Decrypter } from 'aes-decrypter'; +import { createTransferableMessage } from './bin-utils'; /** * Our web worker interface so that things can talk to aes-decrypter diff --git a/src/master-playlist-controller.js b/src/master-playlist-controller.js index f0f6bad1f..e81a2dc4a 100644 --- a/src/master-playlist-controller.js +++ b/src/master-playlist-controller.js @@ -8,7 +8,7 @@ import SegmentLoader from './segment-loader'; import VTTSegmentLoader from './vtt-segment-loader'; import * as Ranges from './ranges'; import videojs from 'video.js'; -import AdCueTags from './ad-cue-tags'; +import { updateAdCues } from './ad-cue-tags'; import SyncController from './sync-controller'; import worker from 'webwackify'; import Decrypter from './decrypter-worker'; @@ -1098,7 +1098,7 @@ export class MasterPlaylistController extends videojs.EventTarget { offset = seekable.start(0); } - AdCueTags.updateAdCues(media, this.cueTagsTrack_, offset); + updateAdCues(media, this.cueTagsTrack_, offset); } /** diff --git a/src/media-segment-request.js b/src/media-segment-request.js index 049a03ef8..78d5dbf2c 100644 --- a/src/media-segment-request.js +++ b/src/media-segment-request.js @@ -1,7 +1,5 @@ import videojs from 'video.js'; -import BinUtils from './bin-utils'; - -const { createTransferableMessage } = BinUtils; +import { createTransferableMessage } from './bin-utils'; export const REQUEST_ERRORS = { FAILURE: 2, diff --git a/src/mse/remove-cues-from-track.js b/src/mse/remove-cues-from-track.js index a777a5046..75cd605a8 100644 --- a/src/mse/remove-cues-from-track.js +++ b/src/mse/remove-cues-from-track.js @@ -10,7 +10,7 @@ * @param {Object} track the text track to remove the cues from * @private */ -const removeCuesFromTrack = function(start, end, track) { +export const removeCuesFromTrack = function(start, end, track) { let i; let cue; @@ -33,5 +33,3 @@ const removeCuesFromTrack = function(start, end, track) { } } }; - -export default removeCuesFromTrack; diff --git a/src/mse/virtual-source-buffer.js b/src/mse/virtual-source-buffer.js index aa3c2c652..45e9329d1 100644 --- a/src/mse/virtual-source-buffer.js +++ b/src/mse/virtual-source-buffer.js @@ -3,11 +3,11 @@ */ import videojs from 'video.js'; import createTextTracksIfNecessary from './create-text-tracks-if-necessary'; -import removeCuesFromTrack from './remove-cues-from-track'; -import {addTextTrackData} from './add-text-track-data'; +import { removeCuesFromTrack } from './remove-cues-from-track'; +import { addTextTrackData } from './add-text-track-data'; import work from 'webwackify'; import transmuxWorker from './transmuxer-worker'; -import {isAudioCodec, isVideoCodec} from './codec-utils'; +import { isAudioCodec, isVideoCodec } from './codec-utils'; const workerResolve = () => { let result; diff --git a/src/segment-loader.js b/src/segment-loader.js index 3b7b2e2f2..8ef7ba51d 100644 --- a/src/segment-loader.js +++ b/src/segment-loader.js @@ -6,15 +6,13 @@ import videojs from 'video.js'; import SourceUpdater from './source-updater'; import Config from './config'; import window from 'global/window'; -import removeCuesFromTrack from './mse/remove-cues-from-track'; -import BinUtils from './bin-utils'; -import {mediaSegmentRequest, REQUEST_ERRORS} from './media-segment-request'; +import { removeCuesFromTrack } from './mse/remove-cues-from-track'; +import { initSegmentId } from './bin-utils'; +import { mediaSegmentRequest, REQUEST_ERRORS } from './media-segment-request'; import { TIME_FUDGE_FACTOR, timeUntilRebuffer as timeUntilRebuffer_ } from './ranges'; import { minRebufferMaxBandwidthSelector } from './playlist-selectors'; import logger from './util/logger'; -const { initSegmentId } = BinUtils; - // in ms const CHECK_BUFFER_DELAY = 500; diff --git a/src/sync-controller.js b/src/sync-controller.js index 6b1d0c4d2..dd5195c43 100644 --- a/src/sync-controller.js +++ b/src/sync-controller.js @@ -3,8 +3,8 @@ */ import mp4probe from 'mux.js/lib/mp4/probe'; -import {inspect as tsprobe} from 'mux.js/lib/tools/ts-inspector.js'; -import {sumDurations} from './playlist'; +import { inspect as tsprobe } from 'mux.js/lib/tools/ts-inspector.js'; +import { sumDurations } from './playlist'; import videojs from 'video.js'; import logger from './util/logger'; diff --git a/src/videojs-http-streaming.js b/src/videojs-http-streaming.js index 46f9612ae..c4d56d11d 100644 --- a/src/videojs-http-streaming.js +++ b/src/videojs-http-streaming.js @@ -9,7 +9,7 @@ import PlaylistLoader from './playlist-loader'; import Playlist from './playlist'; import xhrFactory from './xhr'; import { Decrypter, AsyncStream, decrypt } from 'aes-decrypter'; -import utils from './bin-utils'; +import * as utils from './bin-utils'; import { timeRangesToArray } from './ranges'; import { MediaSource, URL } from './mse'; import videojs from 'video.js'; diff --git a/src/vtt-segment-loader.js b/src/vtt-segment-loader.js index 9f956bd5a..0b99030ba 100644 --- a/src/vtt-segment-loader.js +++ b/src/vtt-segment-loader.js @@ -4,10 +4,8 @@ import SegmentLoader from './segment-loader'; import videojs from 'video.js'; import window from 'global/window'; -import removeCuesFromTrack from './mse/remove-cues-from-track'; -import BinUtils from './bin-utils'; - -const { initSegmentId } = BinUtils; +import { removeCuesFromTrack } from './mse/remove-cues-from-track'; +import { initSegmentId } from './bin-utils'; const VTT_LINE_TERMINATORS = new Uint8Array('\n\n'.split('').map(char => char.charCodeAt(0))); diff --git a/test/ad-cue-tags.test.js b/test/ad-cue-tags.test.js index 28a608159..7ba0214a3 100644 --- a/test/ad-cue-tags.test.js +++ b/test/ad-cue-tags.test.js @@ -1,5 +1,5 @@ import QUnit from 'qunit'; -import AdCueTags from '../src/ad-cue-tags'; +import { updateAdCues, findAdCue } from '../src/ad-cue-tags'; import window from 'global/window'; QUnit.module('AdCueTags', { @@ -22,7 +22,7 @@ QUnit.test('update tag cues', function(assert) { this.track.addCue(testCue); - AdCueTags.updateAdCues({}, this.track); + updateAdCues({}, this.track); assert.equal(this.track.cues.length, 1, @@ -31,7 +31,7 @@ QUnit.test('update tag cues', function(assert) { testCue, 'does not change cues if media does not have segment property'); - AdCueTags.updateAdCues({ + updateAdCues({ segments: [] }, this.track); @@ -41,7 +41,7 @@ QUnit.test('update tag cues', function(assert) { this.track.clearTrack(); - AdCueTags.updateAdCues({ + updateAdCues({ segments: [{ duration: 5.1, cueOut: '11.5' @@ -62,7 +62,7 @@ QUnit.test('update tag cues', function(assert) { this.track.clearTrack(); - AdCueTags.updateAdCues({ + updateAdCues({ segments: [{ duration: 10, cueOutCont: '10/30' @@ -86,7 +86,7 @@ QUnit.test('update tag cues', function(assert) { }); QUnit.test('update incomplete cue in live playlist situation', function(assert) { - AdCueTags.updateAdCues({ + updateAdCues({ segments: [ { duration: 10, @@ -108,7 +108,7 @@ QUnit.test('update incomplete cue in live playlist situation', function(assert) assert.equal(testCue.adStartTime, 10, 'cue ad starts at 10'); assert.equal(testCue.adEndTime, 40, 'cue ad ends at 40'); - AdCueTags.updateAdCues({ + updateAdCues({ segments: [ { duration: 10, @@ -128,7 +128,7 @@ QUnit.test('update incomplete cue in live playlist situation', function(assert) assert.equal(testCue.adStartTime, 10, 'cue ad still starts at 10'); assert.equal(testCue.adEndTime, 40, 'cue ad still ends at 40'); - AdCueTags.updateAdCues({ + updateAdCues({ segments: [ { duration: 10, @@ -150,7 +150,7 @@ QUnit.test('update incomplete cue in live playlist situation', function(assert) }); QUnit.test('adjust cue end time in event of early CUE-IN', function(assert) { - AdCueTags.updateAdCues({ + updateAdCues({ segments: [ { duration: 10, @@ -176,7 +176,7 @@ QUnit.test('adjust cue end time in event of early CUE-IN', function(assert) { assert.equal(testCue.adStartTime, 10, 'cue ad starts at 10'); assert.equal(testCue.adEndTime, 40, 'cue ad ends at 40'); - AdCueTags.updateAdCues({ + updateAdCues({ segments: [ { duration: 10, @@ -202,7 +202,7 @@ QUnit.test('adjust cue end time in event of early CUE-IN', function(assert) { }); QUnit.test('correctly handle multiple ad cues', function(assert) { - AdCueTags.updateAdCues({ + updateAdCues({ segments: [ { duration: 10 @@ -285,15 +285,15 @@ QUnit.test('findAdCue returns correct cue', function(assert) { let cue; - cue = AdCueTags.findAdCue(this.track, 15); + cue = findAdCue(this.track, 15); assert.equal(cue.adStartTime, 0, 'returned correct cue'); - cue = AdCueTags.findAdCue(this.track, 40); + cue = findAdCue(this.track, 40); assert.equal(cue, null, 'cue not found, returned null'); - cue = AdCueTags.findAdCue(this.track, 120); + cue = findAdCue(this.track, 120); assert.equal(cue.adStartTime, 100, 'returned correct cue'); - cue = AdCueTags.findAdCue(this.track, 45); + cue = findAdCue(this.track, 45); assert.equal(cue.adStartTime, 45, 'returned correct cue'); }); diff --git a/test/browserify-test.js b/test/browserify-test.js index 4a2f5ccd2..049d0463e 100644 --- a/test/browserify-test.js +++ b/test/browserify-test.js @@ -1,6 +1,6 @@ /* eslint-disable no-var */ /* eslint-env qunit */ -var hls = require('../es5/videojs-http-streaming.js'); +var hls = require('../'); var q = window.QUnit; q.module('Browserify Require'); diff --git a/test/index.html b/test/index.html index 785d1d286..ab764b31f 100644 --- a/test/index.html +++ b/test/index.html @@ -3,8 +3,8 @@ video.js HLS Plugin Test Suite - - + +
diff --git a/test/webpack-test.js b/test/webpack-test.js index a04fca018..151557dfe 100644 --- a/test/webpack-test.js +++ b/test/webpack-test.js @@ -1,4 +1,4 @@ -let hls = require('../es5/videojs-http-streaming.js'); +let hls = require('../'); let q = window.QUnit; q.module('Webpack Require');