UNPKG

peercast-yp-channels-parser

Version:
112 lines (84 loc) 6.93 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.l = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // identity function for calling harmony imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 6); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = require("core-js"); /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; function stringify(a,b){return a.map((c)=>[c.name,c.id,c.ip,c.url,c.genre,stringifyDescAndBandwidthType(c.desc,c.bandwidthType),c.listeners.toString(),c.relays.toString(),c.bitrate.toString(),c.type,c.track.creator,c.track.album,c.track.title,c.track.url,encodeURIComponent(c.name),stringifyUptime(b.getTime()-c.createdAt),"click",c.comment,c.direct?"1":"0"]).map((c)=>c.map(escapeSpecialLetters)).map((c)=>c.join("<>")).join("\n")}exports.stringify=stringify;function parse(a,b){return a.trim().split("\n").map((c)=>c.split("<>")).map((c)=>c.map(unescapeSpecialLetters)).map((c)=>{var d=parseDescAndBandwidthType(c[5]);let e=d.desc,f=d.bandwidthType;return{name:c[0],id:c[1],ip:c[2],url:c[3],genre:c[4],desc:e,bandwidthType:f,listeners:parseInt(c[6],10),relays:parseInt(c[7],10),bitrate:parseInt(c[8],10),type:c[9],track:{creator:c[10],album:c[11],title:c[12],url:c[13]},createdAt:b.getTime()-parseUptime(c[15]),comment:c[17],direct:"1"===c[18]}})}exports.parse=parse;function stringifyDescAndBandwidthType(a,b){return 0===b.length?a:`${a} - <${b}>`}function parseDescAndBandwidthType(a){let b=a.match(/(?: - )?<(.*)>$/);return null==b?{desc:a,bandwidthType:""}:{desc:a.substring(0,b.index),bandwidthType:b[1]}}function stringifyUptime(a){let b=0|a/1e3/60;return`${0|b/60}:${(b%60).toString().padStart(2,"0")}`}function parseUptime(a){let b=a.split(":").map((c)=>parseInt(c,10));return 1e3*(60*(60*b[0]+b[1]))}function escapeSpecialLetters(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#039;")}function unescapeSpecialLetters(a){return a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&#039;/g,"'").replace(/&amp;/g,"&")} /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; __webpack_require__(4);const assert=__webpack_require__(3),ypParser=__webpack_require__(1),STRINGIFIED_CHANNELS=["test channel1<>0123456789012345678901234567890<>127.0.0.1:7144<>http://example.com<>Some genre<>any desc - &lt;Open&gt;<>10<>20<>7144<>FLV<>track creator<>track album<>track title<>track url<>test%20channel1<>0:00<>click<>comment area<>0","test channel2<>0123456789012345678901234567890<>127.0.0.1:7144<>http://example.com<>Some genre<>any desc - &lt;Open&gt;<>10<>20<>7144<>FLV<>track creator<>track album<>track title<>track url<>test%20channel2<>0:01<>click<>comment area<>0","test channel3<>0123456789012345678901234567890<>127.0.0.1:7144<>http://example.com<>Some genre<>any desc - &lt;Open&gt;<>10<>20<>7144<>FLV<>track creator<>track album<>track title<>track url<>test%20channel3<>0:02<>click<>comment area<>0"].join("\n"),PARSED_CHANNELS=[{name:"test channel1",id:"0123456789012345678901234567890",ip:"127.0.0.1:7144",url:"http://example.com",genre:"Some genre",desc:"any desc",bandwidthType:"Open",listeners:10,relays:20,bitrate:7144,type:"FLV",track:{creator:"track creator",album:"track album",title:"track title",url:"track url"},createdAt:0,comment:"comment area",direct:!1},{name:"test channel2",id:"0123456789012345678901234567890",ip:"127.0.0.1:7144",url:"http://example.com",genre:"Some genre",desc:"any desc",bandwidthType:"Open",listeners:10,relays:20,bitrate:7144,type:"FLV",track:{creator:"track creator",album:"track album",title:"track title",url:"track url"},createdAt:-60000,comment:"comment area",direct:!1},{name:"test channel3",id:"0123456789012345678901234567890",ip:"127.0.0.1:7144",url:"http://example.com",genre:"Some genre",desc:"any desc",bandwidthType:"Open",listeners:10,relays:20,bitrate:7144,type:"FLV",track:{creator:"track creator",album:"track album",title:"track title",url:"track url"},createdAt:-120000,comment:"comment area",direct:!1}];it("parse stringified channels",()=>{let a=ypParser.parse(STRINGIFIED_CHANNELS,new Date(0));assert.deepEqual(a,PARSED_CHANNELS)}),it("strigify pased channels",()=>{let a=ypParser.stringify(PARSED_CHANNELS,new Date(0));assert.deepEqual(a,STRINGIFIED_CHANNELS)}); /***/ }), /* 3 */ /***/ (function(module, exports) { module.exports = require("power-assert"); /***/ }), /* 4 */ /***/ (function(module, exports) { module.exports = require("source-map-support/register"); /***/ }), /* 5 */, /* 6 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(0); module.exports = __webpack_require__(2); /***/ }) /******/ ]);