Last active
May 1, 2018 13:26
-
-
Save fcecagno/8ed9e9ae2bb7aded329f01a2acbeff60 to your computer and use it in GitHub Desktop.
kurento_pipelines
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "kurento-hello-world", | |
"version": "6.6.1", | |
"lockfileVersion": 1, | |
"requires": true, | |
"dependencies": { | |
"bower": { | |
"version": "1.8.2", | |
"resolved": "https://registry.npmjs.org/bower/-/bower-1.8.2.tgz", | |
"integrity": "sha1-rfU1KcjUrwLvJPuNU0HBQZ0z4vc=", | |
"dev": true | |
}, | |
"cookie-parser": { | |
"version": "1.4.3", | |
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", | |
"integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", | |
"requires": { | |
"cookie": "0.3.1", | |
"cookie-signature": "1.0.6" | |
}, | |
"dependencies": { | |
"cookie": { | |
"version": "0.3.1", | |
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", | |
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" | |
}, | |
"cookie-signature": { | |
"version": "1.0.6", | |
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | |
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | |
} | |
} | |
}, | |
"express": { | |
"version": "4.12.4", | |
"resolved": "https://registry.npmjs.org/express/-/express-4.12.4.tgz", | |
"integrity": "sha1-j+wlECVbxrLlgQfEgjnA+jB8GqI=", | |
"requires": { | |
"accepts": "1.2.13", | |
"content-disposition": "0.5.0", | |
"content-type": "1.0.4", | |
"cookie": "0.1.2", | |
"cookie-signature": "1.0.6", | |
"debug": "2.2.0", | |
"depd": "1.0.1", | |
"escape-html": "1.0.1", | |
"etag": "1.6.0", | |
"finalhandler": "0.3.6", | |
"fresh": "0.2.4", | |
"merge-descriptors": "1.0.0", | |
"methods": "1.1.2", | |
"on-finished": "2.2.1", | |
"parseurl": "1.3.2", | |
"path-to-regexp": "0.1.3", | |
"proxy-addr": "1.0.10", | |
"qs": "2.4.2", | |
"range-parser": "1.0.3", | |
"send": "0.12.3", | |
"serve-static": "1.9.3", | |
"type-is": "1.6.15", | |
"utils-merge": "1.0.0", | |
"vary": "1.0.1" | |
}, | |
"dependencies": { | |
"accepts": { | |
"version": "1.2.13", | |
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", | |
"integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", | |
"requires": { | |
"mime-types": "2.1.17", | |
"negotiator": "0.5.3" | |
}, | |
"dependencies": { | |
"mime-types": { | |
"version": "2.1.17", | |
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", | |
"integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", | |
"requires": { | |
"mime-db": "1.30.0" | |
}, | |
"dependencies": { | |
"mime-db": { | |
"version": "1.30.0", | |
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", | |
"integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" | |
} | |
} | |
}, | |
"negotiator": { | |
"version": "0.5.3", | |
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", | |
"integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g=" | |
} | |
} | |
}, | |
"content-disposition": { | |
"version": "0.5.0", | |
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", | |
"integrity": "sha1-QoT+auBjCHRjnkToCkGMKTQTXp4=" | |
}, | |
"content-type": { | |
"version": "1.0.4", | |
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", | |
"integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" | |
}, | |
"cookie": { | |
"version": "0.1.2", | |
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz", | |
"integrity": "sha1-cv7D0k5Io0Mgc9kMEmQgBQYQBLE=" | |
}, | |
"cookie-signature": { | |
"version": "1.0.6", | |
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | |
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | |
}, | |
"debug": { | |
"version": "2.2.0", | |
"resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", | |
"integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", | |
"requires": { | |
"ms": "0.7.1" | |
}, | |
"dependencies": { | |
"ms": { | |
"version": "0.7.1", | |
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", | |
"integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" | |
} | |
} | |
}, | |
"depd": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", | |
"integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=" | |
}, | |
"escape-html": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz", | |
"integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A=" | |
}, | |
"etag": { | |
"version": "1.6.0", | |
"resolved": "https://registry.npmjs.org/etag/-/etag-1.6.0.tgz", | |
"integrity": "sha1-i8ssavElTEgd/IuZfJBu9ORCwgc=", | |
"requires": { | |
"crc": "3.2.1" | |
}, | |
"dependencies": { | |
"crc": { | |
"version": "3.2.1", | |
"resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz", | |
"integrity": "sha1-XZyPt3okXNXsopHl0tAFM0urAII=" | |
} | |
} | |
}, | |
"finalhandler": { | |
"version": "0.3.6", | |
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.3.6.tgz", | |
"integrity": "sha1-2vnEFhsbBuABRmsUEd/baXO+E4s=", | |
"requires": { | |
"debug": "2.2.0", | |
"escape-html": "1.0.1", | |
"on-finished": "2.2.1" | |
} | |
}, | |
"fresh": { | |
"version": "0.2.4", | |
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz", | |
"integrity": "sha1-NYJJkgbJcjcUGQ7ddLRgT+tKYUw=" | |
}, | |
"merge-descriptors": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", | |
"integrity": "sha1-IWnPdTjhsMyH+4jhUC2EdLv3mGQ=" | |
}, | |
"methods": { | |
"version": "1.1.2", | |
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | |
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" | |
}, | |
"on-finished": { | |
"version": "2.2.1", | |
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", | |
"integrity": "sha1-XIXBzDYpn3gCllP2Z/J7a5nrwCk=", | |
"requires": { | |
"ee-first": "1.1.0" | |
}, | |
"dependencies": { | |
"ee-first": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz", | |
"integrity": "sha1-ag18YiHkkP7v2S7D9EHJzozQl/Q=" | |
} | |
} | |
}, | |
"parseurl": { | |
"version": "1.3.2", | |
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", | |
"integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" | |
}, | |
"path-to-regexp": { | |
"version": "0.1.3", | |
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.3.tgz", | |
"integrity": "sha1-IbmrgidCed4lsVbqCP0SylG4rss=" | |
}, | |
"proxy-addr": { | |
"version": "1.0.10", | |
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", | |
"integrity": "sha1-DUCoL4Afw1VWfS7LZe/j8HfxIcU=", | |
"requires": { | |
"forwarded": "0.1.2", | |
"ipaddr.js": "1.0.5" | |
}, | |
"dependencies": { | |
"forwarded": { | |
"version": "0.1.2", | |
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", | |
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" | |
}, | |
"ipaddr.js": { | |
"version": "1.0.5", | |
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", | |
"integrity": "sha1-X6eM8wG4JceKvDBC2BJyMEnqI8c=" | |
} | |
} | |
}, | |
"qs": { | |
"version": "2.4.2", | |
"resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", | |
"integrity": "sha1-9854jld33wtQENp/fE5zujJHD1o=" | |
}, | |
"range-parser": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", | |
"integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=" | |
}, | |
"send": { | |
"version": "0.12.3", | |
"resolved": "https://registry.npmjs.org/send/-/send-0.12.3.tgz", | |
"integrity": "sha1-zRLcWP3iHk+RkCs5sv2gWnptm9w=", | |
"requires": { | |
"debug": "2.2.0", | |
"depd": "1.0.1", | |
"destroy": "1.0.3", | |
"escape-html": "1.0.1", | |
"etag": "1.6.0", | |
"fresh": "0.2.4", | |
"mime": "1.3.4", | |
"ms": "0.7.1", | |
"on-finished": "2.2.1", | |
"range-parser": "1.0.3" | |
}, | |
"dependencies": { | |
"destroy": { | |
"version": "1.0.3", | |
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", | |
"integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk=" | |
}, | |
"mime": { | |
"version": "1.3.4", | |
"resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", | |
"integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" | |
}, | |
"ms": { | |
"version": "0.7.1", | |
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", | |
"integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" | |
} | |
} | |
}, | |
"serve-static": { | |
"version": "1.9.3", | |
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.9.3.tgz", | |
"integrity": "sha1-X42gcyOtOF/z3FQfGnkXsuQ261c=", | |
"requires": { | |
"escape-html": "1.0.1", | |
"parseurl": "1.3.2", | |
"send": "0.12.3", | |
"utils-merge": "1.0.0" | |
} | |
}, | |
"type-is": { | |
"version": "1.6.15", | |
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", | |
"integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", | |
"requires": { | |
"media-typer": "0.3.0", | |
"mime-types": "2.1.17" | |
}, | |
"dependencies": { | |
"media-typer": { | |
"version": "0.3.0", | |
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | |
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" | |
}, | |
"mime-types": { | |
"version": "2.1.17", | |
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", | |
"integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", | |
"requires": { | |
"mime-db": "1.30.0" | |
}, | |
"dependencies": { | |
"mime-db": { | |
"version": "1.30.0", | |
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", | |
"integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" | |
} | |
} | |
} | |
} | |
}, | |
"utils-merge": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", | |
"integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" | |
}, | |
"vary": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", | |
"integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA=" | |
} | |
} | |
}, | |
"express-session": { | |
"version": "1.10.4", | |
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.10.4.tgz", | |
"integrity": "sha1-BOHZLgBZOJPh92Vp6zrWMRPa+Uw=", | |
"requires": { | |
"cookie": "0.1.2", | |
"cookie-signature": "1.0.6", | |
"crc": "3.2.1", | |
"debug": "2.1.3", | |
"depd": "1.0.1", | |
"on-headers": "1.0.1", | |
"parseurl": "1.3.2", | |
"uid-safe": "1.1.0", | |
"utils-merge": "1.0.0" | |
}, | |
"dependencies": { | |
"cookie": { | |
"version": "0.1.2", | |
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz", | |
"integrity": "sha1-cv7D0k5Io0Mgc9kMEmQgBQYQBLE=" | |
}, | |
"cookie-signature": { | |
"version": "1.0.6", | |
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | |
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | |
}, | |
"crc": { | |
"version": "3.2.1", | |
"resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz", | |
"integrity": "sha1-XZyPt3okXNXsopHl0tAFM0urAII=" | |
}, | |
"debug": { | |
"version": "2.1.3", | |
"resolved": "https://registry.npmjs.org/debug/-/debug-2.1.3.tgz", | |
"integrity": "sha1-zoqxte6PvuK/o7Yzyrk9NmtjQY4=", | |
"requires": { | |
"ms": "0.7.0" | |
}, | |
"dependencies": { | |
"ms": { | |
"version": "0.7.0", | |
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.0.tgz", | |
"integrity": "sha1-hlvpTC5zl62KV9pqYzpuLzB5i4M=" | |
} | |
} | |
}, | |
"depd": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", | |
"integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=" | |
}, | |
"on-headers": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", | |
"integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" | |
}, | |
"parseurl": { | |
"version": "1.3.2", | |
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", | |
"integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" | |
}, | |
"uid-safe": { | |
"version": "1.1.0", | |
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-1.1.0.tgz", | |
"integrity": "sha1-WNbF2r+N+9jVKDSDmAbAP9YUMjI=", | |
"requires": { | |
"base64-url": "1.2.1", | |
"native-or-bluebird": "1.1.2" | |
}, | |
"dependencies": { | |
"base64-url": { | |
"version": "1.2.1", | |
"resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz", | |
"integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg=" | |
}, | |
"native-or-bluebird": { | |
"version": "1.1.2", | |
"resolved": "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.1.2.tgz", | |
"integrity": "sha1-OSHhECMtHreQ89rGG7NwUxx9NW4=" | |
} | |
} | |
}, | |
"utils-merge": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", | |
"integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" | |
} | |
} | |
}, | |
"kurento-client": { | |
"version": "6.6.0", | |
"resolved": "https://registry.npmjs.org/kurento-client/-/kurento-client-6.6.0.tgz", | |
"integrity": "sha1-5YYqQd9qYoPDYIF+nqCWWzP9KkA=", | |
"requires": { | |
"async": "1.2.1", | |
"error-tojson": "0.0.1", | |
"es6-promise": "3.3.1", | |
"extend": "2.0.1", | |
"inherits": "2.0.3", | |
"kurento-client-core": "6.6.0", | |
"kurento-client-elements": "6.6.0", | |
"kurento-client-filters": "6.6.0", | |
"kurento-jsonrpc": "5.1.3", | |
"minimist": "1.2.0", | |
"promise": "7.0.2", | |
"promisecallback": "0.0.4", | |
"reconnect-ws": "git://github.com/kurentoforks/reconnect-ws.git#7fb7020e3ca1ffeaaa8bb4ddd690cf28c8d02a2b" | |
}, | |
"dependencies": { | |
"async": { | |
"version": "1.2.1", | |
"resolved": "https://registry.npmjs.org/async/-/async-1.2.1.tgz", | |
"integrity": "sha1-pIFqF81f9RbfosdpikUzabl5DeA=" | |
}, | |
"error-tojson": { | |
"version": "0.0.1", | |
"resolved": "https://registry.npmjs.org/error-tojson/-/error-tojson-0.0.1.tgz", | |
"integrity": "sha1-p7GqlP/ADpB4wuuibiBL2Hzyy7k=" | |
}, | |
"es6-promise": { | |
"version": "3.3.1", | |
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", | |
"integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" | |
}, | |
"extend": { | |
"version": "2.0.1", | |
"resolved": "https://registry.npmjs.org/extend/-/extend-2.0.1.tgz", | |
"integrity": "sha1-HugBBonnOV/5RIJByYZSvHWagmA=" | |
}, | |
"inherits": { | |
"version": "2.0.3", | |
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | |
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" | |
}, | |
"kurento-client-core": { | |
"version": "6.6.0", | |
"resolved": "https://registry.npmjs.org/kurento-client-core/-/kurento-client-core-6.6.0.tgz", | |
"integrity": "sha1-VQ84XmEX31mNhyrR9TFjwG1Iq28=" | |
}, | |
"kurento-client-elements": { | |
"version": "6.6.0", | |
"resolved": "https://registry.npmjs.org/kurento-client-elements/-/kurento-client-elements-6.6.0.tgz", | |
"integrity": "sha1-rDYy31NeR989LZ6uxejZpyMYF24=" | |
}, | |
"kurento-client-filters": { | |
"version": "6.6.0", | |
"resolved": "https://registry.npmjs.org/kurento-client-filters/-/kurento-client-filters-6.6.0.tgz", | |
"integrity": "sha1-r1F+U03DKbERPkmVua823IC6lWg=" | |
}, | |
"kurento-jsonrpc": { | |
"version": "5.1.3", | |
"resolved": "https://registry.npmjs.org/kurento-jsonrpc/-/kurento-jsonrpc-5.1.3.tgz", | |
"integrity": "sha1-zguXfiZ2qHjtLARkyCVCWFdCIDA=", | |
"requires": { | |
"inherits": "2.0.3", | |
"sockjs-client": "1.1.1", | |
"ws": "0.4.32" | |
}, | |
"dependencies": { | |
"sockjs-client": { | |
"version": "1.1.1", | |
"resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.1.tgz", | |
"integrity": "sha1-KEhD6al4TXxHSxVxsyQPyp3aS7A=", | |
"requires": { | |
"debug": "2.6.9", | |
"eventsource": "0.1.6", | |
"faye-websocket": "0.11.1", | |
"inherits": "2.0.3", | |
"json3": "3.3.2", | |
"url-parse": "1.2.0" | |
}, | |
"dependencies": { | |
"debug": { | |
"version": "2.6.9", | |
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | |
"integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", | |
"requires": { | |
"ms": "2.0.0" | |
}, | |
"dependencies": { | |
"ms": { | |
"version": "2.0.0", | |
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | |
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | |
} | |
} | |
}, | |
"eventsource": { | |
"version": "0.1.6", | |
"resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", | |
"integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", | |
"requires": { | |
"original": "1.0.0" | |
}, | |
"dependencies": { | |
"original": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", | |
"integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", | |
"requires": { | |
"url-parse": "1.0.5" | |
}, | |
"dependencies": { | |
"url-parse": { | |
"version": "1.0.5", | |
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", | |
"integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", | |
"requires": { | |
"querystringify": "0.0.4", | |
"requires-port": "1.0.0" | |
}, | |
"dependencies": { | |
"querystringify": { | |
"version": "0.0.4", | |
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", | |
"integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=" | |
}, | |
"requires-port": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", | |
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"faye-websocket": { | |
"version": "0.11.1", | |
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", | |
"integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", | |
"requires": { | |
"websocket-driver": "0.7.0" | |
}, | |
"dependencies": { | |
"websocket-driver": { | |
"version": "0.7.0", | |
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", | |
"integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", | |
"requires": { | |
"http-parser-js": "0.4.9", | |
"websocket-extensions": "0.1.3" | |
}, | |
"dependencies": { | |
"http-parser-js": { | |
"version": "0.4.9", | |
"resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", | |
"integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=" | |
}, | |
"websocket-extensions": { | |
"version": "0.1.3", | |
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", | |
"integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=" | |
} | |
} | |
} | |
} | |
}, | |
"json3": { | |
"version": "3.3.2", | |
"resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", | |
"integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" | |
}, | |
"url-parse": { | |
"version": "1.2.0", | |
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", | |
"integrity": "sha1-OhnoqqbQI93SfcxEy0/I9/7COYY=", | |
"requires": { | |
"querystringify": "1.0.0", | |
"requires-port": "1.0.0" | |
}, | |
"dependencies": { | |
"querystringify": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", | |
"integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" | |
}, | |
"requires-port": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", | |
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" | |
} | |
} | |
} | |
} | |
}, | |
"ws": { | |
"version": "0.4.32", | |
"resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", | |
"integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=", | |
"requires": { | |
"commander": "2.1.0", | |
"nan": "1.0.0", | |
"options": "0.0.6", | |
"tinycolor": "0.0.1" | |
}, | |
"dependencies": { | |
"commander": { | |
"version": "2.1.0", | |
"resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", | |
"integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=" | |
}, | |
"nan": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", | |
"integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg=" | |
}, | |
"options": { | |
"version": "0.0.6", | |
"resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", | |
"integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" | |
}, | |
"tinycolor": { | |
"version": "0.0.1", | |
"resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz", | |
"integrity": "sha1-MgtaUtg6u1l42Bo+iH1K77FaYWQ=" | |
} | |
} | |
} | |
} | |
}, | |
"promise": { | |
"version": "7.0.2", | |
"resolved": "https://registry.npmjs.org/promise/-/promise-7.0.2.tgz", | |
"integrity": "sha1-rO8B/BZ1DUn9W1uNiFNHlZEPxiU=", | |
"requires": { | |
"asap": "2.0.6" | |
}, | |
"dependencies": { | |
"asap": { | |
"version": "2.0.6", | |
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", | |
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" | |
} | |
} | |
}, | |
"promisecallback": { | |
"version": "0.0.4", | |
"resolved": "https://registry.npmjs.org/promisecallback/-/promisecallback-0.0.4.tgz", | |
"integrity": "sha1-uTTxPATkQ2IrTWbeTkLqX2zmbnQ=" | |
}, | |
"reconnect-ws": { | |
"version": "git://github.com/kurentoforks/reconnect-ws.git#7fb7020e3ca1ffeaaa8bb4ddd690cf28c8d02a2b", | |
"requires": { | |
"reconnect-core": "git://github.com/kurentoforks/reconnect-core.git#921d43e91578abb2fb2613f585c010c1939cf734", | |
"websocket-stream": "0.5.1" | |
}, | |
"dependencies": { | |
"reconnect-core": { | |
"version": "git://github.com/kurentoforks/reconnect-core.git#921d43e91578abb2fb2613f585c010c1939cf734", | |
"requires": { | |
"backoff": "2.3.0" | |
}, | |
"dependencies": { | |
"backoff": { | |
"version": "2.3.0", | |
"resolved": "https://registry.npmjs.org/backoff/-/backoff-2.3.0.tgz", | |
"integrity": "sha1-7nx+OAk/kuRyhZ22NedlJFT8Ieo=" | |
} | |
} | |
}, | |
"websocket-stream": { | |
"version": "0.5.1", | |
"resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-0.5.1.tgz", | |
"integrity": "sha1-YizR8FZvuEzgpNb4VFJvPcTXDkg=", | |
"requires": { | |
"isbuffer": "0.0.0", | |
"through": "2.3.8", | |
"ws": "0.4.32" | |
}, | |
"dependencies": { | |
"isbuffer": { | |
"version": "0.0.0", | |
"resolved": "https://registry.npmjs.org/isbuffer/-/isbuffer-0.0.0.tgz", | |
"integrity": "sha1-OMFG2d9Si4v5sHAcPUPPEt8/w5s=" | |
}, | |
"through": { | |
"version": "2.3.8", | |
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", | |
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" | |
}, | |
"ws": { | |
"version": "0.4.32", | |
"resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", | |
"integrity": "sha1-eHphVEFPPJntg8V3IVOyD+sM7DI=", | |
"requires": { | |
"commander": "2.1.0", | |
"nan": "1.0.0", | |
"options": "0.0.6", | |
"tinycolor": "0.0.1" | |
}, | |
"dependencies": { | |
"commander": { | |
"version": "2.1.0", | |
"resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", | |
"integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=" | |
}, | |
"nan": { | |
"version": "1.0.0", | |
"resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", | |
"integrity": "sha1-riT4hQgY1mL8q1rPfzuVv6oszzg=" | |
}, | |
"options": { | |
"version": "0.0.6", | |
"resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", | |
"integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" | |
}, | |
"tinycolor": { | |
"version": "0.0.1", | |
"resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz", | |
"integrity": "sha1-MgtaUtg6u1l42Bo+iH1K77FaYWQ=" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"minimist": { | |
"version": "1.2.0", | |
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", | |
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" | |
}, | |
"uuid": { | |
"version": "3.1.0", | |
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", | |
"integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=" | |
}, | |
"ws": { | |
"version": "1.0.1", | |
"resolved": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz", | |
"integrity": "sha1-fQsqLljN3YGQOcKcneZQReGzEOk=", | |
"requires": { | |
"options": "0.0.6", | |
"ultron": "1.0.2" | |
}, | |
"dependencies": { | |
"options": { | |
"version": "0.0.6", | |
"resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", | |
"integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" | |
}, | |
"ultron": { | |
"version": "1.0.2", | |
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", | |
"integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" | |
} | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "kurento-hello-world", | |
"version": "6.6.1", | |
"private": true, | |
"dependencies": { | |
"cookie-parser": "^1.3.5", | |
"express": "~4.12.4", | |
"express-session": "~1.10.3", | |
"minimist": "^1.1.1", | |
"ws": "~1.0.1", | |
"kurento-client": "6.6.0", | |
"uuid": "*" | |
}, | |
"devDependencies": { | |
"bower": "^1.4.1" | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* (C) Copyright 2014-2015 Kurento (http://kurento.org/) | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
* | |
*/ | |
var path = require('path'); | |
var url = require('url'); | |
var cookieParser = require('cookie-parser') | |
var express = require('express'); | |
var session = require('express-session') | |
var minimist = require('minimist'); | |
var ws = require('ws'); | |
var kurento = require('kurento-client'); | |
var fs = require('fs'); | |
var https = require('https'); | |
var argv = minimist(process.argv.slice(1), { | |
default: { | |
ws_uri: 'ws://127.0.0.1:8888/kurento' | |
} | |
}); | |
/* | |
* Definition of global variables. | |
*/ | |
var kurentoClient = null; | |
var serverManager = null; | |
var mediaPipelines = {}; | |
var endpointsCount = 0; | |
function formatFloat(n) { | |
return +n.toFixed(3); | |
} | |
getKurentoClient(function (error, kurentoClient) { | |
kurentoClient.getServerManager(function (error, server) { | |
if (error) { | |
console.log("getServerManager failed: " + error); | |
return; | |
} | |
serverManager = server; | |
getInfo(serverManager, function (error) { | |
if (error) { | |
return; | |
} | |
// console.log(JSON.stringify(mediaPipelines, null, 4)); | |
// process.exit(0); | |
var staleEndpoints = 0; | |
var stalePipelines = 0; | |
var staleRtp = 0; | |
var staleWebrtc = 0; | |
var info = { "audio": {}, "video": {} }; | |
["audio", "video"].forEach(function(media) { | |
info[media]["duplex"] = 0; | |
info[media]["rtp"] = 0; | |
info[media]["webrtc"] = 0; | |
["inbound", "outbound"].forEach(function(direction) { | |
info[media][direction] = 0; | |
info[media][direction + "PacketsLostRateList"] = []; | |
info[media][direction + "SumPacketsLost"] = 0; | |
info[media][direction + "AvgPacketsLostRate"] = 0; | |
info[media][direction + "MaxPacketsLostRate"] = 0; | |
info[media][direction + "JitterList"] = []; | |
info[media][direction + "AvgJitter"] = 0; | |
info[media][direction + "MaxJitter"] = 0; | |
}); | |
}); | |
for (var pipelineId in mediaPipelines) { | |
var pipeline = mediaPipelines[pipelineId]; | |
var itemStaleEndpoint = 0; | |
for (var mediaEndpointId in pipeline.endpoints) { | |
var mediaEndpoint = pipeline.endpoints[mediaEndpointId]; | |
var rtp = false; | |
var webrtc = false; | |
if (mediaEndpointId.indexOf("kurento.RtpEndpoint") != -1) { | |
rtp = true; | |
} else if (mediaEndpointId.indexOf("kurento.WebRtcEndpoint") != -1) { | |
webrtc = true; | |
} | |
var inbound = false; | |
var outbound = false; | |
["audio", "video"].every(function(media, index) { | |
for (var key in mediaEndpoint[media].stats) { | |
if (mediaEndpoint[media].stats[key].type == "outboundrtp" && mediaEndpoint[media].stats[key].bytesSent > 0) { | |
outbound = true; | |
if (mediaEndpoint[media].stats[key].hasOwnProperty("packetsLost")) { | |
info[media].outboundSumPacketsLost += mediaEndpoint[media].stats[key].packetsLost; | |
if (mediaEndpoint[media].stats[key].hasOwnProperty("packetsSent")) { | |
info[media].outboundPacketsLostRateList.push(mediaEndpoint[media].stats[key].packetsLost / (mediaEndpoint[media].stats[key].packetsLost + mediaEndpoint[media].stats[key].packetsSent)); | |
} | |
} | |
if (mediaEndpoint[media].stats[key].hasOwnProperty("jitter")) { | |
info[media].outboundJitterList.push(mediaEndpoint[media].stats[key].jitter); | |
} | |
} | |
if (mediaEndpoint[media].stats[key].type == "inboundrtp" && mediaEndpoint[media].stats[key].bytesReceived > 0) { | |
inbound = true; | |
if (mediaEndpoint[media].stats[key].hasOwnProperty("packetsLost")) { | |
info[media].inboundSumPacketsLost += mediaEndpoint[media].stats[key].packetsLost; | |
if (mediaEndpoint[media].stats[key].hasOwnProperty("packetsReceived")) { | |
info[media].inboundPacketsLostRateList.push(mediaEndpoint[media].stats[key].packetsLost / (mediaEndpoint[media].stats[key].packetsLost + mediaEndpoint[media].stats[key].packetsReceived)); | |
} | |
} | |
if (mediaEndpoint[media].stats[key].hasOwnProperty("jitter")) { | |
info[media].inboundJitterList.push(mediaEndpoint[media].stats[key].jitter); | |
} | |
} | |
} | |
if (inbound) { | |
if (outbound) { | |
info[media].duplex++; | |
} else { | |
info[media].inbound++; | |
} | |
} else { | |
if (outbound) { | |
info[media].outbound++; | |
} else { | |
} | |
} | |
if (inbound || outbound) { | |
if (rtp) { | |
info[media].rtp++; | |
} else if (webrtc) { | |
info[media].webrtc++; | |
} | |
return false; | |
} | |
return true; | |
}) | |
if (! inbound && ! outbound) { | |
if (rtp) { | |
staleRtp++; | |
} else if (webrtc) { | |
staleWebrtc++; | |
} | |
itemStaleEndpoint++; | |
} | |
// if (mediaEndpoint.stale == true) { | |
// itemStaleEndpoint++; | |
// } | |
} | |
staleEndpoints += itemStaleEndpoint; | |
if (Object.keys(pipeline.endpoints).length == itemStaleEndpoint) { | |
stalePipelines++; | |
} | |
} | |
// console.log(JSON.stringify(info, null, 4)); | |
var output = "pipelines: " + Object.keys(mediaPipelines).length | |
+ ", endpoints: " + endpointsCount | |
+ ", stale_pipelines: " + stalePipelines | |
+ ", stale_endpoints: " + staleEndpoints | |
+ ", stale_endpoints_rtp: " + staleRtp | |
+ ", stale_endpoints_webrtc: " + staleWebrtc; | |
["audio", "video"].forEach(function(media) { | |
output += "\n" + media + "_endpoints: " + (info[media].inbound + info[media].outbound + info[media].duplex); | |
output += ", " + media + "_duplex_endpoints: " + info[media].duplex; | |
output += ", " + media + "_inbound_endpoints: " + info[media].inbound; | |
if (info[media].inboundPacketsLostRateList.length > 0) { | |
let inboundSumPacketsLostRate = info[media].inboundPacketsLostRateList.reduce((previous, current) => current += previous); | |
let inboundAvgPacketsLostRate = info[media].inboundSumPacketsLostRate / info[media].inboundPacketsLostRateList.length; | |
let inboundMaxPacketsLostRate = Math.max.apply(null, info[media].inboundPacketsLostRateList); | |
output += ", " + media + "_inbound_avg_packet_loss_rate: " + formatFloat(info[media].inboundAvgPacketsLostRate) | |
+ ", " + media + "_inbound_max_packet_loss_rate: " + formatFloat(info[media].inboundMaxPacketsLostRate) | |
+ ", " + media + "_inbound_sum_packet_loss: " + info[media].inboundSumPacketsLost; | |
} | |
if (info[media].inboundJitterList.length > 0) { | |
let inboundSumJitter = info[media].inboundJitterList.reduce((previous, current) => current += previous); | |
let inboundAvgJitter = info[media].inboundSumJitter / info[media].inboundJitterList.length; | |
let inboundMaxJitter = Math.max.apply(null, info[media].inboundJitterList); | |
output += ", " + media + "_inbound_avg_jitter: " + formatFloat(info[media].inboundAvgJitter) | |
+ ", " + media + "_inbound_max_jitter: " + formatFloat(info[media].inboundMaxJitter); | |
} | |
output += ", " + media + "_outbound_endpoints: " + info[media].outbound; | |
if (info[media].outboundPacketsLostRateList.length > 0) { | |
let outboundSumPacketsLostRate = info[media].outboundPacketsLostRateList.reduce((previous, current) => current += previous); | |
let outboundAvgPacketsLostRate = info[media].outboundSumPacketsLostRate / info[media].outboundPacketsLostRateList.length; | |
let outboundMaxPacketsLostRate = Math.max.apply(null, info[media].outboundPacketsLostRateList); | |
output += ", " + media + "_outbound_avg_packet_loss_rate: " + formatFloat(info[media].outboundAvgPacketsLostRate) | |
+ ", " + media + "_outbound_max_packet_loss_rate: " + formatFloat(info[media].outboundMaxPacketsLostRate) | |
+ ", " + media + "_outbound_sum_packet_loss: " + info[media].outboundSumPacketsLost; | |
} | |
if (info[media].outboundJitterList.length > 0) { | |
let outboundSumJitter = info[media].outboundJitterList.reduce((previous, current) => current += previous); | |
let outboundAvgJitter = info[media].outboundSumJitter / info[media].outboundJitterList.length; | |
let outboundMaxJitter = Math.max.apply(null, info[media].outboundJitterList); | |
output += ", " + media + "_outbound_avg_jitter: " + formatFloat(info[media].outboundAvgJitter) | |
+ ", " + media + "_outbound_max_jitter: " + formatFloat(info[media].outboundMaxJitter); | |
} | |
output += ", " + media + "_rtp_endpoints: " + info[media].rtp; | |
output += ", " + media + "_webrtc_endpoints: " + info[media].webrtc; | |
}); | |
console.log(output); | |
process.exit(0); | |
}); | |
}); | |
}); | |
/* | |
* Definition of functions | |
*/ | |
// Recover kurentoClient for the first time. | |
function getKurentoClient(callback) { | |
if (kurentoClient !== null) { | |
return callback(null, kurentoClient); | |
} | |
kurento(argv.ws_uri, function (error, _kurentoClient) { | |
if (error) { | |
console.log("Could not find media server at address " + argv.ws_uri); | |
return callback("Could not find media server at address" + argv.ws_uri | |
+ ". Exiting with error " + error); | |
} | |
kurentoClient = _kurentoClient; | |
callback(null, kurentoClient); | |
}); | |
} | |
function getInfo(server, callback) { | |
if (!server) { | |
return callback('error - failed to find server'); | |
} | |
server.getInfo(function (error, serverInfo) { | |
if (error) { | |
return callback(error); | |
} | |
getPipelinesInfo(server, callback); | |
}) | |
} | |
function getAllFuncs(obj) { | |
var props = []; | |
do { | |
props = props.concat(Object.getOwnPropertyNames(obj)); | |
} while (obj = Object.getPrototypeOf(obj)); | |
return props.filter(function(elem, pos) { | |
return props.indexOf(elem) == pos; | |
}).sort(); | |
} | |
function getPipelinesInfo(server, callback) { | |
if (!server) { | |
return callback('error - failed to find server'); | |
} | |
server.getPipelines(function (error, pipelines) { | |
if (error) { | |
return callback(error); | |
} | |
if (pipelines && (pipelines.length < 1)) { | |
return callback(null); | |
} | |
var counter = 0; | |
var promises = []; | |
var firstPromises = []; | |
pipelines.forEach(function (p, index, array) { | |
mediaPipelines[p.id] = { "endpoints": {} }; | |
firstPromises.push(setLatencyStats(p, mediaPipelines[p.id])); | |
firstPromises.push(getCreationTime(p, mediaPipelines[p.id])); | |
// console.log("===> " + JSON.stringify(getAllFuncs(p), null, 4)); | |
// console.log("===> " + p.getCreationTime()); | |
p.getChildren(function (error, elements) { | |
endpointsCount += elements.length; | |
mediaPipelines[p.id].hasPlayer = elements.length > 1; | |
elements.forEach(function (me, index, array) { | |
mediaPipelines[p.id].endpoints[me.id] = { "video": {}, "audio": {} }; | |
promises.push(getCreationTime(me, mediaPipelines[p.id].endpoints[me.id])); | |
promises.push(isFlowingIn(me, "VIDEO", mediaPipelines[p.id].endpoints[me.id].video)); | |
promises.push(isFlowingIn(me, "AUDIO", mediaPipelines[p.id].endpoints[me.id].audio)); | |
promises.push(isFlowingOut(me, "VIDEO", mediaPipelines[p.id].endpoints[me.id].video)); | |
promises.push(isFlowingOut(me, "AUDIO", mediaPipelines[p.id].endpoints[me.id].audio)); | |
promises.push(getStats(me, "VIDEO", mediaPipelines[p.id].endpoints[me.id].video)); | |
promises.push(getStats(me, "AUDIO", mediaPipelines[p.id].endpoints[me.id].audio)); | |
promises.push(getMediaState(me, mediaPipelines[p.id].endpoints[me.id])); | |
}) | |
counter++; | |
if (counter == pipelines.length) { | |
var rejectPromise = function(error) { | |
return callback(error); | |
} | |
Promise.all(firstPromises).then(function(value) { | |
Promise.all(promises).then(function(value) { | |
return callback(); | |
}, rejectPromise); | |
}, rejectPromise); | |
} | |
}) | |
}) | |
}) | |
} | |
var setLatencyStats = function(pipeline, obj) { | |
var promise = new Promise(function(resolve, reject) { | |
pipeline.setLatencyStats(true, function (error) { | |
if (error) { | |
reject(error); | |
} else { | |
resolve(); | |
} | |
}); | |
}); | |
return promise; | |
} | |
var getCreationTime = function(element, obj) { | |
var promise = new Promise(function(resolve, reject) { | |
element.getCreationTime(function (error, result) { | |
if (error) { | |
reject(error); | |
} else { | |
// var t = new Date(result * 1000); | |
// var formatted = t.toISOString(); | |
// console.log(formatted); | |
obj.creationTime = result; | |
resolve(); | |
} | |
}); | |
}); | |
return promise; | |
} | |
var isFlowingIn = function(mediaElement, media, obj) { | |
var promise = new Promise(function(resolve, reject) { | |
mediaElement.isMediaFlowingIn(media, function (error, result) { | |
if (error) { | |
reject(error); | |
} else { | |
obj.mediaFlowingIn = result; | |
resolve(); | |
} | |
}); | |
}); | |
return promise; | |
} | |
var isFlowingOut = function(mediaElement, media, obj) { | |
var promise = new Promise(function(resolve, reject) { | |
mediaElement.isMediaFlowingOut(media, function (error, result) { | |
if (error) { | |
reject(error); | |
} else { | |
obj.mediaFlowingOut = result; | |
resolve(); | |
} | |
}); | |
}); | |
return promise; | |
} | |
var getStats = function(mediaElement, media, obj) { | |
var promise = new Promise(function(resolve, reject) { | |
mediaElement.getStats(media, function (error, result) { | |
if (error) { | |
reject(error); | |
} else { | |
obj.stats = result; | |
resolve(); | |
} | |
}); | |
}); | |
return promise; | |
} | |
var getMediaState = function(mediaElement, obj) { | |
var promise = new Promise(function(resolve, reject) { | |
mediaElement.getMediaState(function (error, result) { | |
if (error) { | |
reject(error); | |
} else { | |
obj.stale = result == "DISCONNECTED"; | |
resolve(); | |
} | |
}); | |
}); | |
return promise; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment