Socket
Socket
Sign inDemoInstall

p2p-media-loader-shaka

Package Overview
Dependencies
3
Maintainers
2
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.3.0 to 0.4.0

45

build/p2p-media-loader-shaka.js

@@ -68,2 +68,7 @@ require=(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){

}
getDetails() {
return {
loader: this.loader.getDetails()
};
}
initShakaPlayer(player) {

@@ -92,2 +97,10 @@ integration.initShakaPlayer(player, this.segmentManager);

*/
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });

@@ -155,14 +168,8 @@ const Debug = require("debug");

}
let rejectCallback = null;
debug("request", "load", segment.identity);
const promise = new Promise((resolve, reject) => {
rejectCallback = reject;
segmentManager
.load(segment, utils_1.getSchemedUri(player.getManifestUri()), getPlayheadTime(player))
.then((data) => resolve({ data }));
const promise = segmentManager.load(segment, utils_1.getSchemedUri(player.getManifestUri()), getPlayheadTime(player));
const abort = () => __awaiter(this, void 0, void 0, function* () {
debug("request", "abort", segment.identity);
// TODO: implement abort in SegmentManager
});
const abort = () => {
debug("request", "abort", segment.identity);
return rejectCallback(new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE, shaka.util.Error.Category.NETWORK, shaka.util.Error.Code.OPERATION_ABORTED));
};
return new shaka.util.AbortableOperation(promise, abort);

@@ -514,13 +521,8 @@ }

reportSuccess(request, loaderSegment) {
if (request.resolve) {
let timeDelation = 0;
if (loaderSegment.downloadSpeed > 0 && loaderSegment.data && loaderSegment.data.byteLength > 0) {
const downloadTime = Math.trunc(loaderSegment.data.byteLength / loaderSegment.downloadSpeed);
timeDelation = Date.now() - request.timeCreated + downloadTime;
}
setTimeout(() => {
this.debug("report success", request.id);
request.resolve(loaderSegment.data);
}, timeDelation);
let timeMs = undefined;
if (loaderSegment.downloadSpeed > 0 && loaderSegment.data && loaderSegment.data.byteLength > 0) {
timeMs = Math.trunc(loaderSegment.data.byteLength / loaderSegment.downloadSpeed);
}
this.debug("report success", request.id);
request.resolve({ data: loaderSegment.data, timeMs });
}

@@ -540,3 +542,2 @@ reportError(request, error) {

this.reject = reject;
this.timeCreated = Date.now();
}

@@ -589,4 +590,4 @@ }

exports.Engine = engine_1.Engine;
exports.version = typeof (__P2PML_VERSION__) === "undefined" ? "0.3.0" : __P2PML_VERSION__;
exports.version = typeof (__P2PML_VERSION__) === "undefined" ? "0.4.0" : __P2PML_VERSION__;
},{"./engine":2}]},{},[1]);

@@ -1,1 +0,1 @@

