peercast-yp-channels-parser
Version:
A parser for PeerCast yellowpages channels.
112 lines (84 loc) • 6.93 kB
JavaScript
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__) {
;
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,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'")}function unescapeSpecialLetters(a){return a.replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/&/g,"&")}
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
;
__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 - <Open><>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 - <Open><>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 - <Open><>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);
/***/ })
/******/ ]);