UNPKG

@interopio/gateway

Version:

[![npm version](https://img.shields.io/npm/v/@interopio/gateway.svg)](https://www.npmjs.com/package/@interopio/gateway)

4 lines (3 loc) 1.07 kB
import*as a from"fs";import*as l from"path";var o=class{constructor(i){this.logger=i}stream;async open(i,e=!1){let r=l.dirname(i);return await new Promise((t,m)=>a.mkdir(r,{recursive:!0},n=>{n?(this.logger.error(`error creating directory ${r}`,n),m(n)):t()})),this.stream=a.createWriteStream(i,{flags:e?"a":"w"}),this.stream.on("error",t=>{this.logger.warn(`write stream error. location: ${i}, append: ${e}`,t)}),this}async write(i){return await new Promise((e,r)=>{this.stream?this.stream.write(JSON.stringify(i)+` `,t=>{t&&this.logger.error("failed to write json line in current write stream",t)})?e():this.stream.once("drain",()=>{e()}):r(new Error("no stream - did you call open()"))}),this}close(){this.stream&&(this.stream.end(),this.stream=void 0)}},f="file";function p(s){return new o(s)}function d(s,i){let e=p(i);return async r=>{if(r==="start")return await e.open(s.location,s.append??!1),e;if(r==="stop")return t=>{t.close()};!(s.status??!1)&&r.status||await e.write(r)}}export{d as create,p as jsonFileAppender,f as name}; //# sourceMappingURL=file.js.map