require=function(){return function e(t,s,r){function i(a,o){if(!s[a]){if(!t[a]){var h="function"==typeof require&&require;if(!o&&h)return h(a,!0);if(n)return n(a,!0);var d=new Error("Cannot find module '"+a+"'");throw d.code="MODULE_NOT_FOUND",d}var g=s[a]={exports:{}};t[a][0].call(g.exports,function(e){return i(t[a][1][e]||e)},g,g.exports,e,t,s,r)}return s[a].exports}for(var n="function"==typeof require&&require,a=0;a<r.length;a++)i(r[a]);return i}}()({1:[function(e,t,s){window.p2pml||(window.p2pml={}),window.p2pml.shaka=e("p2p-media-loader-shaka")},{"p2p-media-loader-shaka":"p2p-media-loader-shaka"}],2:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});const r=e("events"),i=e("p2p-media-loader-core"),n=e("./segment-manager"),a=e("./integration");s.Engine=class extends r.EventEmitter{static isSupported(){return i.HybridLoader.isSupported()}constructor(e={}){super(),this.loader=new i.HybridLoader(e.loader),this.segmentManager=new n.SegmentManager(this.loader,e.segments),Object.keys(i.Events).map(e=>i.Events[e]).forEach(e=>this.loader.on(e,(...t)=>this.emit(e,...t)))}destroy(){this.loader.destroy(),this.segmentManager.destroy()}getSettings(){return{segments:this.segmentManager.getSettings(),loader:this.loader.getSettings()}}initShakaPlayer(e){a.initShakaPlayer(e,this.segmentManager)}}},{"./integration":3,"./segment-manager":6,events:"events","p2p-media-loader-core":"p2p-media-loader-core"}],3:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});const r=e("debug"),i=e("./manifest-parser-proxy"),n=e("./utils"),a=r("p2pml:shaka:index");function o(e,t,s){if(!t.p2pml||s!==shaka.net.NetworkingEngine.RequestType.SEGMENT)return shaka.net.HttpXHRPlugin(e,t,s);const{player:r,segmentManager:i}=t.p2pml,o=r.getManifest();if(!o||!o.p2pml)return shaka.net.HttpXHRPlugin(e,t,s);const d=o.p2pml.parser.find(e,t.headers.Range);if(!d||"video"!==d.streamType)return shaka.net.HttpXHRPlugin(e,t,s);let g=null;a("request","load",d.identity);const u=new Promise((e,t)=>{g=t,i.load(d,n.getSchemedUri(r.getManifestUri()),h(r)).then(t=>e({data:t}))});return new shaka.util.AbortableOperation(u,()=>(a("request","abort",d.identity),g(new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE,shaka.util.Error.Category.NETWORK,shaka.util.Error.Code.OPERATION_ABORTED))))}function h(e){let t=0;const s=e.getPlayheadTimeAsDate();return s&&(t=s.valueOf(),e.isLive()&&(t-=e.getPresentationStartTimeAsDate().valueOf()),t/=1e3),t}s.initShakaPlayer=function(e,t){a("register parser proxies"),shaka.media.ManifestParser.registerParserByExtension("mpd",i.ShakaDashManifestParserProxy),shaka.media.ManifestParser.registerParserByMime("application/dash+xml",i.ShakaDashManifestParserProxy),shaka.media.ManifestParser.registerParserByExtension("m3u8",i.ShakaHlsManifestParserProxy),shaka.media.ManifestParser.registerParserByMime("application/x-mpegurl",i.ShakaHlsManifestParserProxy),shaka.media.ManifestParser.registerParserByMime("application/vnd.apple.mpegurl",i.ShakaHlsManifestParserProxy),a("init networking engine"),shaka.net.NetworkingEngine.registerScheme("http",o),shaka.net.NetworkingEngine.registerScheme("https",o);let s=0,r=0;e.addEventListener("loading",()=>{s>0&&(clearInterval(s),s=0),r=0;const i=e.getManifest();i&&i.p2pml&&i.p2pml.parser.reset(),t.destroy(),s=setInterval(()=>{const s=h(e);(s!==r||e.isBuffering())&&(t.setPlayheadTime(s),r=s)},500)}),a("register request filter"),e.getNetworkingEngine().registerRequestFilter((s,r)=>{r.p2pml={player:e,segmentManager:t}})}},{"./manifest-parser-proxy":4,"./utils":7,debug:"debug"}],4:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});const r=e("./parser-segment");class i{constructor(e){this.cache=new r.ParserSegmentCache(200),this.originalManifestParser=e}isHls(){return this.originalManifestParser instanceof shaka.hls.HlsParser}isDash(){return this.originalManifestParser instanceof shaka.dash.DashParser}start(e,t){return this.originalManifestParser.start(e,t).then(e=>{this.manifest=e;for(const t of e.periods){const e=[];for(const s of t.variants)null!=s.video&&-1==e.indexOf(s.video)&&(this.hookGetSegmentReference(s.video),e.push(s.video)),null!=s.audio&&-1==e.indexOf(s.audio)&&(this.hookGetSegmentReference(s.audio),e.push(s.audio))}return e.p2pml={parser:this},e})}configure(e){return this.originalManifestParser.configure(e)}stop(){return this.originalManifestParser.stop()}update(){return this.originalManifestParser.update()}onExpirationUpdated(){return this.originalManifestParser.onExpirationUpdated()}find(e,t){return this.cache.find(e,t)}reset(){this.cache.clear()}hookGetSegmentReference(e){e.getSegmentReferenceOriginal=e.getSegmentReference,e.getSegmentReference=(t=>(this.cache.add(e,t),e.getSegmentReferenceOriginal(t))),e.getPosition=(()=>this.isHls()&&"video"===e.type?this.manifest.periods[0].variants.reduce((e,t)=>(t.video&&t.video.id&&!e.includes(t.video.id)&&e.push(t.video.id),e),[]).indexOf(e.id):-1)}}s.ShakaManifestParserProxy=i;s.ShakaDashManifestParserProxy=class extends i{constructor(){super(new shaka.dash.DashParser)}};s.ShakaHlsManifestParserProxy=class extends i{constructor(){super(new shaka.hls.HlsParser)}}},{"./parser-segment":5}],5:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});const r=e("./utils");class i{constructor(e,t,s,r,i,n,a,o,h,d,g,u){this.streamId=e,this.streamType=t,this.streamPosition=s,this.streamIdentity=r,this.identity=i,this.position=n,this.start=a,this.end=o,this.uri=h,this.range=d,this.prev=g,this.next=u}static create(e,t){const s=e.getSegmentReferenceOriginal(t);if(!s)return;const n=s.createUris();if(!n||0===n.length)return;const a=s.getStartTime(),o=s.getEndTime(),h=s.getStartByte(),d=s.getEndByte(),g=h||d?`bytes=${h||""}-${d||""}`:void 0,u=e.type.substring(0,1).toUpperCase(),l=e.getPosition(),c=l>=0,m=c?`${u}${l}`:`${u}${e.id}`,p=c?`${m}+${t}`:`${m}+${Number(a).toFixed(3)}`;return new i(e.id,e.type,l,m,p,t,a,o,r.getSchemedUri(n[0]),g,()=>i.create(e,t-1),()=>i.create(e,t+1))}}s.ParserSegment=i;s.ParserSegmentCache=class{constructor(e){this.segments=[],this.maxSegments=e}find(e,t){return this.segments.find(s=>s.uri===e&&s.range===t)}add(e,t){const s=i.create(e,t);s&&!this.find(s.uri,s.range)&&(this.segments.push(s),this.segments.length>this.maxSegments&&this.segments.splice(0,.2*this.maxSegments))}clear(){this.segments.splice(0)}}},{"./utils":7}],6:[function(e,t,s){"use strict";var r=this&&this.__awaiter||function(e,t,s,r){return new(s||(s=Promise))(function(i,n){function a(e){try{h(r.next(e))}catch(e){n(e)}}function o(e){try{h(r.throw(e))}catch(e){n(e)}}function h(e){e.done?i(e.value):new s(function(t){t(e.value)}).then(a,o)}h((r=r.apply(e,t||[])).next())})};Object.defineProperty(s,"__esModule",{value:!0});const i=e("debug"),n=e("p2p-media-loader-core"),a={forwardSegmentCount:20,maxHistorySegments:50,swarmId:void 0};s.SegmentManager=class{constructor(e,t={}){this.debug=i("p2pml:shaka:sm"),this.requests=new Map,this.manifestUri="",this.playheadTime=0,this.segmentHistory=[],this.onSegmentLoaded=(e=>{this.requests.has(e.id)&&(this.reportSuccess(this.requests.get(e.id),e),this.debug("request delete",e.id),this.requests.delete(e.id))}),this.onSegmentError=((e,t)=>{this.requests.has(e.id)&&(this.reportError(this.requests.get(e.id),t),this.debug("request delete from error",e.id),this.requests.delete(e.id))}),this.onSegmentAbort=(e=>{this.requests.has(e.id)&&(this.reportError(this.requests.get(e.id),"Internal abort"),this.debug("request delete from abort",e.id),this.requests.delete(e.id))}),this.settings=Object.assign(a,t),this.loader=e,this.loader.on(n.Events.SegmentLoaded,this.onSegmentLoaded),this.loader.on(n.Events.SegmentError,this.onSegmentError),this.loader.on(n.Events.SegmentAbort,this.onSegmentAbort)}destroy(){0!==this.requests.size&&(console.error("Destroying segment manager with active request(s)!"),this.requests.clear()),this.playheadTime=0,this.segmentHistory.splice(0),this.loader.destroy()}getSettings(){return this.settings}load(e,t,s){return r(this,void 0,void 0,function*(){this.manifestUri=t,this.playheadTime=s,this.pushSegmentHistory(e);const r=this.refreshLoad(),i=this.loader.getSegment(r.id);return new Promise((e,t)=>{const s=new o(r.id,e,t);i?this.reportSuccess(s,i):(this.debug("request add",s.id),this.requests.set(s.id,s))})})}setPlayheadTime(e){this.playheadTime=e,this.segmentHistory.length>0&&this.refreshLoad()}refreshLoad(){const e=this.segmentHistory[this.segmentHistory.length-1],t=this.playheadTime>.1?this.playheadTime:e.start,s=this.segmentHistory.reduce((e,s)=>(s.start>=t&&e.push(s),e),[]);0===s.length&&s.push(e);const r=s.length-1;do{const e=s[s.length-1].next();if(!e)break;s.push(e)}while(s.length<this.settings.forwardSegmentCount);const i=this.settings.swarmId&&0!==this.settings.swarmId.length?this.settings.swarmId:this.manifestUri.split("?")[0],a=s.map((e,t)=>new n.Segment(`${i}+${e.identity}`,e.uri,e.range,t));return this.loader.load(a,`${i}+${e.streamIdentity}`),a[r]}pushSegmentHistory(e){this.segmentHistory.length>=this.settings.maxHistorySegments&&(this.debug("segment history auto shrink"),this.segmentHistory.splice(0,.2*this.settings.maxHistorySegments)),this.segmentHistory.length>0&&this.segmentHistory[this.segmentHistory.length-1].start>e.start&&(this.debug("segment history reset due to playhead seek back"),this.segmentHistory.splice(0)),this.segmentHistory.push(e)}reportSuccess(e,t){if(e.resolve){let s=0;if(t.downloadSpeed>0&&t.data&&t.data.byteLength>0){const r=Math.trunc(t.data.byteLength/t.downloadSpeed);s=Date.now()-e.timeCreated+r}setTimeout(()=>{this.debug("report success",e.id),e.resolve(t.data)},s)}}reportError(e,t){e.reject&&(this.debug("report error",e.id),e.reject(t))}};class o{constructor(e,t,s){this.id=e,this.resolve=t,this.reject=s,this.timeCreated=Date.now()}}},{debug:"debug","p2p-media-loader-core":"p2p-media-loader-core"}],7:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),s.getSchemedUri=function(e){return e.startsWith("//")?window.location.protocol+e:e}},{}],"p2p-media-loader-shaka":[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});var r=e("./engine");s.Engine=r.Engine,s.version="undefined"==typeof __P2PML_VERSION__?"0.3.0":__P2PML_VERSION__},{"./engine":2}]},{},[1]);
require=function(){return function e(t,s,r){function i(a,o){if(!s[a]){if(!t[a]){var h="function"==typeof require&&require;if(!o&&h)return h(a,!0);if(n)return n(a,!0);var d=new Error("Cannot find module '"+a+"'");throw d.code="MODULE_NOT_FOUND",d}var g=s[a]={exports:{}};t[a][0].call(g.exports,function(e){return i(t[a][1][e]||e)},g,g.exports,e,t,s,r)}return s[a].exports}for(var n="function"==typeof require&&require,a=0;a<r.length;a++)i(r[a]);return i}}()({1:[function(e,t,s){window.p2pml||(window.p2pml={}),window.p2pml.shaka=e("p2p-media-loader-shaka")},{"p2p-media-loader-shaka":"p2p-media-loader-shaka"}],2:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});const r=e("events"),i=e("p2p-media-loader-core"),n=e("./segment-manager"),a=e("./integration");s.Engine=class extends r.EventEmitter{static isSupported(){return i.HybridLoader.isSupported()}constructor(e={}){super(),this.loader=new i.HybridLoader(e.loader),this.segmentManager=new n.SegmentManager(this.loader,e.segments),Object.keys(i.Events).map(e=>i.Events[e]).forEach(e=>this.loader.on(e,(...t)=>this.emit(e,...t)))}destroy(){this.loader.destroy(),this.segmentManager.destroy()}getSettings(){return{segments:this.segmentManager.getSettings(),loader:this.loader.getSettings()}}getDetails(){return{loader:this.loader.getDetails()}}initShakaPlayer(e){a.initShakaPlayer(e,this.segmentManager)}}},{"./integration":3,"./segment-manager":6,events:"events","p2p-media-loader-core":"p2p-media-loader-core"}],3:[function(e,t,s){"use strict";var r=this&&this.__awaiter||function(e,t,s,r){return new(s||(s=Promise))(function(i,n){function a(e){try{h(r.next(e))}catch(e){n(e)}}function o(e){try{h(r.throw(e))}catch(e){n(e)}}function h(e){e.done?i(e.value):new s(function(t){t(e.value)}).then(a,o)}h((r=r.apply(e,t||[])).next())})};Object.defineProperty(s,"__esModule",{value:!0});const i=e("debug"),n=e("./manifest-parser-proxy"),a=e("./utils"),o=i("p2pml:shaka:index");function h(e,t,s){if(!t.p2pml||s!==shaka.net.NetworkingEngine.RequestType.SEGMENT)return shaka.net.HttpXHRPlugin(e,t,s);const{player:i,segmentManager:n}=t.p2pml,h=i.getManifest();if(!h||!h.p2pml)return shaka.net.HttpXHRPlugin(e,t,s);const g=h.p2pml.parser.find(e,t.headers.Range);if(!g||"video"!==g.streamType)return shaka.net.HttpXHRPlugin(e,t,s);o("request","load",g.identity);const u=n.load(g,a.getSchemedUri(i.getManifestUri()),d(i));return new shaka.util.AbortableOperation(u,()=>r(this,void 0,void 0,function*(){o("request","abort",g.identity)}))}function d(e){let t=0;const s=e.getPlayheadTimeAsDate();return s&&(t=s.valueOf(),e.isLive()&&(t-=e.getPresentationStartTimeAsDate().valueOf()),t/=1e3),t}s.initShakaPlayer=function(e,t){o("register parser proxies"),shaka.media.ManifestParser.registerParserByExtension("mpd",n.ShakaDashManifestParserProxy),shaka.media.ManifestParser.registerParserByMime("application/dash+xml",n.ShakaDashManifestParserProxy),shaka.media.ManifestParser.registerParserByExtension("m3u8",n.ShakaHlsManifestParserProxy),shaka.media.ManifestParser.registerParserByMime("application/x-mpegurl",n.ShakaHlsManifestParserProxy),shaka.media.ManifestParser.registerParserByMime("application/vnd.apple.mpegurl",n.ShakaHlsManifestParserProxy),o("init networking engine"),shaka.net.NetworkingEngine.registerScheme("http",h),shaka.net.NetworkingEngine.registerScheme("https",h);let s=0,r=0;e.addEventListener("loading",()=>{s>0&&(clearInterval(s),s=0),r=0;const i=e.getManifest();i&&i.p2pml&&i.p2pml.parser.reset(),t.destroy(),s=setInterval(()=>{const s=d(e);(s!==r||e.isBuffering())&&(t.setPlayheadTime(s),r=s)},500)}),o("register request filter"),e.getNetworkingEngine().registerRequestFilter((s,r)=>{r.p2pml={player:e,segmentManager:t}})}},{"./manifest-parser-proxy":4,"./utils":7,debug:"debug"}],4:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});const r=e("./parser-segment");class i{constructor(e){this.cache=new r.ParserSegmentCache(200),this.originalManifestParser=e}isHls(){return this.originalManifestParser instanceof shaka.hls.HlsParser}isDash(){return this.originalManifestParser instanceof shaka.dash.DashParser}start(e,t){return this.originalManifestParser.start(e,t).then(e=>{this.manifest=e;for(const t of e.periods){const e=[];for(const s of t.variants)null!=s.video&&-1==e.indexOf(s.video)&&(this.hookGetSegmentReference(s.video),e.push(s.video)),null!=s.audio&&-1==e.indexOf(s.audio)&&(this.hookGetSegmentReference(s.audio),e.push(s.audio))}return e.p2pml={parser:this},e})}configure(e){return this.originalManifestParser.configure(e)}stop(){return this.originalManifestParser.stop()}update(){return this.originalManifestParser.update()}onExpirationUpdated(){return this.originalManifestParser.onExpirationUpdated()}find(e,t){return this.cache.find(e,t)}reset(){this.cache.clear()}hookGetSegmentReference(e){e.getSegmentReferenceOriginal=e.getSegmentReference,e.getSegmentReference=(t=>(this.cache.add(e,t),e.getSegmentReferenceOriginal(t))),e.getPosition=(()=>this.isHls()&&"video"===e.type?this.manifest.periods[0].variants.reduce((e,t)=>(t.video&&t.video.id&&!e.includes(t.video.id)&&e.push(t.video.id),e),[]).indexOf(e.id):-1)}}s.ShakaManifestParserProxy=i;s.ShakaDashManifestParserProxy=class extends i{constructor(){super(new shaka.dash.DashParser)}};s.ShakaHlsManifestParserProxy=class extends i{constructor(){super(new shaka.hls.HlsParser)}}},{"./parser-segment":5}],5:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});const r=e("./utils");class i{constructor(e,t,s,r,i,n,a,o,h,d,g,u){this.streamId=e,this.streamType=t,this.streamPosition=s,this.streamIdentity=r,this.identity=i,this.position=n,this.start=a,this.end=o,this.uri=h,this.range=d,this.prev=g,this.next=u}static create(e,t){const s=e.getSegmentReferenceOriginal(t);if(!s)return;const n=s.createUris();if(!n||0===n.length)return;const a=s.getStartTime(),o=s.getEndTime(),h=s.getStartByte(),d=s.getEndByte(),g=h||d?`bytes=${h||""}-${d||""}`:void 0,u=e.type.substring(0,1).toUpperCase(),l=e.getPosition(),c=l>=0,m=c?`${u}${l}`:`${u}${e.id}`,p=c?`${m}+${t}`:`${m}+${Number(a).toFixed(3)}`;return new i(e.id,e.type,l,m,p,t,a,o,r.getSchemedUri(n[0]),g,()=>i.create(e,t-1),()=>i.create(e,t+1))}}s.ParserSegment=i;s.ParserSegmentCache=class{constructor(e){this.segments=[],this.maxSegments=e}find(e,t){return this.segments.find(s=>s.uri===e&&s.range===t)}add(e,t){const s=i.create(e,t);s&&!this.find(s.uri,s.range)&&(this.segments.push(s),this.segments.length>this.maxSegments&&this.segments.splice(0,.2*this.maxSegments))}clear(){this.segments.splice(0)}}},{"./utils":7}],6:[function(e,t,s){"use strict";var r=this&&this.__awaiter||function(e,t,s,r){return new(s||(s=Promise))(function(i,n){function a(e){try{h(r.next(e))}catch(e){n(e)}}function o(e){try{h(r.throw(e))}catch(e){n(e)}}function h(e){e.done?i(e.value):new s(function(t){t(e.value)}).then(a,o)}h((r=r.apply(e,t||[])).next())})};Object.defineProperty(s,"__esModule",{value:!0});const i=e("debug"),n=e("p2p-media-loader-core"),a={forwardSegmentCount:20,maxHistorySegments:50,swarmId:void 0};s.SegmentManager=class{constructor(e,t={}){this.debug=i("p2pml:shaka:sm"),this.requests=new Map,this.manifestUri="",this.playheadTime=0,this.segmentHistory=[],this.onSegmentLoaded=(e=>{this.requests.has(e.id)&&(this.reportSuccess(this.requests.get(e.id),e),this.debug("request delete",e.id),this.requests.delete(e.id))}),this.onSegmentError=((e,t)=>{this.requests.has(e.id)&&(this.reportError(this.requests.get(e.id),t),this.debug("request delete from error",e.id),this.requests.delete(e.id))}),this.onSegmentAbort=(e=>{this.requests.has(e.id)&&(this.reportError(this.requests.get(e.id),"Internal abort"),this.debug("request delete from abort",e.id),this.requests.delete(e.id))}),this.settings=Object.assign(a,t),this.loader=e,this.loader.on(n.Events.SegmentLoaded,this.onSegmentLoaded),this.loader.on(n.Events.SegmentError,this.onSegmentError),this.loader.on(n.Events.SegmentAbort,this.onSegmentAbort)}destroy(){0!==this.requests.size&&(console.error("Destroying segment manager with active request(s)!"),this.requests.clear()),this.playheadTime=0,this.segmentHistory.splice(0),this.loader.destroy()}getSettings(){return this.settings}load(e,t,s){return r(this,void 0,void 0,function*(){this.manifestUri=t,this.playheadTime=s,this.pushSegmentHistory(e);const r=this.refreshLoad(),i=this.loader.getSegment(r.id);return new Promise((e,t)=>{const s=new o(r.id,e,t);i?this.reportSuccess(s,i):(this.debug("request add",s.id),this.requests.set(s.id,s))})})}setPlayheadTime(e){this.playheadTime=e,this.segmentHistory.length>0&&this.refreshLoad()}refreshLoad(){const e=this.segmentHistory[this.segmentHistory.length-1],t=this.playheadTime>.1?this.playheadTime:e.start,s=this.segmentHistory.reduce((e,s)=>(s.start>=t&&e.push(s),e),[]);0===s.length&&s.push(e);const r=s.length-1;do{const e=s[s.length-1].next();if(!e)break;s.push(e)}while(s.length<this.settings.forwardSegmentCount);const i=this.settings.swarmId&&0!==this.settings.swarmId.length?this.settings.swarmId:this.manifestUri.split("?")[0],a=s.map((e,t)=>new n.Segment(`${i}+${e.identity}`,e.uri,e.range,t));return this.loader.load(a,`${i}+${e.streamIdentity}`),a[r]}pushSegmentHistory(e){this.segmentHistory.length>=this.settings.maxHistorySegments&&(this.debug("segment history auto shrink"),this.segmentHistory.splice(0,.2*this.settings.maxHistorySegments)),this.segmentHistory.length>0&&this.segmentHistory[this.segmentHistory.length-1].start>e.start&&(this.debug("segment history reset due to playhead seek back"),this.segmentHistory.splice(0)),this.segmentHistory.push(e)}reportSuccess(e,t){let s=void 0;t.downloadSpeed>0&&t.data&&t.data.byteLength>0&&(s=Math.trunc(t.data.byteLength/t.downloadSpeed)),this.debug("report success",e.id),e.resolve({data:t.data,timeMs:s})}reportError(e,t){e.reject&&(this.debug("report error",e.id),e.reject(t))}};class o{constructor(e,t,s){this.id=e,this.resolve=t,this.reject=s}}},{debug:"debug","p2p-media-loader-core":"p2p-media-loader-core"}],7:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),s.getSchemedUri=function(e){return e.startsWith("//")?window.location.protocol+e:e}},{}],"p2p-media-loader-shaka":[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0});var r=e("./engine");s.Engine=r.Engine,s.version="undefined"==typeof __P2PML_VERSION__?"0.4.0":__P2PML_VERSION__},{"./engine":2}]},{},[1]);

