UNPKG

lotusbail

Version:

WhatsApp API x Button by PL

4 lines (3 loc) 1.11 kB
var __importDefault=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{"default":a}};Object.defineProperty(exports,"__esModule",{value:!0});exports.readAndEmitEventStream=exports.captureEventStream=void 0; const events_1=__importDefault(require("events")),fs_1=require("fs"),promises_1=require("fs/promises"),readline_1=require("readline"),generics_1=require("./generics"),make_mutex_1=require("./make-mutex"),captureEventStream=(a,c)=>{const d=a.emit,e=(0,make_mutex_1.makeMutex)();a.emit=function(...b){const f=JSON.stringify({timestamp:Date.now(),event:b[0],data:b[1]})+"\n";b=d.apply(a,b);e.mutex(async()=>{await (0,promises_1.writeFile)(c,f,{flag:"a"})});return b}};exports.captureEventStream=captureEventStream; const readAndEmitEventStream=(a,c=0)=>{const d=new events_1.default;return{ev:d,task:(async()=>{const e=(0,fs_1.createReadStream)(a),b=(0,readline_1.createInterface)({input:e,crlfDelay:Infinity});for await(const f of b)if(f){const {event:g,data:h}=JSON.parse(f);d.emit(g,h);c&&await (0,generics_1.delay)(c)}e.close()})()}};exports.readAndEmitEventStream=readAndEmitEventStream;