Socket
Socket
Sign inDemoInstall

getscreenmedia

Package Overview
Dependencies
Maintainers
6
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

getscreenmedia - npm Package Compare versions

Comparing version 4.1.1 to 5.0.0

132

getscreenmedia.js
var adapter = require('webrtc-adapter');
// cache for constraints and callback
var cache = {};

@@ -10,12 +8,3 @@ module.exports = function (constraints, cb) {

if (typeof window === 'undefined' || window.location.protocol === 'http:') {
error = new Error('NavigatorUserMediaError');
error.name = 'HTTPS_REQUIRED';
return callback(error);
}
if (adapter.browserDetails.browser === 'chrome') {
var chromever = adapter.browserDetails.version;
var isCef = !window.chrome.webstore;
// check that the extension is installed by looking for a

@@ -75,68 +64,3 @@ // sessionStorage variable that contains the extension id

});
} else if (isCef || (chromever >= 26 && chromever <= 35)) {
// chrome 26 - chrome 33 way to do it -- requires bad chrome://flags
// note: this is basically in maintenance mode and will go away soon
constraints = (hasConstraints && constraints) || {
video: {
mandatory: {
googLeakyBucket: true,
maxWidth: window.screen.width,
maxHeight: window.screen.height,
maxFrameRate: 3,
chromeMediaSource: 'screen'
}
}
};
window.navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
callback(null, stream);
}).catch(function (err) {
callback(err);
});
} else {
// chrome 34+ way requiring an extension
var pending = window.setTimeout(function () {
error = new Error('NavigatorUserMediaError');
error.name = 'EXTENSION_UNAVAILABLE';
return callback(error);
}, 1000);
cache[pending] = [callback, hasConstraints ? constraints : null];
window.postMessage({ type: 'getScreen', id: pending }, '*');
}
} else if (adapter.browserDetails.browser === 'firefox') {
if (adapter.browserDetails.version >= 33) {
constraints = (hasConstraints && constraints) || {
video: {
mozMediaSource: 'window',
mediaSource: 'window'
}
};
window.navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
callback(null, stream);
var lastTime = stream.currentTime;
var polly = window.setInterval(function () {
if (!stream) window.clearInterval(polly);
if (stream.currentTime == lastTime) {
window.clearInterval(polly);
if (stream.onended) {
stream.onended();
}
}
lastTime = stream.currentTime;
}, 500);
}).catch(function (err) {
callback(err);
});
} else {
error = new Error('NavigatorUserMediaError');
error.name = 'EXTENSION_UNAVAILABLE'; // does not make much sense but...
callback(error);
}
} else if (adapter.browserDetails.browser === 'MicrosoftEdge') {
if ('getDisplayMedia' in window.navigator) {
window.navigator.getDisplayMedia({video: true}).then(function (stream) {
callback(null, stream);
}).catch(function (err) {
callback(err);
});
} else {
error = new Error('Screensharing is not supported');

@@ -146,38 +70,24 @@ error.name = 'NotSupportedError';

}
} else if (adapter.browserDetails.browser === 'firefox' && adapter.browserDetails.version >= 33) {
constraints = (hasConstraints && constraints) || {
video: {
mediaSource: 'window'
}
};
window.navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
callback(null, stream);
}).catch(function (err) {
callback(err);
});
} else if (adapter.browserDetails.browser === 'MicrosoftEdge' && 'getDisplayMedia' in window.navigator) {
window.navigator.getDisplayMedia({video: true}).then(function (stream) {
callback(null, stream);
}).catch(function (err) {
callback(err);
});
} else {
error = new Error('Screensharing is not supported');
error.name = 'NotSupportedError';
callback(error);
}
};
typeof window !== 'undefined' && window.addEventListener('message', function (event) {
if (event.origin != window.location.origin) {
return;
}
if (event.data.type == 'gotScreen' && cache[event.data.id]) {
var data = cache[event.data.id];
var constraints = data[1];
var callback = data[0];
delete cache[event.data.id];
if (event.data.sourceId === '') { // user canceled
var error = new Error('NavigatorUserMediaError');
error.name = 'NotAllowedError';
callback(error);
} else {
constraints = constraints || {audio: false, video: {
mandatory: {
chromeMediaSource: 'desktop',
maxWidth: window.screen.width,
maxHeight: window.screen.height,
maxFrameRate: 3
}
}};
constraints.video.mandatory.chromeMediaSourceId = event.data.sourceId;
window.navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
callback(null, stream);
}).catch(function (err) {
callback(err);
});
}
} else if (event.data.type == 'getScreenPending') {
window.clearTimeout(event.data.id);
}
});

8

package.json
{
"name": "getscreenmedia",
"version": "4.1.1",
"version": "5.0.0",
"description": "A browser module for attempting to get access to a MediaStream of a user's screen. With a nice node-like API.",

@@ -14,4 +14,3 @@ "main": "getscreenmedia.js",

"screen sharing",
"WebRTC",
"browserify"
"WebRTC"
],

@@ -22,6 +21,3 @@ "author": "Henrik Joreteg <henrik@andyet.net>",

"webrtc-adapter": "^4.0.0"
},
"devDependencies": {
"browserify": "^13.1.0"
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc