diff --git a/.eslintrc.json b/.eslintrc.json
index dd524c91..b99400c2 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -7,6 +7,9 @@
"no-trailing-spaces": 2,
"no-mixed-spaces-and-tabs": 2,
"no-multi-spaces": 2,
+ "no-tabs": 2,
+ "no-extra-bind": 2,
+ "eqeqeq": 2,
"indent": [
2,
4,
@@ -33,6 +36,34 @@
],
"keyword-spacing": ["error", { "before": true }],
"space-infix-ops": 2,
- "prefer-arrow-callback": 2
- }
+ "prefer-arrow-callback": 2,
+ "valid-jsdoc": [2, {
+ "requireReturn": false,
+ "requireReturnType": false
+ }],
+ "require-jsdoc": 2,
+ "no-console": 2,
+ "no-dupe-args": 2,
+ "no-dupe-keys": 2,
+ "no-extra-semi": 2,
+ "no-fallthrough": 2,
+ "use-isnan": 2,
+ "valid-typeof": 2,
+ "no-var": 2
+ },
+ "overrides": [
+ {
+ "files": ["test-*.js", "*.spec.js", "test-helpers.js"],
+ "rules": {
+ "valid-jsdoc": 0,
+ "require-jsdoc": 0
+ }
+ },
+ {
+ "files": ["build-config/**/*.js"],
+ "rules": {
+ "no-console": 0
+ }
+ }
+ ]
}
diff --git a/.jsdoc.json b/.jsdoc.json
new file mode 100644
index 00000000..d1634f11
--- /dev/null
+++ b/.jsdoc.json
@@ -0,0 +1,18 @@
+{
+ "opts": {
+ "template": "node_modules/tui-jsdoc-template",
+ "encoding": "utf8",
+ "destination": "./docs/",
+ "recurse": true,
+ "package": "./package.json",
+ "readme": "./README.md"
+ },
+ "templates": {
+ "name": "videojs-wavesurfer",
+ "default": {
+ "layoutFile": "./examples/layout.tmpl"
+ }
+ },
+ "plugins": ["plugins/markdown"]
+}
+
diff --git a/README.md b/README.md
index 8db51be0..def7a781 100644
--- a/README.md
+++ b/README.md
@@ -373,6 +373,12 @@ npm run start
This will watch the source directory and rebuild when any changes
are detected. It will also serve the files on http://127.0.0.1:8080.
+Generate the API documentation (placed in the `docs` directory):
+
+```
+npm run docs
+```
+
All commands for development are listed in the `package.json` file and
are run using:
diff --git a/build-config/fragments/common.js b/build-config/fragments/common.js
index d29f1ae9..e9c27ca1 100644
--- a/build-config/fragments/common.js
+++ b/build-config/fragments/common.js
@@ -9,36 +9,35 @@ const moment = require('moment');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const time = moment().format('YYYY');
+const rootDir = path.resolve(__dirname, '..', '..');
const pckg = require(path.join(__dirname, '..', '..', 'package.json'));
// add JS banner with copyright and version info
-var jsBanner = `${pckg.name}
+let jsBanner = `${pckg.name}
@version ${pckg.version}
@see ${pckg.homepage}
@copyright 2014-${time} ${pckg.author}
@license ${pckg.license}`;
-var jsBannerPlugin = new webpack.BannerPlugin({
+let jsBannerPlugin = new webpack.BannerPlugin({
banner: jsBanner,
test: /\.js$/
});
// add CSS banner with version info
-var cssBanner = `/*!
+let cssBanner = `/*!
Default styles for ${pckg.name} ${pckg.version}
*/`;
-var cssBannerPlugin = new webpack.BannerPlugin({
+let cssBannerPlugin = new webpack.BannerPlugin({
banner: cssBanner,
raw: true,
test: /\.css$/
});
// inject JS version number
-var jsVersionPlugin = new webpack.DefinePlugin({
+let jsVersionPlugin = new webpack.DefinePlugin({
'__VERSION__': JSON.stringify(pckg.version)
});
-var rootDir = path.resolve(__dirname, '..', '..');
-
module.exports = {
context: rootDir,
output: {
diff --git a/examples/layout.tmpl b/examples/layout.tmpl
new file mode 100644
index 00000000..7f4fe656
--- /dev/null
+++ b/examples/layout.tmpl
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
index e176120b..8c2b6aad 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2264,6 +2264,84 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
+ "cheerio": {
+ "version": "0.22.0",
+ "resolved": "http://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
+ "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
+ "dev": true,
+ "requires": {
+ "css-select": "~1.2.0",
+ "dom-serializer": "~0.1.0",
+ "entities": "~1.1.1",
+ "htmlparser2": "^3.9.1",
+ "lodash.assignin": "^4.0.9",
+ "lodash.bind": "^4.1.4",
+ "lodash.defaults": "^4.0.1",
+ "lodash.filter": "^4.4.0",
+ "lodash.flatten": "^4.2.0",
+ "lodash.foreach": "^4.3.0",
+ "lodash.map": "^4.4.0",
+ "lodash.merge": "^4.4.0",
+ "lodash.pick": "^4.2.1",
+ "lodash.reduce": "^4.4.0",
+ "lodash.reject": "^4.4.0",
+ "lodash.some": "^4.4.0"
+ },
+ "dependencies": {
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0",
+ "css-what": "2.1",
+ "domutils": "1.5.1",
+ "nth-check": "~1.0.1"
+ }
+ },
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz",
+ "integrity": "sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^1.3.0",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.0.6"
+ }
+ },
+ "readable-stream": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.0.6.tgz",
+ "integrity": "sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
"chokidar": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
@@ -3587,7 +3665,6 @@
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
"integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
"dev": true,
- "optional": true,
"requires": {
"domelementtype": "1"
}
@@ -7521,10 +7598,13 @@
}
},
"karma-jasmine": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz",
- "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=",
- "dev": true
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz",
+ "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==",
+ "dev": true,
+ "requires": {
+ "jasmine-core": "^3.3"
+ }
},
"karma-jasmine-matchers": {
"version": "3.8.3",
@@ -7766,6 +7846,12 @@
"integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=",
"dev": true
},
+ "lodash.bind": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
+ "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=",
+ "dev": true
+ },
"lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
@@ -7778,36 +7864,90 @@
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
"dev": true
},
+ "lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
+ "dev": true
+ },
+ "lodash.filter": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
+ "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=",
+ "dev": true
+ },
"lodash.flatten": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
"integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
"dev": true
},
+ "lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=",
+ "dev": true
+ },
"lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
"dev": true
},
+ "lodash.map": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
+ "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=",
+ "dev": true
+ },
"lodash.memoize": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
"dev": true
},
+ "lodash.merge": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
+ "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==",
+ "dev": true
+ },
"lodash.mergewith": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
"integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
"dev": true
},
+ "lodash.pick": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
+ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
+ "dev": true
+ },
+ "lodash.reduce": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
+ "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=",
+ "dev": true
+ },
+ "lodash.reject": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
+ "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=",
+ "dev": true
+ },
"lodash.set": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
"integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=",
"dev": true
},
+ "lodash.some": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
+ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=",
+ "dev": true
+ },
"lodash.tail": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
@@ -8192,9 +8332,9 @@
}
},
"mini-css-extract-plugin": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.4.tgz",
- "integrity": "sha512-o+Jm+ocb0asEngdM6FsZWtZsRzA8koFUudIDwYUfl94M3PejPHG7Vopw5hN9V8WsMkSFpm3tZP3Fesz89EyrfQ==",
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz",
+ "integrity": "sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w==",
"dev": true,
"requires": {
"loader-utils": "^1.1.0",
@@ -13313,6 +13453,15 @@
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
"dev": true
},
+ "tui-jsdoc-template": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/tui-jsdoc-template/-/tui-jsdoc-template-1.2.2.tgz",
+ "integrity": "sha512-oqw0IYaot86VJ2owKBozJnilgta0Z55x8r9PeHj7vb+jDoSvJGRUQUcgs56SZh9HE20fx54Pe75p84X85/ygLA==",
+ "dev": true,
+ "requires": {
+ "cheerio": "^0.22.0"
+ }
+ },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -14703,9 +14852,9 @@
}
},
"webrtc-adapter": {
- "version": "6.4.6",
- "resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-6.4.6.tgz",
- "integrity": "sha512-b2Kp7aPDc1y8qZkTWEaPN3BRqrrhObJeqNgu0i84HrkVFxzAJDiR2wU/4dK/hN7LvNYjvSQ/N7iN8aiEZ6qkLw==",
+ "version": "6.4.8",
+ "resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-6.4.8.tgz",
+ "integrity": "sha512-YM8yl545c/JhYcjGHgaCoA7jRK/KZuMwEDFeP2AcP0Auv5awEd+gZE0hXy9z7Ed3p9HvAXp8jdbe+4ESb1zxAw==",
"dev": true,
"requires": {
"rtcpeerconnection-shim": "^1.2.14",
diff --git a/package.json b/package.json
index e945c38e..67709347 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
"build:dev": "webpack --config ./build-config/webpack.dev.main.js",
"build:min": "webpack --config ./build-config/webpack.prod.main.js",
"docs": "npm-run-all docs:*",
- "docs:api": "jsdoc src/js -r -d docs/api",
+ "docs:api": "jsdoc src/js -c .jsdoc.json",
"lint": "npm-run-all lint:*",
"lint:js": "eslint src/js test build-config",
"lint:html": "htmlhint examples",
@@ -73,12 +73,12 @@
"karma-edge-launcher": "^0.4.2",
"karma-firefox-launcher": "^1.1.0",
"karma-host-environment": "^1.1.6",
- "karma-jasmine": "^1.1.2",
+ "karma-jasmine": "^2.0.1",
"karma-jasmine-matchers": "^3.8.3",
"karma-safari-launcher": "^1.0.0",
"karma-verbose-reporter": "0.0.6",
"karma-webpack": "^4.0.0-beta.0",
- "mini-css-extract-plugin": "^0.4.4",
+ "mini-css-extract-plugin": "^0.4.5",
"moment": "^2.22.2",
"node-sass": "^4.10.0",
"npm-run-all": "^4.1.3",
@@ -87,10 +87,11 @@
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"terser-webpack-plugin": "^1.1.0",
+ "tui-jsdoc-template": "^1.2.2",
"webpack": "^4.26.0",
"webpack-cli": "^3.1.2",
"webpack-dev-server": "^3.1.10",
"webpack-merge": "^4.1.4",
- "webrtc-adapter": "^6.4.6"
+ "webrtc-adapter": "^6.4.8"
}
}
diff --git a/src/js/utils/log.js b/src/js/utils/log.js
index 6a4dd5ab..b9fbb0be 100644
--- a/src/js/utils/log.js
+++ b/src/js/utils/log.js
@@ -8,6 +8,12 @@ const WARN = 'warn';
/**
* Log message (if the debug option is enabled).
+ *
+ * @private
+ * @param {Array} args - The arguments to be passed to the matching console
+ * method.
+ * @param {string} logType - The name of the console method to use.
+ * @param {boolean} debug - Whether or not the debug option is enabled or not.
*/
const log = function(args, logType, debug)
{
diff --git a/src/js/videojs.wavesurfer.js b/src/js/videojs.wavesurfer.js
index 93b52e17..5b91f88b 100644
--- a/src/js/videojs.wavesurfer.js
+++ b/src/js/videojs.wavesurfer.js
@@ -20,14 +20,14 @@ const wavesurferClassName = 'vjs-wavedisplay';
/**
* Draw a waveform for audio and video files in a video.js player.
*
- * @class Wavesurfer
- * @extends videojs.Plugin
+ * @class
+ * @augments videojs.Plugin
*/
class Wavesurfer extends Plugin {
/**
* The constructor function for the class.
*
- * @param {(videojs.Player|Object)} player
+ * @param {(videojs.Player|Object)} player - video.js Player object.
* @param {Object} options - Player options.
*/
constructor(player, options) {
@@ -65,6 +65,8 @@ class Wavesurfer extends Plugin {
/**
* Player UI is ready: customize controls.
+ *
+ * @private
*/
initialize() {
// hide big play button
@@ -173,8 +175,9 @@ class Wavesurfer extends Plugin {
/**
* Initializes the waveform options.
*
- * @param {Object} surferOpts - Plugin options.
* @private
+ * @param {Object} surferOpts - Plugin options.
+ * @returns {Object} - Updated `surferOpts` object.
*/
parseOptions(surferOpts) {
let rect = this.player.el_.getBoundingClientRect();
@@ -275,7 +278,7 @@ class Wavesurfer extends Plugin {
*
* @param {string|blob|file} url - Either the URL of the audio file,
* a Blob or a File object.
- * @param {string|?number[]|number[][]} peaks - Either the URL of peaks
+ * @param {string|number[]} peaks - Either the URL of peaks
* data for the audio file, or an array with peaks data.
*/
load(url, peaks) {
@@ -437,12 +440,12 @@ class Wavesurfer extends Plugin {
/**
* Save waveform image as data URI.
*
- * The default format is 'image/png'. Other supported types are
- * 'image/jpeg' and 'image/webp'.
+ * The default format is `'image/png'`. Other supported types are
+ * `'image/jpeg'` and `'image/webp'`.
*
* @param {string} [format=image/png] - String indicating the image format.
* @param {number} [quality=1] - Number between 0 and 1 indicating image
- * quality if the requested type is 'image/jpeg' or 'image/webp'.
+ * quality if the requested type is `'image/jpeg'` or `'image/webp'`.
* @returns {string} The data URI of the image data.
*/
exportImage(format, quality) {
@@ -452,7 +455,7 @@ class Wavesurfer extends Plugin {
/**
* Change the audio output device.
*
- * @param {string} sinkId - Id of audio output device.
+ * @param {string} deviceId - Id of audio output device.
*/
setAudioOutput(deviceId) {
if (deviceId) {
@@ -472,6 +475,8 @@ class Wavesurfer extends Plugin {
* Get the current time (in seconds) of the stream during playback.
*
* Returns 0 if no stream is available (yet).
+ *
+ * @returns {float} Current time of the stream.
*/
getCurrentTime() {
let currentTime = this.surfer.getCurrentTime();
@@ -520,6 +525,8 @@ class Wavesurfer extends Plugin {
* Get the duration of the stream in seconds.
*
* Returns 0 if no stream is available (yet).
+ *
+ * @returns {float} Duration of the stream.
*/
getDuration() {
let duration = this.surfer.getDuration();
@@ -689,7 +696,7 @@ class Wavesurfer extends Plugin {
onScreenChange() {
// execute with tiny delay so the player element completes
// rendering and correct dimensions are reported
- var fullscreenDelay = this.player.setInterval(() => {
+ let fullscreenDelay = this.player.setInterval(() => {
let isFullscreen = this.player.isFullscreen();
let newWidth, newHeight;
if (!isFullscreen) {
@@ -765,7 +772,12 @@ class Wavesurfer extends Plugin {
}
/**
+ * Log message to console (if the debug option is enabled).
+ *
* @private
+ * @param {Array} args - The arguments to be passed to the matching console
+ * method.
+ * @param {string} logType - The name of the console method to use.
*/
log(args, logType) {
log(args, logType, this.debug);
diff --git a/test/fluid.spec.js b/test/fluid.spec.js
index 540512f0..cbbdbbc1 100644
--- a/test/fluid.spec.js
+++ b/test/fluid.spec.js
@@ -8,7 +8,7 @@ import TestHelpers from './test-helpers.js';
/** @test {Wavesurfer} */
describe('Wavesurfer Fluid', () => {
- var player;
+ let player;
beforeEach(() => {
// create new player
@@ -23,7 +23,7 @@ describe('Wavesurfer Fluid', () => {
}
}
};
- var tag = TestHelpers.makeTag('audio', 'fluidAudio');
+ let tag = TestHelpers.makeTag('audio', 'fluidAudio');
player = TestHelpers.makePlayer(options, tag);
});
diff --git a/test/live.spec.js b/test/live.spec.js
index 4dc30e15..09bbdcda 100644
--- a/test/live.spec.js
+++ b/test/live.spec.js
@@ -6,7 +6,7 @@ import TestHelpers from './test-helpers.js';
/** @test {Wavesurfer} */
describe('Wavesurfer Live', () => {
- var player;
+ let player;
afterEach(() => {
// delete player
@@ -31,7 +31,7 @@ describe('Wavesurfer Live', () => {
/** @test {Wavesurfer} */
it('throws error when microphone plugin is missing', () => {
- var plugin = WaveSurfer.microphone;
+ let plugin = WaveSurfer.microphone;
WaveSurfer.microphone = undefined;
player = TestHelpers.makeLivePlayer();
diff --git a/test/options.spec.js b/test/options.spec.js
index 3ba2f6fd..1fc0bb90 100644
--- a/test/options.spec.js
+++ b/test/options.spec.js
@@ -6,7 +6,7 @@ import TestHelpers from './test-helpers.js';
/** @test {Wavesurfer} */
describe('Wavesurfer options', () => {
- var player;
+ let player;
afterEach(() => {
// delete player
diff --git a/test/test-helpers.js b/test/test-helpers.js
index e9f1533e..0554e58a 100644
--- a/test/test-helpers.js
+++ b/test/test-helpers.js
@@ -53,7 +53,7 @@ const TestHelpers = {
document.getElementsByTagName('body')[0].appendChild(elementTag);
// default options
- var opts = mergeOptions({
+ let opts = mergeOptions({
controls: true,
autoplay: false,
fluid: false,
@@ -81,8 +81,8 @@ const TestHelpers = {
* Create a test player with the microphone plugin enabled.
*/
makeLivePlayer() {
- var tag = TestHelpers.makeTag('audio', 'liveAudio');
- var opts = {
+ let tag = TestHelpers.makeTag('audio', 'liveAudio');
+ let opts = {
plugins: {
wavesurfer: {
src: 'live',
diff --git a/test/tracks.spec.js b/test/tracks.spec.js
index 815dfc15..d595d2cc 100644
--- a/test/tracks.spec.js
+++ b/test/tracks.spec.js
@@ -7,7 +7,7 @@ import TestHelpers from './test-helpers.js';
/** @test {Wavesurfer} */
describe('Wavesurfer TextTracks', () => {
- var player;
+ let player;
beforeEach(() => {
// create audio element with nested text track element
diff --git a/test/videojs.wavesurfer.spec.js b/test/videojs.wavesurfer.spec.js
index 56eacda5..577c847f 100644
--- a/test/videojs.wavesurfer.spec.js
+++ b/test/videojs.wavesurfer.spec.js
@@ -10,8 +10,8 @@ import Wavesurfer from '../src/js/videojs.wavesurfer.js';
/** @test {Wavesurfer} */
describe('Wavesurfer', () => {
- var player;
- var originalTimeout;
+ let player;
+ let originalTimeout;
beforeEach(() => {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;