{"version":3,"sources":["../../src/file/index.ts"],"names":["LoggerTransport","existsSync","createWriteStream","readFileSync"],"mappings":";;;;;;AAKO,IAAM,aAAA,GAAN,cAA4BA,sBAAA,CAAgB;AAAA,EACjD,IAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA,CAAY,EAAE,IAAA,EAAK,EAAqB;AACtC,IAAA,KAAA,CAAM,EAAE,UAAA,EAAY,IAAA,EAAM,CAAA;AAC1B,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAEZ,IAAA,IAAI,CAACC,aAAA,CAAW,IAAA,CAAK,IAAI,CAAA,EAAG;AAC1B,MAAA,OAAA,CAAQ,IAAA,CAAK,KAAK,IAAI,CAAA;AACtB,MAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAAA,IAC5C;AAEA,IAAA,IAAA,CAAK,aAAaC,oBAAA,CAAkB,IAAA,CAAK,MAAM,EAAE,KAAA,EAAO,KAAK,CAAA;AAAA,EAC/D;AAAA,EAEA,UAAA,CAAW,KAAA,EAAY,SAAA,EAAmB,QAAA,EAAqD;AAC7F,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,UAAA,CAAW,MAAM,KAAK,CAAA;AAAA,IAC7B,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,4BAA4B,KAAK,CAAA;AAAA,IACjD;AACA,IAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AAAA,EACtB;AAAA,EAEA,OAAO,QAAA,EAAoB;AAEzB,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,MAAM;AACxB,MAAA,QAAA,EAAS;AAAA,IACX,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,MAAA,CAAO,KAAA,EAAY,QAAA,EAAmB,QAAA,EAAoD;AACxF,IAAA,IAAI,OAAO,aAAa,UAAA,EAAY;AAClC,MAAA,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,QAAA,IAAY,MAAA,EAAQ,QAAQ,CAAA;AACnD,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,QAAA,IAAY,MAAA,EAAQ,CAAC,KAAA,KAAwB;AAClE,MAAA,IAAI,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,2BAAA,EAA6B,KAAK,CAAA;AAAA,IAC7D,CAAC,CAAA;AACD,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA,EAGA,QAAA,CAAS,OAAc,QAAA,EAAoB;AACzC,IAAA,IAAI,KAAK,UAAA,EAAY;AACnB,MAAA,IAAA,CAAK,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,IAC/B;AACA,IAAA,QAAA,CAAS,KAAK,CAAA;AAAA,EAChB;AAAA,EAEA,MAAM,SAAS,MAAA,EAcZ;AACD,IAAA,IAAI;AACF,MAAA,MAAM;AAAA,QACJ,QAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,uBAAA,EAAyB,4BAAA;AAAA,QACzB,IAAA,EAAM,SAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACX,GAAI,UAAU,EAAC;AAEf,MAAA,MAAM,IAAA,GAAO,SAAA,KAAc,CAAA,GAAI,CAAA,GAAK,SAAA,IAAa,CAAA;AACjD,MAAA,MAAM,UAAU,YAAA,IAAgB,GAAA;AAChC,MAAA,MAAM,0BAA0B,4BAAA,IAAgC,IAAA;AAEhE,MAAA,MAAM,OAAOC,eAAA,CAAa,IAAA,CAAK,IAAA,EAAM,MAAM,EACxC,KAAA,CAAM,IAAI,CAAA,CACV,MAAA,CAAO,OAAO,CAAA,CACd,GAAA,CAAI,SAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAC,CAAA;AAE7B,MAAA,IAAI,YAAA,GAAe,KAAK,MAAA,CAAO,CAAA,MAAA,KAAU,WAAW,IAAA,IAAQ,OAAO,WAAW,QAAQ,CAAA;AAEtF,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,YAAA,GAAe,YAAA,CAAa,MAAA;AAAA,UAAO,SACjC,MAAA,CAAO,OAAA,CAAQ,OAAA,IAAW,EAAE,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,KAAK,KAAK,CAAA,KAAM,GAAA,CAAI,GAA2B,MAAM,KAAK;AAAA,SAClG;AAAA,MACF;AAEA,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,YAAA,GAAe,YAAA,CAAa,MAAA,CAAO,CAAA,GAAA,KAAO,GAAA,CAAI,UAAU,QAAQ,CAAA;AAAA,MAClE;AAEA,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,YAAA,GAAe,YAAA,CAAa,MAAA,CAAO,CAAA,GAAA,KAAO,IAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG,OAAA,EAAQ,IAAK,QAAA,CAAU,OAAA,EAAS,CAAA;AAAA,MAChG;AAEA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,YAAA,GAAe,YAAA,CAAa,MAAA,CAAO,CAAA,GAAA,KAAO,IAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG,OAAA,EAAQ,IAAK,MAAA,CAAQ,OAAA,EAAS,CAAA;AAAA,MAC9F;AAEA,MAAA,IAAI,CAAC,uBAAA,EAAyB;AAC5B,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,YAAA;AAAA,UACN,OAAO,YAAA,CAAa,MAAA;AAAA,UACpB,IAAA;AAAA,UACA,SAAS,YAAA,CAAa,MAAA;AAAA,UACtB,OAAA,EAAS;AAAA,SACX;AAAA,MACF;AAEA,MAAA,MAAM,QAAQ,YAAA,CAAa,MAAA;AAC3B,MAAA,MAAM,kBAAkB,OAAA,IAAW,GAAA;AACnC,MAAA,MAAM,KAAA,GAAA,CAAS,OAAO,CAAA,IAAK,eAAA;AAC3B,MAAA,MAAM,MAAM,KAAA,GAAQ,eAAA;AACpB,MAAA,MAAM,aAAA,GAAgB,YAAA,CAAa,KAAA,CAAM,KAAA,EAAO,GAAG,CAAA;AACnD,MAAA,MAAM,UAAU,GAAA,GAAM,KAAA;AAEtB,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,aAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAA,EAAS,eAAA;AAAA,QACT;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,iCAAiC,KAAK,CAAA;AACpD,MAAA,OAAO;AAAA,QACL,MAAM,EAAC;AAAA,QACP,KAAA,EAAO,CAAA;AAAA,QACP,IAAA,EAAM,CAAA;AAAA,QACN,OAAA,EAAS,CAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,eAAA,CAAgB;AAAA,IACpB,KAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX,EAcG;AACD,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,GAAO,SAAA,KAAc,CAAA,GAAI,CAAA,GAAK,SAAA,IAAa,CAAA;AACjD,MAAA,MAAM,UAAU,YAAA,IAAgB,GAAA;AAChC,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,QAAA,CAAS,EAAE,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,CAAA;AAC3E,MAAA,MAAM,IAAA,GAAQ,SAAS,IAAA,EAAM,MAAA,CAAO,SAAO,GAAA,EAAK,KAAA,KAAU,KAAK,CAAA,IAAK,EAAC;AACrE,MAAA,MAAM,QAAQ,IAAA,CAAK,MAAA;AACnB,MAAA,MAAM,kBAAkB,OAAA,IAAW,GAAA;AACnC,MAAA,MAAM,KAAA,GAAA,CAAS,OAAO,CAAA,IAAK,eAAA;AAC3B,MAAA,MAAM,MAAM,KAAA,GAAQ,eAAA;AACpB,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,KAAA,EAAO,GAAG,CAAA;AAC3C,MAAA,MAAM,UAAU,GAAA,GAAM,KAAA;AAEtB,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,aAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAA,EAAS,eAAA;AAAA,QACT;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,0CAA0C,KAAK,CAAA;AAC7D,MAAA,OAAO;AAAA,QACL,MAAM,EAAC;AAAA,QACP,KAAA,EAAO,CAAA;AAAA,QACP,IAAA,EAAM,CAAA;AAAA,QACN,OAAA,EAAS,CAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,IACF;AAAA,EACF;AACF","file":"index.cjs","sourcesContent":["import type { WriteStream } from 'node:fs';\nimport { createWriteStream, existsSync, readFileSync } from 'node:fs';\nimport { LoggerTransport } from '@mastra/core/logger';\nimport type { BaseLogMessage, LogLevel } from '@mastra/core/logger';\n\nexport class FileTransport extends LoggerTransport {\n path: string;\n fileStream: WriteStream;\n constructor({ path }: { path: string }) {\n super({ objectMode: true });\n this.path = path;\n\n if (!existsSync(this.path)) {\n console.info(this.path);\n throw new Error('File path does not exist');\n }\n\n this.fileStream = createWriteStream(this.path, { flags: 'a' });\n }\n\n _transform(chunk: any, _encoding: string, callback: (error: Error | null, chunk: any) => void) {\n try {\n this.fileStream.write(chunk);\n } catch (error) {\n console.error('Error parsing log entry:', error);\n }\n callback(null, chunk);\n }\n\n _flush(callback: Function) {\n // End the file stream when transform stream ends\n this.fileStream.end(() => {\n callback();\n });\n }\n\n _write(chunk: any, encoding?: string, callback?: (error?: Error | null) => void): boolean {\n if (typeof callback === 'function') {\n this._transform(chunk, encoding || 'utf8', callback);\n return true;\n }\n\n this._transform(chunk, encoding || 'utf8', (error: Error | null) => {\n if (error) console.error('Transform error in write:', error);\n });\n return true;\n }\n\n // Clean up resources\n _destroy(error: Error, callback: Function) {\n if (this.fileStream) {\n this.fileStream.destroy(error);\n }\n callback(error);\n }\n\n async listLogs(params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record;\n returnPaginationResults?: boolean; // default true\n page?: number;\n perPage?: number;\n }): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n }> {\n try {\n const {\n fromDate,\n toDate,\n logLevel,\n filters,\n returnPaginationResults: returnPaginationResultsInput,\n page: pageInput,\n perPage: perPageInput,\n } = params || {};\n\n const page = pageInput === 0 ? 1 : (pageInput ?? 1);\n const perPage = perPageInput ?? 100;\n const returnPaginationResults = returnPaginationResultsInput ?? true;\n\n const logs = readFileSync(this.path, 'utf8')\n .split('\\n')\n .filter(Boolean)\n .map(log => JSON.parse(log));\n\n let filteredLogs = logs.filter(record => record !== null && typeof record === 'object');\n\n if (filters) {\n filteredLogs = filteredLogs.filter(log =>\n Object.entries(filters || {}).every(([key, value]) => log[key as keyof BaseLogMessage] === value),\n );\n }\n\n if (logLevel) {\n filteredLogs = filteredLogs.filter(log => log.level === logLevel);\n }\n\n if (fromDate) {\n filteredLogs = filteredLogs.filter(log => new Date(log.time)?.getTime() >= fromDate!.getTime());\n }\n\n if (toDate) {\n filteredLogs = filteredLogs.filter(log => new Date(log.time)?.getTime() <= toDate!.getTime());\n }\n\n if (!returnPaginationResults) {\n return {\n logs: filteredLogs,\n total: filteredLogs.length,\n page,\n perPage: filteredLogs.length,\n hasMore: false,\n };\n }\n\n const total = filteredLogs.length;\n const resolvedPerPage = perPage || 100;\n const start = (page - 1) * resolvedPerPage;\n const end = start + resolvedPerPage;\n const paginatedLogs = filteredLogs.slice(start, end);\n const hasMore = end < total;\n\n return {\n logs: paginatedLogs,\n total,\n page,\n perPage: resolvedPerPage,\n hasMore,\n };\n } catch (error) {\n console.error('Error getting logs from file:', error);\n return {\n logs: [],\n total: 0,\n page: 0,\n perPage: 0,\n hasMore: false,\n };\n }\n }\n\n async listLogsByRunId({\n runId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page: pageInput,\n perPage: perPageInput,\n }: {\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record;\n page?: number;\n perPage?: number;\n }): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n }> {\n try {\n const page = pageInput === 0 ? 1 : (pageInput ?? 1);\n const perPage = perPageInput ?? 100;\n const allLogs = await this.listLogs({ fromDate, toDate, logLevel, filters });\n const logs = (allLogs?.logs?.filter(log => log?.runId === runId) || []) as BaseLogMessage[];\n const total = logs.length;\n const resolvedPerPage = perPage || 100;\n const start = (page - 1) * resolvedPerPage;\n const end = start + resolvedPerPage;\n const paginatedLogs = logs.slice(start, end);\n const hasMore = end < total;\n\n return {\n logs: paginatedLogs,\n total,\n page,\n perPage: resolvedPerPage,\n hasMore,\n };\n } catch (error) {\n console.error('Error getting logs by runId from file:', error);\n return {\n logs: [],\n total: 0,\n page: 0,\n perPage: 0,\n hasMore: false,\n };\n }\n }\n}\n"]}