diff --git a/.github/workflows/standardjs.yaml b/.github/workflows/standardjs.yaml new file mode 100644 index 00000000..1b4f3386 --- /dev/null +++ b/.github/workflows/standardjs.yaml @@ -0,0 +1,17 @@ +name: StandardJS +on: + pull_request: + types: + - opened + - edited + - synchronize +jobs: + StandardJS: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 12.x + - run: npm install standard + - run: npx standard diff --git a/examples/broadcast/jsfiddle/demo.js b/examples/broadcast/jsfiddle/demo.js index 52463b24..946a5551 100644 --- a/examples/broadcast/jsfiddle/demo.js +++ b/examples/broadcast/jsfiddle/demo.js @@ -1,10 +1,10 @@ /* eslint-env browser */ -var log = msg => { +const log = msg => { document.getElementById('logs').innerHTML += msg + '
' } window.createSession = isPublisher => { - let pc = new RTCPeerConnection({ + const pc = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302' @@ -21,7 +21,7 @@ window.createSession = isPublisher => { if (isPublisher) { navigator.mediaDevices.getUserMedia({ video: true, audio: false }) .then(stream => { - stream.getTracks().forEach(track => pc.addTrack(track, stream)); + stream.getTracks().forEach(track => pc.addTrack(track, stream)) document.getElementById('video1').srcObject = stream pc.createOffer() .then(d => pc.setLocalDescription(d)) @@ -34,7 +34,7 @@ window.createSession = isPublisher => { .catch(log) pc.ontrack = function (event) { - var el = document.getElementById('video1') + const el = document.getElementById('video1') el.srcObject = event.streams[0] el.autoplay = true el.controls = true @@ -42,7 +42,7 @@ window.createSession = isPublisher => { } window.startSession = () => { - let sd = document.getElementById('remoteSessionDescription').value + const sd = document.getElementById('remoteSessionDescription').value if (sd === '') { return alert('Session Description must not be empty') } @@ -55,21 +55,21 @@ window.createSession = isPublisher => { } window.copySDP = () => { - const browserSDP = document.getElementById('localSessionDescription') + const browserSDP = document.getElementById('localSessionDescription') - browserSDP.focus() - browserSDP.select() + browserSDP.focus() + browserSDP.select() - try { - const successful = document.execCommand('copy') - const msg = successful ? 'successful' : 'unsuccessful' - log('Copying SDP was ' + msg) - } catch (err) { - log('Unable to copy SDP ' + err) + try { + const successful = document.execCommand('copy') + const msg = successful ? 'successful' : 'unsuccessful' + log('Copying SDP was ' + msg) + } catch (err) { + log('Unable to copy SDP ' + err) + } } -} - let btns = document.getElementsByClassName('createSessionButton') + const btns = document.getElementsByClassName('createSessionButton') for (let i = 0; i < btns.length; i++) { btns[i].style = 'display: none' } diff --git a/examples/data-channels/jsfiddle/demo.js b/examples/data-channels/jsfiddle/demo.js index 1e7d26a7..c0e88a69 100644 --- a/examples/data-channels/jsfiddle/demo.js +++ b/examples/data-channels/jsfiddle/demo.js @@ -1,17 +1,17 @@ /* eslint-env browser */ -let pc = new RTCPeerConnection({ +const pc = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302' } ] }) -let log = msg => { +const log = msg => { document.getElementById('logs').innerHTML += msg + '
' } -let sendChannel = pc.createDataChannel('foo') +const sendChannel = pc.createDataChannel('foo') sendChannel.onclose = () => console.log('sendChannel has closed') sendChannel.onopen = () => console.log('sendChannel has opened') sendChannel.onmessage = e => log(`Message from DataChannel '${sendChannel.label}' payload '${e.data}'`) @@ -27,7 +27,7 @@ pc.onnegotiationneeded = e => pc.createOffer().then(d => pc.setLocalDescription(d)).catch(log) window.sendMessage = () => { - let message = document.getElementById('message').value + const message = document.getElementById('message').value if (message === '') { return alert('Message must not be empty') } @@ -36,7 +36,7 @@ window.sendMessage = () => { } window.startSession = () => { - let sd = document.getElementById('remoteSessionDescription').value + const sd = document.getElementById('remoteSessionDescription').value if (sd === '') { return alert('Session Description must not be empty') } diff --git a/examples/insertable-streams/jsfiddle/demo.js b/examples/insertable-streams/jsfiddle/demo.js index 6638df02..ff2be92d 100644 --- a/examples/insertable-streams/jsfiddle/demo.js +++ b/examples/insertable-streams/jsfiddle/demo.js @@ -3,17 +3,17 @@ // cipherKey that video is encrypted with const cipherKey = 0xAA -let pc = new RTCPeerConnection({encodedInsertableStreams: true, forceEncodedVideoInsertableStreams: true}) -let log = msg => { +const pc = new RTCPeerConnection({ encodedInsertableStreams: true, forceEncodedVideoInsertableStreams: true }) +const log = msg => { document.getElementById('div').innerHTML += msg + '
' } // Offer to receive 1 video -let transceiver = pc.addTransceiver('video') +const transceiver = pc.addTransceiver('video') // The API has seen two iterations, support both // In the future this will just be `createEncodedStreams` -let receiverStreams = getInsertableStream(transceiver) +const receiverStreams = getInsertableStream(transceiver) // boolean controlled by checkbox to enable/disable encryption let applyDecryption = true @@ -24,8 +24,8 @@ window.toggleDecryption = () => { // Loop that is called for each video frame const reader = receiverStreams.readable.getReader() const writer = receiverStreams.writable.getWriter() -reader.read().then(function processVideo({ done, value }) { - let decrypted = new DataView(value.data) +reader.read().then(function processVideo ({ done, value }) { + const decrypted = new DataView(value.data) if (applyDecryption) { for (let i = 0; i < decrypted.buffer.byteLength; i++) { @@ -41,7 +41,7 @@ reader.read().then(function processVideo({ done, value }) { // Fire when remote video arrives pc.ontrack = function (event) { document.getElementById('remote-video').srcObject = event.streams[0] - document.getElementById('remote-video').style = "" + document.getElementById('remote-video').style = '' } // Populate SDP field when finished gathering @@ -54,7 +54,7 @@ pc.onicecandidate = event => { pc.createOffer().then(d => pc.setLocalDescription(d)).catch(log) window.startSession = () => { - let sd = document.getElementById('remoteSessionDescription').value + const sd = document.getElementById('remoteSessionDescription').value if (sd === '') { return alert('Session Description must not be empty') } @@ -68,8 +68,8 @@ window.startSession = () => { // DOM code to show banner if insertable streams not supported let insertableStreamsSupported = true -let updateSupportBanner = () => { - let el = document.getElementById('no-support-banner') +const updateSupportBanner = () => { + const el = document.getElementById('no-support-banner') if (insertableStreamsSupported && el) { el.style = 'display: none' } @@ -77,7 +77,7 @@ let updateSupportBanner = () => { document.addEventListener('DOMContentLoaded', updateSupportBanner) // Shim to support both versions of API -function getInsertableStream(transceiver) { +function getInsertableStream (transceiver) { let insertableStreams = null if (transceiver.receiver.createEncodedVideoStreams) { insertableStreams = transceiver.receiver.createEncodedVideoStreams() @@ -88,7 +88,7 @@ function getInsertableStream(transceiver) { if (!insertableStreams) { insertableStreamsSupported = false updateSupportBanner() - throw 'Insertable Streams are not supported' + throw new Error('Insertable Streams are not supported') } return insertableStreams diff --git a/examples/reflect/jsfiddle/demo.js b/examples/reflect/jsfiddle/demo.js index 7eaca84c..7c1b6858 100644 --- a/examples/reflect/jsfiddle/demo.js +++ b/examples/reflect/jsfiddle/demo.js @@ -1,19 +1,19 @@ /* eslint-env browser */ -let pc = new RTCPeerConnection({ +const pc = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302' } ] }) -var log = msg => { +const log = msg => { document.getElementById('logs').innerHTML += msg + '
' } navigator.mediaDevices.getUserMedia({ video: true, audio: true }) .then(stream => { - stream.getTracks().forEach(track => pc.addTrack(track, stream)); + stream.getTracks().forEach(track => pc.addTrack(track, stream)) pc.createOffer().then(d => pc.setLocalDescription(d)).catch(log) }).catch(log) @@ -24,7 +24,7 @@ pc.onicecandidate = event => { } } pc.ontrack = function (event) { - var el = document.createElement(event.track.kind) + const el = document.createElement(event.track.kind) el.srcObject = event.streams[0] el.autoplay = true el.controls = true @@ -33,7 +33,7 @@ pc.ontrack = function (event) { } window.startSession = () => { - let sd = document.getElementById('remoteSessionDescription').value + const sd = document.getElementById('remoteSessionDescription').value if (sd === '') { return alert('Session Description must not be empty') } @@ -59,4 +59,3 @@ window.copySDP = () => { log('Unable to copy SDP ' + err) } } - diff --git a/examples/rtp-forwarder/jsfiddle/demo.js b/examples/rtp-forwarder/jsfiddle/demo.js index ed077403..1eba38b9 100644 --- a/examples/rtp-forwarder/jsfiddle/demo.js +++ b/examples/rtp-forwarder/jsfiddle/demo.js @@ -1,13 +1,13 @@ /* eslint-env browser */ -let pc = new RTCPeerConnection({ +const pc = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302' } ] }) -var log = msg => { +const log = msg => { document.getElementById('logs').innerHTML += msg + '
' } @@ -26,7 +26,7 @@ pc.onicecandidate = event => { } window.startSession = () => { - let sd = document.getElementById('remoteSessionDescription').value + const sd = document.getElementById('remoteSessionDescription').value if (sd === '') { return alert('Session Description must not be empty') } diff --git a/examples/save-to-disk/jsfiddle/demo.js b/examples/save-to-disk/jsfiddle/demo.js index f532fa3b..d3ee36d9 100644 --- a/examples/save-to-disk/jsfiddle/demo.js +++ b/examples/save-to-disk/jsfiddle/demo.js @@ -1,13 +1,13 @@ /* eslint-env browser */ -let pc = new RTCPeerConnection({ +const pc = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302' } ] }) -var log = msg => { +const log = msg => { document.getElementById('logs').innerHTML += msg + '
' } @@ -27,7 +27,7 @@ pc.onicecandidate = event => { } window.startSession = () => { - let sd = document.getElementById('remoteSessionDescription').value + const sd = document.getElementById('remoteSessionDescription').value if (sd === '') { return alert('Session Description must not be empty') } diff --git a/examples/simulcast/jsfiddle/demo.js b/examples/simulcast/jsfiddle/demo.js index 5e211270..cc0ebf3d 100644 --- a/examples/simulcast/jsfiddle/demo.js +++ b/examples/simulcast/jsfiddle/demo.js @@ -1,95 +1,95 @@ +/* eslint-env browser */ + // Create peer conn const pc = new RTCPeerConnection({ - iceServers: [ - { - urls: "stun:stun.l.google.com:19302", - }, - ], -}); + iceServers: [{ + urls: 'stun:stun.l.google.com:19302' + }] +}) pc.oniceconnectionstatechange = (e) => { - console.log("connection state change", pc.iceConnectionState); -}; + console.log('connection state change', pc.iceConnectionState) +} pc.onicecandidate = (event) => { if (event.candidate === null) { - document.getElementById("localSessionDescription").value = btoa( + document.getElementById('localSessionDescription').value = btoa( JSON.stringify(pc.localDescription) - ); + ) } -}; +} pc.onnegotiationneeded = (e) => pc .createOffer() .then((d) => pc.setLocalDescription(d)) - .catch(console.error); + .catch(console.error) pc.ontrack = (event) => { - console.log("Got track event", event); - let video = document.createElement("video"); - video.srcObject = event.streams[0]; - video.autoplay = true; - video.width = "500"; - let label = document.createElement("div"); - label.textContent = event.streams[0].id; - document.getElementById("serverVideos").appendChild(label); - document.getElementById("serverVideos").appendChild(video); -}; + console.log('Got track event', event) + const video = document.createElement('video') + video.srcObject = event.streams[0] + video.autoplay = true + video.width = '500' + const label = document.createElement('div') + label.textContent = event.streams[0].id + document.getElementById('serverVideos').appendChild(label) + document.getElementById('serverVideos').appendChild(video) +} navigator.mediaDevices .getUserMedia({ video: { width: { - ideal: 4096, + ideal: 4096 }, height: { - ideal: 2160, + ideal: 2160 }, frameRate: { ideal: 60, - min: 10, - }, + min: 10 + } }, - audio: false, + audio: false }) .then((stream) => { - document.getElementById("browserVideo").srcObject = stream; + document.getElementById('browserVideo').srcObject = stream pc.addTransceiver(stream.getVideoTracks()[0], { - direction: "sendonly", + direction: 'sendonly', streams: [stream], sendEncodings: [ // for firefox order matters... first high resolution, then scaled resolutions... { - rid: "f", + rid: 'f' }, { - rid: "h", - scaleResolutionDownBy: 2.0, + rid: 'h', + scaleResolutionDownBy: 2.0 }, { - rid: "q", - scaleResolutionDownBy: 4.0, - }, - ], - }); - pc.addTransceiver("video"); - pc.addTransceiver("video"); - pc.addTransceiver("video"); - }); + rid: 'q', + scaleResolutionDownBy: 4.0 + } + ] + }) + pc.addTransceiver('video') + pc.addTransceiver('video') + pc.addTransceiver('video') + }) window.startSession = () => { - const sd = document.getElementById("remoteSessionDescription").value; - if (sd === "") { - return alert("Session Description must not be empty"); + const sd = document.getElementById('remoteSessionDescription').value + if (sd === '') { + return alert('Session Description must not be empty') } try { - console.log("answer", JSON.parse(atob(sd))); - pc.setRemoteDescription(new RTCSessionDescription(JSON.parse(atob(sd)))); + console.log('answer', JSON.parse(atob(sd))) + pc.setRemoteDescription(new RTCSessionDescription(JSON.parse(atob(sd)))) } catch (e) { - alert(e); + alert(e) } -}; +} window.copySDP = () => { const browserSDP = document.getElementById('localSessionDescription') diff --git a/examples/swap-tracks/jsfiddle/demo.js b/examples/swap-tracks/jsfiddle/demo.js index 94c4e638..1aed709c 100644 --- a/examples/swap-tracks/jsfiddle/demo.js +++ b/examples/swap-tracks/jsfiddle/demo.js @@ -1,3 +1,4 @@ +/* eslint-env browser */ // Create peer conn const pc = new RTCPeerConnection({ @@ -38,7 +39,7 @@ requestAnimationFrame(() => drawCircle(document.getElementById('canvasOne').getC requestAnimationFrame(() => drawCircle(document.getElementById('canvasTwo').getContext('2d'), '#cf635f', 0)) requestAnimationFrame(() => drawCircle(document.getElementById('canvasThree').getContext('2d'), '#46c240', 0)) -function drawCircle(ctx, color, angle) { +function drawCircle (ctx, color, angle) { // Background ctx.clearRect(0, 0, 200, 200) ctx.fillStyle = '#eeeeee' diff --git a/test-wasm/node_shim.js b/test-wasm/node_shim.js index 9aeb245c..a20b4c54 100644 --- a/test-wasm/node_shim.js +++ b/test-wasm/node_shim.js @@ -1,10 +1,10 @@ // This file adds RTCPeerConnection to the global context, making Node.js more // closely match the browser API for WebRTC. -const wrtc = require("wrtc"); +const wrtc = require('wrtc') global.window = { RTCPeerConnection: wrtc.RTCPeerConnection -}; +} -global.RTCPeerConnection = wrtc.RTCPeerConnection; +global.RTCPeerConnection = wrtc.RTCPeerConnection