pcp
Version:
A PeerCast protocol client module for Node.js
1 lines • 7.8 kB
JavaScript
module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}([function(e,t){e.exports=require("log4js")},function(e,t){e.exports=require("assert")},function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(r(1)),u=n(r(11));class o{constructor(e,t,r){this.name=e,this.content=t,this.children=r}static create(e){const t=this.createChildren([e]);return i.default.equal(t.length,1),t[0]}static createChildren(e){return e.map(e=>{const t=e[0],r=e[1],n=e[2];switch(r){case"parent":return o.createParent(t,this.createChildren(n));case"byte":return o.createByteContent(t,n);case"short":return o.createShortContent(t,n);case"int":return o.createIntContent(t,n);case"string":return o.createStringContent(t,n);case"string2":return o.createString2Content(t,n);case"url":return o.createURLContent(t,n);case"bytes":return o.createContent(t,n);default:throw new Error}})}static createContent(e,t){return new o(e,t,null)}static createByteContent(e,t){const r=new ArrayBuffer(1);return new DataView(r).setUint8(0,t),o.createContent(e,r)}static createShortContent(e,t){const r=new ArrayBuffer(2);return new DataView(r).setUint16(0,t,!0),o.createContent(e,r)}static createIntContent(e,t){const r=new ArrayBuffer(4);return new DataView(r).setUint32(0,t,!0),o.createContent(e,r)}static createStringContent(e,t){return o.createContent(e,a(Buffer.from(`${t}\0`)))}static createString2Content(e,t){return i.default.equal(t.length,2),o.createContent(e,a(Buffer.from(t)))}static createURLContent(e,t){return o.createContent(e,a(Buffer.from(t)))}static createParent(e,t){return new o(e,null,t)}toJSON(){return`{${this.toJSONRecursive()}}`}toJSONRecursive(){return null!=this.content?`"${this.name}":${function(e,t){if(["port","vexn"].includes(e))return i.default.equal(t.byteLength,2,`Invalid byteLength: ${e}`),String(new DataView(t).getInt16(0,!0));if(["bitr","newp","numl","numr","oldp","quit","uptm","ver","vers","vevp","vrvp"].includes(e))return i.default.equal(t.byteLength,4),String(new DataView(t).getInt32(0,!0));if(["agnt","albm","cmnt","crea","desc","gnre","name","sext","styp","titl","type","url","vexp"].includes(e)){const e=0===new Uint8Array(t)[t.byteLength-1];return`"${u.default.decode(Buffer.from(t),"utf8")}${e?"(\\0)":""}"`}if(["ip","rip"].includes(e)){const e=new Uint8Array(t);return`"${e.reverse().join(".")}"`}return`"${[...new Uint8Array(t)].map(e=>Number(e).toString(16).padStart(2,"0")).join("")}"`}(this.name,this.content)}`:`"${this.name}":{${this.children.map(e=>e.toJSONRecursive()).join(",")}}`}}function a(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}t.default=o},function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});try{r(4).install()}catch(e){}const i=n(r(0));if(i.default.configure({appenders:[{type:"console"}],levels:{log4js:"ERROR"}}),!("describe"in global))try{i.default.configure("./log.json",{reloadSecs:300})}catch(e){}!function(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}(r(5))},function(e,t){e.exports=require("source-map-support")},function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(r(6)),u=n(r(0)),o=n(r(7));t.PCPSocket=o.default;const a=n(r(2));t.Atom=a.default;const s=u.default.getLogger();t.requestHTTP=async function(e){return new Promise((t,r)=>{null==e.headers&&(e.headers={}),e.headers["x-peercast-pcp"]=1;try{i.default.request(e,e=>{s.debug("res"),t({statusCode:e.statusCode,socket:new o.default(e.socket,!1)})}).end()}catch(e){console.error(e.stack)}})}},function(e,t){e.exports=require("http")},function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(r(1)),u=r(0),o=r(8),a=r(9),s=n(r(10)),c=u.getLogger(),l=(()=>{const e=new DataView(new ArrayBuffer(12));return[...Array("pcp\n".length).keys()].map(e=>"pcp\n".charCodeAt(e)).forEach((t,r)=>{e.setUint8(r,t)}),e.setUint32(4,4,!0),e.setUint32(8,1,!0),e.buffer})();class f{constructor(e,t){this.socket=e,this.atomReader=new s.default,this.onData=new o.Subject,this.readedPCPHeader=!t,e.on("readable",()=>{if(this.readPCPHeaderIfNeeded())for(;;){const t=this.atomReader.read(e);if(null==t)return;this.onData.next(t)}})}readPCPHeaderIfNeeded(){if(this.readedPCPHeader)return!0;const e=this.socket.read(l.byteLength);return null!=e&&(e.equals(Buffer.from(l))?(this.readedPCPHeader=!0,!0):(c.info(`Socket destroyed: ${e.slice(0,4)}`),this.socket.destroy(),!1))}}class d{constructor(e,t){this.socket=e,t||d.writePCPHeader(this.socket)}write(e){i.default.equal(this.socket.destroyed,!1),d.writeAtomRecursive(this.socket,e)}static writePCPHeader(e){e.write(Buffer.from(l))}static writeAtomRecursive(e,t){e.write(t.name.padEnd(4,"\0"));const r=t.children;if(null!=r)return this.writeInt32LE(e,2147483648|r.length),void r.forEach(t=>{this.writeAtomRecursive(e,t)});const n=t.content;this.writeInt32LE(e,n.byteLength),e.write(Buffer.from(n))}static writeInt32LE(e,t){const r=Buffer.alloc(4);r.writeInt32LE(t,0),e.write(r)}}t.default=class{constructor(e,t){this.reader=new f(e,t),this.writer=new d(e,t),this.onData=this.reader.onData.pipe(a.map(e=>(c.debug(`read: ${e.toJSON()}`),e)))}write(e){c.debug(`write: ${e.toJSON()}`),this.writer.write(e)}}},function(e,t){e.exports=require("rxjs")},function(e,t){e.exports=require("rxjs/operators")},function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(r(2));class u{constructor(){this.currentAtomHeader=null,this.childrenReader=null,this.children=[]}read(e){if(null==this.currentAtomHeader){const t=function(e){const t=e.read(8);if(null==t)return null;const r=t.readUInt32LE(4);if(0!=(2147483648&r))return{name:t.toString("ascii",0,4).replace(/\0/g,""),childrenCount:2147483647&r};return{name:t.toString("ascii",0,4).replace(/\0/g,""),contentLength:r}}(e);if(null==t)return null;this.currentAtomHeader=t,this.childrenReader=new u}const t=function(e,t,r,n){if("childrenCount"in n){const u=function(e,t,r,n){for(;;){const i=t.read(e);if(null==i)return null;if(r.push(i),r.length>=n.childrenCount)break}return i.default.createParent(n.name,r)}(e,t,r,n);return null==u?null:u}const u=function(e,t,r){const n=e.read(r);if(null==n)return null;const u=new Uint8Array(n.length);return n.copy(u),i.default.createContent(t,u.buffer)}(e,n.name,n.contentLength);if(null==u)return null;return u}(e,this.childrenReader,this.children,this.currentAtomHeader);return null==t?null:(this.clear(),t)}clear(){this.currentAtomHeader=null,this.childrenReader=null,this.children=[]}}t.default=u},function(e,t){e.exports=require("iconv-lite")}]);