Rocky_Mountain_Vending/.pnpm-store/v10/files/6b/fa73eaab9b8d801ce4d32041103c63cdbcd0fbe297ff0a08ad39905d737599c1db57cb495e9bafc3a397180473a41eeccbb1692122b377ad6729a89401a26e
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

1 line
No EOL
9.1 KiB
Text

{"version":3,"sources":["../../../../src/server/dev/browser-logs/file-logger.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\n\nexport interface LogEntry {\n timestamp: string\n source: 'Server' | 'Browser'\n level: string\n message: string\n}\n\n// Logging server and browser logs to a file\nexport class FileLogger {\n private logFilePath: string = ''\n private isInitialized: boolean = false\n private logQueue: string[] = []\n private flushTimer: NodeJS.Timeout | null = null\n private mcpServerEnabled: boolean = false\n\n public initialize(distDir: string, mcpServerEnabled: boolean): void {\n this.logFilePath = path.join(distDir, 'logs', `next-development.log`)\n this.mcpServerEnabled = mcpServerEnabled\n\n if (this.isInitialized) {\n return\n }\n\n // Only initialize if mcpServer is enabled\n if (!this.mcpServerEnabled) {\n return\n }\n\n try {\n // Clean up the log file on each initialization\n // ensure the directory exists\n fs.mkdirSync(path.dirname(this.logFilePath), { recursive: true })\n fs.writeFileSync(this.logFilePath, '')\n this.isInitialized = true\n } catch (error) {\n console.error(error)\n }\n }\n\n private formatTimestamp(): string {\n // Use performance.now() instead of Date.now() for avoid sync IO of cache components\n const now = performance.now()\n const hours = Math.floor(now / 3600000)\n .toString()\n .padStart(2, '0')\n const minutes = Math.floor((now % 3600000) / 60000)\n .toString()\n .padStart(2, '0')\n const seconds = Math.floor((now % 60000) / 1000)\n .toString()\n .padStart(2, '0')\n const milliseconds = Math.floor(now % 1000)\n .toString()\n .padStart(3, '0')\n return `${hours}:${minutes}:${seconds}.${milliseconds}`\n }\n\n private formatLogEntry(entry: LogEntry): string {\n const { timestamp, source, level, message } = entry\n const levelPadded = level.toUpperCase().padEnd(7, ' ') // Pad level to 7 characters for alignment\n const sourcePadded = source === 'Browser' ? source : 'Server '\n return `[${timestamp}] ${sourcePadded} ${levelPadded} ${message}\\n`\n }\n\n private scheduleFlush(): void {\n // Debounce the flush\n if (this.flushTimer) {\n clearTimeout(this.flushTimer)\n this.flushTimer = null\n }\n\n // Delay the log flush to ensure more logs can be batched together asynchronously\n this.flushTimer = setTimeout(() => {\n this.flush()\n }, 100)\n }\n\n public getLogQueue(): string[] {\n return this.logQueue\n }\n\n private flush(): void {\n if (this.logQueue.length === 0) {\n return\n }\n\n // Only flush to disk if mcpServer is enabled\n if (!this.mcpServerEnabled) {\n this.logQueue = [] // Clear the queue without writing\n this.flushTimer = null\n return\n }\n\n try {\n // Ensure the directory exists before writing\n const logDir = path.dirname(this.logFilePath)\n if (!fs.existsSync(logDir)) {\n fs.mkdirSync(logDir, { recursive: true })\n }\n\n const logsToWrite = this.logQueue.join('')\n // Writing logs to files synchronously to ensure they're written before returning\n fs.appendFileSync(this.logFilePath, logsToWrite)\n this.logQueue = []\n } catch (error) {\n console.error('Failed to flush logs to file:', error)\n } finally {\n this.flushTimer = null\n }\n }\n\n private enqueueLog(formattedEntry: string): void {\n this.logQueue.push(formattedEntry)\n\n // Cancel existing timer and start a new one to ensure all logs are flushed together\n if (this.flushTimer) {\n clearTimeout(this.flushTimer)\n this.flushTimer = null\n }\n\n this.scheduleFlush()\n }\n\n log(source: 'Server' | 'Browser', level: string, message: string): void {\n // Don't log anything if mcpServer is disabled\n if (!this.mcpServerEnabled) {\n return\n }\n\n if (!this.isInitialized) {\n return\n }\n\n const logEntry: LogEntry = {\n timestamp: this.formatTimestamp(),\n source,\n level,\n message,\n }\n\n const formattedEntry = this.formatLogEntry(logEntry)\n this.enqueueLog(formattedEntry)\n }\n\n logServer(level: string, message: string): void {\n this.log('Server', level, message)\n }\n\n logBrowser(level: string, message: string): void {\n this.log('Browser', level, message)\n }\n\n // Force flush all queued logs immediately\n forceFlush(): void {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer)\n this.flushTimer = null\n }\n this.flush()\n }\n\n // Cleanup method to flush logs on process exit\n destroy(): void {\n this.forceFlush()\n }\n}\n\n// Singleton instance\nlet fileLogger: FileLogger | null = null\n\nexport function getFileLogger(): FileLogger {\n if (!fileLogger || process.env.NODE_ENV === 'test') {\n fileLogger = new FileLogger()\n }\n return fileLogger\n}\n\n// Only used for testing\nexport function test__resetFileLogger(): void {\n if (fileLogger) {\n fileLogger.destroy()\n }\n fileLogger = null\n}\n"],"names":["FileLogger","getFileLogger","test__resetFileLogger","initialize","distDir","mcpServerEnabled","logFilePath","path","join","isInitialized","fs","mkdirSync","dirname","recursive","writeFileSync","error","console","formatTimestamp","now","performance","hours","Math","floor","toString","padStart","minutes","seconds","milliseconds","formatLogEntry","entry","timestamp","source","level","message","levelPadded","toUpperCase","padEnd","sourcePadded","scheduleFlush","flushTimer","clearTimeout","setTimeout","flush","getLogQueue","logQueue","length","logDir","existsSync","logsToWrite","appendFileSync","enqueueLog","formattedEntry","push","log","logEntry","logServer","logBrowser","forceFlush","destroy","fileLogger","process","env","NODE_ENV"],"mappings":";;;;;;;;;;;;;;;;IAWaA,UAAU;eAAVA;;IAkKGC,aAAa;eAAbA;;IAQAC,qBAAqB;eAArBA;;;2DArLD;6DACE;;;;;;AAUV,MAAMF;IAOJG,WAAWC,OAAe,EAAEC,gBAAyB,EAAQ;QAClE,IAAI,CAACC,WAAW,GAAGC,aAAI,CAACC,IAAI,CAACJ,SAAS,QAAQ,CAAC,oBAAoB,CAAC;QACpE,IAAI,CAACC,gBAAgB,GAAGA;QAExB,IAAI,IAAI,CAACI,aAAa,EAAE;YACtB;QACF;QAEA,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAACJ,gBAAgB,EAAE;YAC1B;QACF;QAEA,IAAI;YACF,+CAA+C;YAC/C,8BAA8B;YAC9BK,WAAE,CAACC,SAAS,CAACJ,aAAI,CAACK,OAAO,CAAC,IAAI,CAACN,WAAW,GAAG;gBAAEO,WAAW;YAAK;YAC/DH,WAAE,CAACI,aAAa,CAAC,IAAI,CAACR,WAAW,EAAE;YACnC,IAAI,CAACG,aAAa,GAAG;QACvB,EAAE,OAAOM,OAAO;YACdC,QAAQD,KAAK,CAACA;QAChB;IACF;IAEQE,kBAA0B;QAChC,oFAAoF;QACpF,MAAMC,MAAMC,YAAYD,GAAG;QAC3B,MAAME,QAAQC,KAAKC,KAAK,CAACJ,MAAM,SAC5BK,QAAQ,GACRC,QAAQ,CAAC,GAAG;QACf,MAAMC,UAAUJ,KAAKC,KAAK,CAAC,AAACJ,MAAM,UAAW,OAC1CK,QAAQ,GACRC,QAAQ,CAAC,GAAG;QACf,MAAME,UAAUL,KAAKC,KAAK,CAAC,AAACJ,MAAM,QAAS,MACxCK,QAAQ,GACRC,QAAQ,CAAC,GAAG;QACf,MAAMG,eAAeN,KAAKC,KAAK,CAACJ,MAAM,MACnCK,QAAQ,GACRC,QAAQ,CAAC,GAAG;QACf,OAAO,GAAGJ,MAAM,CAAC,EAAEK,QAAQ,CAAC,EAAEC,QAAQ,CAAC,EAAEC,cAAc;IACzD;IAEQC,eAAeC,KAAe,EAAU;QAC9C,MAAM,EAAEC,SAAS,EAAEC,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAGJ;QAC9C,MAAMK,cAAcF,MAAMG,WAAW,GAAGC,MAAM,CAAC,GAAG,KAAK,0CAA0C;;QACjG,MAAMC,eAAeN,WAAW,YAAYA,SAAS;QACrD,OAAO,CAAC,CAAC,EAAED,UAAU,EAAE,EAAEO,aAAa,CAAC,EAAEH,YAAY,CAAC,EAAED,QAAQ,EAAE,CAAC;IACrE;IAEQK,gBAAsB;QAC5B,qBAAqB;QACrB,IAAI,IAAI,CAACC,UAAU,EAAE;YACnBC,aAAa,IAAI,CAACD,UAAU;YAC5B,IAAI,CAACA,UAAU,GAAG;QACpB;QAEA,iFAAiF;QACjF,IAAI,CAACA,UAAU,GAAGE,WAAW;YAC3B,IAAI,CAACC,KAAK;QACZ,GAAG;IACL;IAEOC,cAAwB;QAC7B,OAAO,IAAI,CAACC,QAAQ;IACtB;IAEQF,QAAc;QACpB,IAAI,IAAI,CAACE,QAAQ,CAACC,MAAM,KAAK,GAAG;YAC9B;QACF;QAEA,6CAA6C;QAC7C,IAAI,CAAC,IAAI,CAACxC,gBAAgB,EAAE;YAC1B,IAAI,CAACuC,QAAQ,GAAG,EAAE,CAAC,kCAAkC;;YACrD,IAAI,CAACL,UAAU,GAAG;YAClB;QACF;QAEA,IAAI;YACF,6CAA6C;YAC7C,MAAMO,SAASvC,aAAI,CAACK,OAAO,CAAC,IAAI,CAACN,WAAW;YAC5C,IAAI,CAACI,WAAE,CAACqC,UAAU,CAACD,SAAS;gBAC1BpC,WAAE,CAACC,SAAS,CAACmC,QAAQ;oBAAEjC,WAAW;gBAAK;YACzC;YAEA,MAAMmC,cAAc,IAAI,CAACJ,QAAQ,CAACpC,IAAI,CAAC;YACvC,iFAAiF;YACjFE,WAAE,CAACuC,cAAc,CAAC,IAAI,CAAC3C,WAAW,EAAE0C;YACpC,IAAI,CAACJ,QAAQ,GAAG,EAAE;QACpB,EAAE,OAAO7B,OAAO;YACdC,QAAQD,KAAK,CAAC,iCAAiCA;QACjD,SAAU;YACR,IAAI,CAACwB,UAAU,GAAG;QACpB;IACF;IAEQW,WAAWC,cAAsB,EAAQ;QAC/C,IAAI,CAACP,QAAQ,CAACQ,IAAI,CAACD;QAEnB,oFAAoF;QACpF,IAAI,IAAI,CAACZ,UAAU,EAAE;YACnBC,aAAa,IAAI,CAACD,UAAU;YAC5B,IAAI,CAACA,UAAU,GAAG;QACpB;QAEA,IAAI,CAACD,aAAa;IACpB;IAEAe,IAAItB,MAA4B,EAAEC,KAAa,EAAEC,OAAe,EAAQ;QACtE,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC5B,gBAAgB,EAAE;YAC1B;QACF;QAEA,IAAI,CAAC,IAAI,CAACI,aAAa,EAAE;YACvB;QACF;QAEA,MAAM6C,WAAqB;YACzBxB,WAAW,IAAI,CAACb,eAAe;YAC/Bc;YACAC;YACAC;QACF;QAEA,MAAMkB,iBAAiB,IAAI,CAACvB,cAAc,CAAC0B;QAC3C,IAAI,CAACJ,UAAU,CAACC;IAClB;IAEAI,UAAUvB,KAAa,EAAEC,OAAe,EAAQ;QAC9C,IAAI,CAACoB,GAAG,CAAC,UAAUrB,OAAOC;IAC5B;IAEAuB,WAAWxB,KAAa,EAAEC,OAAe,EAAQ;QAC/C,IAAI,CAACoB,GAAG,CAAC,WAAWrB,OAAOC;IAC7B;IAEA,0CAA0C;IAC1CwB,aAAmB;QACjB,IAAI,IAAI,CAAClB,UAAU,EAAE;YACnBC,aAAa,IAAI,CAACD,UAAU;YAC5B,IAAI,CAACA,UAAU,GAAG;QACpB;QACA,IAAI,CAACG,KAAK;IACZ;IAEA,+CAA+C;IAC/CgB,UAAgB;QACd,IAAI,CAACD,UAAU;IACjB;;aA3JQnD,cAAsB;aACtBG,gBAAyB;aACzBmC,WAAqB,EAAE;aACvBL,aAAoC;aACpClC,mBAA4B;;AAwJtC;AAEA,qBAAqB;AACrB,IAAIsD,aAAgC;AAE7B,SAAS1D;IACd,IAAI,CAAC0D,cAAcC,QAAQC,GAAG,CAACC,QAAQ,KAAK,QAAQ;QAClDH,aAAa,IAAI3D;IACnB;IACA,OAAO2D;AACT;AAGO,SAASzD;IACd,IAAIyD,YAAY;QACdA,WAAWD,OAAO;IACpB;IACAC,aAAa;AACf","ignoreList":[0]}