UNPKG

awscdk-construct-hls-session-runner

Version:

AWS CDK construct for deploying a Lambda function and SFN state machines to fetch an HLS manifest

37 lines 5.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDesiredSessionVolume = getDesiredSessionVolume; exports.getAbsoluteUrl = getAbsoluteUrl; function getDesiredSessionVolume(eventStartTime, requirements) { const nowInSeconds = Math.max(0, Math.round((Date.now() - eventStartTime.getTime()) / 1000)); let start = { pointInSeconds: 0, sessionVolume: 0 }; let end = { pointInSeconds: nowInSeconds, sessionVolume: 0 }; for (const [i, { pointInSeconds, sessionVolume }] of requirements.entries()) { // console.log(`nowInSeconds: ${nowInSeconds}, pointInSeconds: ${pointInSeconds}, sessionVolume: ${sessionVolume}`); if (nowInSeconds === pointInSeconds) { return sessionVolume; } if (nowInSeconds < pointInSeconds) { end = { pointInSeconds, sessionVolume }; break; } if (i === requirements.length - 1) { return sessionVolume; } start = { pointInSeconds, sessionVolume }; } return start.sessionVolume + Math.round((end.sessionVolume - start.sessionVolume) * (nowInSeconds - start.pointInSeconds) / (end.pointInSeconds - start.pointInSeconds)); } function getAbsoluteUrl(parent, current) { try { const url = new URL(current, parent); return url.href; } catch (e) { console.error(`Failed to parse the URL: ${parent} - ${current}`); } return current; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW1iZGEvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLDBEQXVCQztBQUVELHdDQVFDO0FBakNELFNBQWdCLHVCQUF1QixDQUFDLGNBQW9CLEVBQUUsWUFBa0M7SUFDOUYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdGLElBQUksS0FBSyxHQUF1QixFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hFLElBQUksR0FBRyxHQUF1QixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2pGLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQzVFLG9IQUFvSDtRQUNwSCxJQUFJLFlBQVksS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUNwQyxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxZQUFZLEdBQUcsY0FBYyxFQUFFLENBQUM7WUFDbEMsR0FBRyxHQUFHLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLE1BQU07UUFDUixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBQ0QsS0FBSyxHQUFHLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDckMsQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7VUFDdkMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztVQUNyQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUM5QyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxNQUFjLEVBQUUsT0FBZTtJQUM1RCxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsTUFBTSxNQUFNLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNlc3Npb25SZXF1aXJlbWVudCB7XG4gIHBvaW50SW5TZWNvbmRzOiBudW1iZXI7XG4gIHNlc3Npb25Wb2x1bWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2lyZWRTZXNzaW9uVm9sdW1lKGV2ZW50U3RhcnRUaW1lOiBEYXRlLCByZXF1aXJlbWVudHM6IFNlc3Npb25SZXF1aXJlbWVudFtdKTogbnVtYmVyIHtcbiAgY29uc3Qgbm93SW5TZWNvbmRzID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoRGF0ZS5ub3coKSAtIGV2ZW50U3RhcnRUaW1lLmdldFRpbWUoKSkgLyAxMDAwKSk7XG4gIGxldCBzdGFydDogU2Vzc2lvblJlcXVpcmVtZW50ID0geyBwb2ludEluU2Vjb25kczogMCwgc2Vzc2lvblZvbHVtZTogMCB9O1xuICBsZXQgZW5kOiBTZXNzaW9uUmVxdWlyZW1lbnQgPSB7IHBvaW50SW5TZWNvbmRzOiBub3dJblNlY29uZHMsIHNlc3Npb25Wb2x1bWU6IDAgfTtcbiAgZm9yIChjb25zdCBbaSwgeyBwb2ludEluU2Vjb25kcywgc2Vzc2lvblZvbHVtZSB9XSBvZiByZXF1aXJlbWVudHMuZW50cmllcygpKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG5vd0luU2Vjb25kczogJHtub3dJblNlY29uZHN9LCBwb2ludEluU2Vjb25kczogJHtwb2ludEluU2Vjb25kc30sIHNlc3Npb25Wb2x1bWU6ICR7c2Vzc2lvblZvbHVtZX1gKTtcbiAgICBpZiAobm93SW5TZWNvbmRzID09PSBwb2ludEluU2Vjb25kcykge1xuICAgICAgcmV0dXJuIHNlc3Npb25Wb2x1bWU7XG4gICAgfVxuICAgIGlmIChub3dJblNlY29uZHMgPCBwb2ludEluU2Vjb25kcykge1xuICAgICAgZW5kID0geyBwb2ludEluU2Vjb25kcywgc2Vzc2lvblZvbHVtZSB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChpID09PSByZXF1aXJlbWVudHMubGVuZ3RoIC0gMSkge1xuICAgICAgcmV0dXJuIHNlc3Npb25Wb2x1bWU7XG4gICAgfVxuICAgIHN0YXJ0ID0geyBwb2ludEluU2Vjb25kcywgc2Vzc2lvblZvbHVtZSB9O1xuICB9XG4gIHJldHVybiBzdGFydC5zZXNzaW9uVm9sdW1lICsgTWF0aC5yb3VuZChcbiAgICAoZW5kLnNlc3Npb25Wb2x1bWUgLSBzdGFydC5zZXNzaW9uVm9sdW1lKVxuICAgICogKG5vd0luU2Vjb25kcyAtIHN0YXJ0LnBvaW50SW5TZWNvbmRzKVxuICAgIC8gKGVuZC5wb2ludEluU2Vjb25kcyAtIHN0YXJ0LnBvaW50SW5TZWNvbmRzKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFic29sdXRlVXJsKHBhcmVudDogc3RyaW5nLCBjdXJyZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICB0cnkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoY3VycmVudCwgcGFyZW50KTtcbiAgICByZXR1cm4gdXJsLmhyZWY7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gcGFyc2UgdGhlIFVSTDogJHtwYXJlbnR9IC0gJHtjdXJyZW50fWApO1xuICB9XG4gIHJldHVybiBjdXJyZW50O1xufVxuIl19