UNPKG

@aimee-blue/ab-service-kit

Version:
1 lines 2.42 kB
{"version":3,"sources":["../../../src/shared/sockets/logSocketStats.ts"],"names":["logSocketStats","logger","data","numberOfMessages","pipe","isString","_","i","bytesReceived","isBuffer","sum","item","byteLength","stats","msgs","bytes","timestamp","prefix","EOL","suffix","on","unsubscribe"],"mappings":";;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,SAASA,cAAT,CACLC,MADK,EAELC,IAFK,EAGL;AACA,QAAMC,gBAAgB,GAAGD,IAAI,CAACE,IAAL,CACvB,uBAAOC,iBAAP,CADuB,EAEvB,oBAAI,CAACC,CAAD,EAAIC,CAAJ,KAAUA,CAAC,GAAG,CAAlB,CAFuB,EAGvB,0BAAU,CAAV,CAHuB,CAAzB;AAMA,QAAMC,aAAa,GAAGN,IAAI,CAACE,IAAL,CACpB,uBAAOK,iBAAP,CADoB,EAEpB,qBAAK,CAACC,GAAD,EAAMC,IAAN,KAAuBA,IAAI,CAACC,UAAL,GAAkBF,GAA9C,EAAmD,CAAnD,CAFoB,EAGpB,0BAAU,CAAV,CAHoB,CAAtB;AAMA,QAAMG,KAAK,GAAG,yBAAcV,gBAAd,EAAgCK,aAAhC,EAA+CJ,IAA/C,CACZ,oBAAI,CAAC,CAACU,IAAD,EAAOC,KAAP,CAAD,MAAoB;AACtBP,IAAAA,aAAa,EAAEO,KADO;AAEtBZ,IAAAA,gBAAgB,EAAEW,IAFI;AAGtBE,IAAAA,SAAS,EAAE;AAHW,GAApB,CAAJ,CADY,EAMZ,wBAAU;AACRC,IAAAA,MAAM,EAAG,GAAEC,OAAI,sBADP;AAERC,IAAAA,MAAM,EAAE,CAACD,OAAD,CAFA;AAGRE,IAAAA,EAAE,EAAE,CAAC,OAAD,EAAU,aAAV,CAHI;AAIRnB,IAAAA,MAJQ;AAKRoB,IAAAA,WAAW,EAAE;AACXJ,MAAAA,MAAM,EAAG,GAAEC,OAAI;AADJ;AALL,GAAV,CANY,EAeZ,gCAfY,CAAd;AAkBA,SAAOL,KAAP;AACD","sourcesContent":["import WebSocket from 'ws';\nimport { Observable, combineLatest } from 'rxjs';\nimport { filter, ignoreElements, scan, map, startWith } from 'rxjs/operators';\nimport { EOL } from 'os';\nimport { localNow } from '../time';\nimport { isString, isBuffer } from './helpers';\nimport { Logger, logEvents } from '../logging';\n\nexport function logSocketStats(\n logger: Logger,\n data: Observable<WebSocket.Data>\n) {\n const numberOfMessages = data.pipe(\n filter(isString),\n map((_, i) => i + 1),\n startWith(0)\n );\n\n const bytesReceived = data.pipe(\n filter(isBuffer),\n scan((sum, item: Buffer) => item.byteLength + sum, 0),\n startWith(0)\n );\n\n const stats = combineLatest(numberOfMessages, bytesReceived).pipe(\n map(([msgs, bytes]) => ({\n bytesReceived: bytes,\n numberOfMessages: msgs,\n timestamp: localNow(),\n })),\n logEvents({\n prefix: `${EOL}🔃 Connection stats`,\n suffix: [EOL],\n on: ['audit', 'unsubscribe'],\n logger,\n unsubscribe: {\n prefix: `${EOL}🔃 Connection stats upon closure`,\n },\n }),\n ignoreElements()\n );\n\n return stats;\n}\n"],"file":"logSocketStats.js"}