@@ -24,3 +24,4 @@ /**

getSettings(): any;
getDetails(): any;
initShakaPlayer(player: any): void;
}

@@ -44,2 +44,7 @@ "use strict";

}
getDetails() {
return {
loader: this.loader.getDetails()
};
}
initShakaPlayer(player) {

@@ -46,0 +51,0 @@ integration.initShakaPlayer(player, this.segmentManager);

@@ -17,2 +17,10 @@ "use strict";

*/
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });

@@ -80,14 +88,8 @@ const Debug = require("debug");

}
let rejectCallback = null;
debug("request", "load", segment.identity);
const promise = new Promise((resolve, reject) => {
rejectCallback = reject;
segmentManager
.load(segment, utils_1.getSchemedUri(player.getManifestUri()), getPlayheadTime(player))
.then((data) => resolve({ data }));
const promise = segmentManager.load(segment, utils_1.getSchemedUri(player.getManifestUri()), getPlayheadTime(player));
const abort = () => __awaiter(this, void 0, void 0, function* () {
debug("request", "abort", segment.identity);
// TODO: implement abort in SegmentManager
});
const abort = () => {
debug("request", "abort", segment.identity);
return rejectCallback(new shaka.util.Error(shaka.util.Error.Severity.RECOVERABLE, shaka.util.Error.Category.NETWORK, shaka.util.Error.Code.OPERATION_ABORTED));
};
return new shaka.util.AbortableOperation(promise, abort);

@@ -94,0 +96,0 @@ }

@@ -29,3 +29,6 @@ /**

getSettings(): Settings;
load(parserSegment: ParserSegment, manifestUri: string, playheadTime: number): Promise<any>;
load(parserSegment: ParserSegment, manifestUri: string, playheadTime: number): Promise<{
data: ArrayBuffer;
timeMs: number | undefined;
}>;
setPlayheadTime(time: number): void;

@@ -32,0 +35,0 @@ private refreshLoad;

@@ -146,13 +146,8 @@ "use strict";

reportSuccess(request, loaderSegment) {
if (request.resolve) {
let timeDelation = 0;
if (loaderSegment.downloadSpeed > 0 && loaderSegment.data && loaderSegment.data.byteLength > 0) {
const downloadTime = Math.trunc(loaderSegment.data.byteLength / loaderSegment.downloadSpeed);
timeDelation = Date.now() - request.timeCreated + downloadTime;
}
setTimeout(() => {
this.debug("report success", request.id);
request.resolve(loaderSegment.data);
}, timeDelation);
let timeMs = undefined;
if (loaderSegment.downloadSpeed > 0 && loaderSegment.data && loaderSegment.data.byteLength > 0) {
timeMs = Math.trunc(loaderSegment.data.byteLength / loaderSegment.downloadSpeed);
}
this.debug("report success", request.id);
request.resolve({ data: loaderSegment.data, timeMs });
}

@@ -172,4 +167,3 @@ reportError(request, error) {

this.reject = reject;
this.timeCreated = Date.now();
}
}
{
"name": "p2p-media-loader-shaka",
"description": "P2P Media Loader Shaka Player integration",
"version": "0.3.0",
"version": "0.4.0",
"license": "Apache-2.0",

@@ -38,9 +38,9 @@ "author": "Novage",

"dependencies": {
"debug": "^4.1.0",
"debug": "^4.1.1",
"events": "^3.0.0",
"p2p-media-loader-core": "^0.3.0"
"p2p-media-loader-core": "^0.4.0"
},
"devDependencies": {
"@types/debug": "^0.0.31",
"@types/events": "^1.2.0",
"@types/events": "^3.0.0",
"browserify": "^16.2.3",

@@ -50,8 +50,8 @@ "browserify-versionify": "^1.0.6",

"mkdirp": "^0.5.1",
"terser": "^3.11.0",
"ts-loader": "^5.3.1",
"tslint": "^5.11.0",
"typescript": "^3.2.1",
"webpack": "^4.26.1",
"webpack-cli": "^3.1.2"
"terser": "^3.14.1",
"ts-loader": "^5.3.3",
"tslint": "^5.12.1",
"typescript": "^3.2.4",
"webpack": "^4.29.0",
"webpack-cli": "^3.2.1"
},

@@ -58,0 +58,0 @@ "browserify": {

@@ -13,3 +13,3 @@ # P2P Media Loader - Shaka Player integration

- [Core](https://cdn.jsdelivr.net/npm/p2p-media-loader-core@latest/build/)
- [Shaka integration](https://cdn.jsdelivr.net/npm/p2p-media-loader-shaka@latest/build/)
- [Shaka Player integration](https://cdn.jsdelivr.net/npm/p2p-media-loader-shaka@latest/build/)
- [Hls.js integration](https://cdn.jsdelivr.net/npm/p2p-media-loader-hlsjs@latest/build/)

@@ -88,2 +88,9 @@

### `engine.on(event, handler)`
Registers an event handler.
- `event` - Event you want to handle; available events you can find [here](../p2p-media-loader-core/README.md#events).
- `handler` - Function to handle the event
### `engine.getSettings()`

@@ -93,2 +100,6 @@

### `engine.getDetails()`
Returns engine instance details.
### `engine.destroy()`

@@ -95,0 +106,0 @@

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc