enumerate-devices
Version:
A small project to normalize browser differences for enumerating media devices
51 lines (49 loc) • 2.73 kB
JavaScript
(function(e){if("function"==typeof bootstrap)bootstrap("enumeratedevices",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeEnumerateDevices=e}else"undefined"!=typeof window?window.enumerateDevices=e():global.enumerateDevices=e()})(function(){var define,ses,bootstrap,module,exports;
return (function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s<n.length;s++)i(n[s]);return i})({1:[function(require,module,exports){
module.exports = function (cb) {
return new Promise(function(resolve, reject) {
var processDevices = function (devices) {
var normalizedDevices = [];
for (var i = 0; i < devices.length; i++) {
var device = devices[i];
//make chrome values match spec
var kind = device.kind || null;
if (kind && kind.toLowerCase() === 'audio') {
kind = 'audioinput';
} else if (kind && kind.toLowerCase() === 'video') {
kind = 'videoinput';
}
normalizedDevices.push({
facing: device.facing || null,
deviceId: device.id || device.deviceId || null,
label: device.label || null,
kind: kind,
groupId: device.groupId || null
});
}
resolve(normalizedDevices);
if (cb) {
console.warn('module now uses promise based api - callback is deprecated');
cb(null, normalizedDevices);
}
};
if (window.navigator && window.navigator.mediaDevices && window.navigator.mediaDevices.enumerateDevices) {
window.navigator.mediaDevices.enumerateDevices().then(processDevices);
} else if (window.MediaStreamTrack && window.MediaStreamTrack.getSources) {
window.MediaStreamTrack.getSources(processDevices);
} else {
err = {
message: 'Device enumeration not supported.',
kind: 'METHOD_NOT_AVAILABLE'
};
reject(err);
if (cb) {
console.warn('module now uses promise based api - callback is deprecated');
cb(err);
}
}
});
};
},{}]},{},[1])(1)
});
;