@visulima/pail 1.1.13 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE.md +174 -0
  3. package/dist/index.browser.cjs +1 -16
  4. package/dist/index.browser.d.cts +3 -3
  5. package/dist/index.browser.d.mts +10 -0
  6. package/dist/index.browser.d.ts +3 -3
  7. package/dist/index.browser.mjs +1 -0
  8. package/dist/index.server.cjs +4 -20
  9. package/dist/index.server.d.cts +3 -3
  10. package/dist/index.server.d.mts +30 -0
  11. package/dist/index.server.d.ts +3 -3
  12. package/dist/index.server.mjs +5 -0
  13. package/dist/processor.browser.cjs +1 -12
  14. package/dist/processor.browser.d.cts +1 -1
  15. package/dist/processor.browser.d.mts +15 -0
  16. package/dist/processor.browser.d.ts +1 -1
  17. package/dist/processor.browser.mjs +1 -0
  18. package/dist/processor.server.cjs +1 -18
  19. package/dist/processor.server.d.cts +1 -1
  20. package/dist/processor.server.d.mts +47 -0
  21. package/dist/processor.server.d.ts +1 -1
  22. package/dist/processor.server.mjs +1 -0
  23. package/dist/reporter.browser.cjs +4 -26
  24. package/dist/reporter.browser.d.cts +2 -2
  25. package/dist/reporter.browser.d.mts +17 -0
  26. package/dist/reporter.browser.d.ts +2 -2
  27. package/dist/reporter.browser.mjs +5 -0
  28. package/dist/reporter.server.cjs +9 -24
  29. package/dist/reporter.server.d.cts +21 -14
  30. package/dist/reporter.server.d.mts +64 -0
  31. package/dist/reporter.server.d.ts +21 -14
  32. package/dist/reporter.server.mjs +11 -0
  33. package/dist/{abstract-pretty-reporter-B-VS5gYX.d.ts → shared/pail.B4CNQvGO.d.cts} +2 -2
  34. package/dist/shared/pail.B85Cx0UJ.cjs +1 -0
  35. package/dist/shared/pail.BDMlOMw8.cjs +21 -0
  36. package/dist/shared/pail.BP9NvmFd.mjs +1 -0
  37. package/dist/shared/pail.BU1VqUN1.cjs +1 -0
  38. package/dist/{abstract-pretty-reporter-DwzTRutd.d.cts → shared/pail.Bdbc3_zr.d.ts} +2 -2
  39. package/dist/shared/pail.Br_AAl-2.mjs +1 -0
  40. package/dist/shared/pail.BuhpbVGv.mjs +1 -0
  41. package/dist/shared/pail.C0epjAht.cjs +1 -0
  42. package/dist/{pail.browser-DuX9zHSz.d.ts → shared/pail.CHPrWCMI.d.ts} +1 -1
  43. package/dist/shared/pail.CNxJnpWG.mjs +1 -0
  44. package/dist/{pail.browser-pg1HpChf.d.cts → shared/pail.Cc48XFs7.d.mts} +1 -1
  45. package/dist/shared/pail.CzAicDBX.mjs +21 -0
  46. package/dist/shared/pail.D3wUM96H.mjs +1 -0
  47. package/dist/shared/pail.D9OQPGNq.cjs +1 -0
  48. package/dist/shared/pail.DF5wQ_KA.mjs +1 -0
  49. package/dist/shared/pail.DW7tr027.d.cts +58 -0
  50. package/dist/shared/pail.DrhFTME0.d.ts +123 -0
  51. package/dist/shared/pail.DvAyNJOC.mjs +1 -0
  52. package/dist/shared/pail.DwWkopDF.cjs +1 -0
  53. package/dist/shared/pail.boZRgdP1.cjs +1 -0
  54. package/dist/shared/pail.nEbRCLhY.mjs +1 -0
  55. package/dist/shared/pail.qb_TjNJQ.d.mts +36 -0
  56. package/dist/shared/pail.t5UYgSXE.cjs +1 -0
  57. package/dist/shared/pail.zBliJm8v.cjs +1 -0
  58. package/package.json +54 -36
  59. package/dist/chunk-2I5JHTDY.js +0 -9
  60. package/dist/chunk-2I5JHTDY.js.map +0 -1
  61. package/dist/chunk-5MNFJRLM.cjs +0 -10
  62. package/dist/chunk-5MNFJRLM.cjs.map +0 -1
  63. package/dist/chunk-AFMDCM5W.js +0 -5
  64. package/dist/chunk-AFMDCM5W.js.map +0 -1
  65. package/dist/chunk-F4FJCQ4L.cjs +0 -9
  66. package/dist/chunk-F4FJCQ4L.cjs.map +0 -1
  67. package/dist/chunk-KERJDMYV.js +0 -8
  68. package/dist/chunk-KERJDMYV.js.map +0 -1
  69. package/dist/chunk-N2UPJYJR.cjs +0 -7
  70. package/dist/chunk-N2UPJYJR.cjs.map +0 -1
  71. package/dist/chunk-NF47XQ47.js +0 -5
  72. package/dist/chunk-NF47XQ47.js.map +0 -1
  73. package/dist/chunk-QINSQ6TU.cjs +0 -9
  74. package/dist/chunk-QINSQ6TU.cjs.map +0 -1
  75. package/dist/chunk-R5F555RP.js +0 -5
  76. package/dist/chunk-R5F555RP.js.map +0 -1
  77. package/dist/chunk-S4PFPURC.cjs +0 -45
  78. package/dist/chunk-S4PFPURC.cjs.map +0 -1
  79. package/dist/chunk-SR3Q3EUO.js +0 -7
  80. package/dist/chunk-SR3Q3EUO.js.map +0 -1
  81. package/dist/chunk-TAH23BHM.js +0 -5
  82. package/dist/chunk-TAH23BHM.js.map +0 -1
  83. package/dist/chunk-VWAGNTLB.cjs +0 -7
  84. package/dist/chunk-VWAGNTLB.cjs.map +0 -1
  85. package/dist/chunk-WHEIXCFS.js +0 -33
  86. package/dist/chunk-WHEIXCFS.js.map +0 -1
  87. package/dist/chunk-YP3U3DTV.cjs +0 -10
  88. package/dist/chunk-YP3U3DTV.cjs.map +0 -1
  89. package/dist/chunk-ZB7IIFHO.js +0 -7
  90. package/dist/chunk-ZB7IIFHO.js.map +0 -1
  91. package/dist/chunk-ZHHJ42XL.cjs +0 -12
  92. package/dist/chunk-ZHHJ42XL.cjs.map +0 -1
  93. package/dist/chunk-ZJMTPHZR.cjs +0 -7
  94. package/dist/chunk-ZJMTPHZR.cjs.map +0 -1
  95. package/dist/index.browser.cjs.map +0 -1
  96. package/dist/index.browser.js +0 -13
  97. package/dist/index.browser.js.map +0 -1
  98. package/dist/index.server.cjs.map +0 -1
  99. package/dist/index.server.js +0 -18
  100. package/dist/index.server.js.map +0 -1
  101. package/dist/processor.browser.cjs.map +0 -1
  102. package/dist/processor.browser.js +0 -3
  103. package/dist/processor.browser.js.map +0 -1
  104. package/dist/processor.server.cjs.map +0 -1
  105. package/dist/processor.server.js +0 -8
  106. package/dist/processor.server.js.map +0 -1
  107. package/dist/reporter.browser.cjs.map +0 -1
  108. package/dist/reporter.browser.js +0 -17
  109. package/dist/reporter.browser.js.map +0 -1
  110. package/dist/reporter.server.cjs.map +0 -1
  111. package/dist/reporter.server.js +0 -15
  112. package/dist/reporter.server.js.map +0 -1
  113. /package/dist/{types-DrhFTME0.d.cts → shared/pail.DrhFTME0.d.cts} +0 -0
  114. /package/dist/{types-DrhFTME0.d.ts → shared/pail.DrhFTME0.d.mts} +0 -0
@@ -1,8 +0,0 @@
1
- export { a as ErrorProcessor } from './chunk-R5F555RP.js';
2
- export { a as MessageFormatterProcessor } from './chunk-SR3Q3EUO.js';
3
-
4
- var s=()=>{let i=Error.prepareStackTrace;try{let r=[];Error.prepareStackTrace=(n,l)=>{let u=l.slice(1);return r=u,u},new Error().stack;let e=r.reduce((n,l)=>(n.push({columnNumber:l.getColumnNumber(),fileName:l.getFileName(),lineNumber:l.getLineNumber()}),n),[]).at(-2);return e?{columnNumber:e.columnNumber??void 0,fileName:e.fileName,lineNumber:e.lineNumber??void 0}:{fileName:"anonymous",lineNumber:void 0}}finally{Error.prepareStackTrace=i;}};var t=class{process(r){let{columnNumber:m,fileName:e,lineNumber:n}=s();return r.file={column:m,line:n,name:e},r}};
5
-
6
- export { t as CallerProcessor };
7
- //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=processor.server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/util/get-caller-filename.ts","../src/processor/caller-processor.ts"],"names":["getCallerFilename","errorStack","result","_error","stack","callSitesWithoutCurrent","firstExternalFilePath","accumulator","x","CallerProcessor","meta","columnNumber","fileName","lineNumber"],"mappings":"gFAIO,IAAMA,EAAoB,IAI5B,CACD,IAAMC,EAAa,MAAM,kBAEzB,GAAI,CACA,IAAIC,EAAqB,CAAC,EAE1B,MAAM,kBAAoB,CAACC,EAAQC,IAAU,CACzC,IAAMC,EAA0BD,EAAM,MAAM,CAAC,EAE7C,OAAAF,EAASG,EAEFA,CACX,EAGA,IAAI,MAAM,EAAE,MAYZ,IAAMC,EATUJ,EAAO,OAA+B,CAACK,EAAaC,KAChED,EAAY,KAAK,CACb,aAAcC,EAAE,gBAAgB,EAChC,SAAUA,EAAE,YAAY,EACxB,WAAYA,EAAE,cAAc,CAChC,CAAC,EACMD,GACR,CAAC,CAAC,EAEiC,GAAG,EAAE,EAE3C,OAAID,EACO,CACH,aAAcA,EAAsB,cAAgB,OACpD,SAAUA,EAAsB,SAChC,WAAYA,EAAsB,YAAc,MACpD,EAGG,CACH,SAAU,YACV,WAAY,MAChB,CACJ,QAAE,CACE,MAAM,kBAAoBL,CAC9B,CACJ,ECjCO,IAAMQ,EAAN,KAAwE,CAEpE,QAAQC,EAAwB,CACnC,GAAM,CAAE,aAAAC,EAAc,SAAAC,EAAU,WAAAC,CAAW,EAAIb,EAAkB,EAGjE,OAAAU,EAAK,KAAO,CACR,OAAQC,EACR,KAAME,EACN,KAAMD,CACV,EAEOF,CACX,CACJ","sourcesContent":["type CallSite = NodeJS.CallSite;\n\ntype CallSiteWithFileName = { columnNumber: number | null; fileName: string | undefined; lineNumber: number | null };\n\nexport const getCallerFilename = (): {\n columnNumber?: number;\n fileName: string | undefined;\n lineNumber: number | undefined;\n} => {\n const errorStack = Error.prepareStackTrace;\n\n try {\n let result: CallSite[] = [];\n\n Error.prepareStackTrace = (_error, stack) => {\n const callSitesWithoutCurrent = stack.slice(1);\n\n result = callSitesWithoutCurrent;\n\n return callSitesWithoutCurrent;\n };\n\n // eslint-disable-next-line unicorn/error-message,@typescript-eslint/no-unused-expressions\n new Error().stack;\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const callers = result.reduce<CallSiteWithFileName[]>((accumulator, x) => {\n accumulator.push({\n columnNumber: x.getColumnNumber(),\n fileName: x.getFileName(),\n lineNumber: x.getLineNumber(),\n });\n return accumulator;\n }, []);\n\n const firstExternalFilePath = callers.at(-2);\n\n if (firstExternalFilePath) {\n return {\n columnNumber: firstExternalFilePath.columnNumber ?? undefined,\n fileName: firstExternalFilePath.fileName,\n lineNumber: firstExternalFilePath.lineNumber ?? undefined,\n };\n }\n\n return {\n fileName: \"anonymous\",\n lineNumber: undefined,\n };\n } finally {\n Error.prepareStackTrace = errorStack;\n }\n};\n","import type { Meta, Processor } from \"../types\";\nimport { getCallerFilename } from \"../util/get-caller-filename\";\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace VisulimaPail {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface CustomMeta<L> {\n file:\n | {\n column: number | undefined;\n line: number | undefined;\n name: string | undefined;\n }\n | undefined;\n }\n }\n}\n\nexport class CallerProcessor<L extends string = never> implements Processor<L> {\n // eslint-disable-next-line class-methods-use-this\n public process(meta: Meta<L>): Meta<L> {\n const { columnNumber, fileName, lineNumber } = getCallerFilename();\n\n // eslint-disable-next-line no-param-reassign\n meta.file = {\n column: columnNumber,\n line: lineNumber,\n name: fileName,\n };\n\n return meta;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/reporter/pretty/pretty.browser.ts"],"names":["colorize","bold","grey","underline","white","format","PrettyReporter","AbstractPrettyReporter","options","meta","isNotBrowser","consoleLogFunction","writeConsoleLogBasedOnLevel","badge","context","date","error","groups","label","message","prefix","repeated","scope","suffix","type","color","colorized","items","groupSpaces","cGroup","cDate","cBadge","longestBadge","getLongestBadge","cBadgePlaceholder","longestLabel","getLongestLabel","repeatedMessage","cRepeated","cLabel","lengthDiff","cLabelSpacer","cSpacer","cScope","cPrefix","cSuffix","logMessage","css","arguments_","value","formattedLabel"],"mappings":"wMAAA,OAAOA,GAAY,QAAAC,EAAM,QAAAC,EAAM,aAAAC,EAAW,SAAAC,MAAa,6BACvD,OAAS,UAAAC,MAAc,gBAShB,IAAMC,EAAN,cAAiFC,CAA6B,CAC1G,YAAYC,EAAuC,CAAC,EAAG,CAC1D,MAAM,CACF,UAAW,CACP,MAAO,GACP,GAAGA,EAAQ,SACf,EACA,GAAGA,CACP,CAAC,CACL,CAGO,IAAIC,EAA6B,CAEpC,IAAMC,EAAe,OAAO,OAAW,KAAe,OAAO,OAAO,SAAa,IAC3EC,EAAqBC,EAA4BH,EAAK,KAAK,KAAK,EAEhE,CAAE,MAAAI,EAAO,QAAAC,EAAS,KAAAC,EAAM,MAAAC,EAAO,OAAAC,EAAQ,MAAAC,EAAO,QAAAC,EAAS,OAAAC,EAAQ,SAAAC,EAAU,MAAAC,EAAO,OAAAC,EAAQ,KAAAC,CAAK,EAAIf,EAEjG,CAAE,MAAAgB,CAAM,EAAI,KAAK,aAAaD,EAAK,IAAsC,EAEzEE,EAAYD,EAAQzB,EAASyB,CAAK,EAAIrB,EAEtCuB,EAAQ,CAAC,EAEf,GAAIjB,GAAgBO,EAAO,OAAS,EAAG,CACnC,IAAMW,EAAsBX,EAAO,IAAI,IAAM,KAAK,EAAE,KAAK,EAAE,EACrDY,EAAS3B,EAAK,IAAOe,EAAO,GAAG,EAAE,EAAe,GAAG,EAEzDU,EAAM,KAAKtB,EAAOuB,EAAeC,EAAO,CAAC,EAAcA,EAAO,MAAM,CAAC,CAAwB,CAAC,CAClG,CAEA,GAAId,EAAM,CACN,IAAMe,EAAQ5B,EAAK,KAAK,QAAQ,cAAc,IAAI,KAAKa,CAAI,CAAC,CAAC,EAEzDL,EACAiB,EAAM,KAAKtB,EAAOyB,EAAM,CAAC,EAAaA,EAAM,MAAM,CAAC,CAAwB,CAAC,EAE5EH,EAAM,KAAK,CAAEG,EAAM,CAAC,EAAe,IAAK,GAAGA,EAAM,MAAM,CAAC,CAAC,CAAC,CAElE,CAEA,GAAIjB,EAAO,CACP,IAAMkB,EAASL,EAAUb,CAAK,EAE1BH,EACAiB,EAAM,KAAKtB,EAAO0B,EAAO,CAAC,EAAaA,EAAO,MAAM,CAAC,CAAwB,CAAC,EAE9EJ,EAAM,KAAK,CAACI,EAAO,CAAC,EAAI,IAAK,GAAGA,EAAO,MAAM,CAAC,CAAC,CAAC,CAExD,KAAO,CACH,IAAMC,EAAuBC,EAAsB,KAAK,YAAY,EAEpE,GAAID,EAAa,OAAS,EAAG,CACzB,IAAME,EAAoBhC,EAAK,IAAI,OAAO8B,EAAa,MAAM,CAAC,EAE1DtB,EACAiB,EAAM,KAAKtB,EAAQ6B,EAAkB,CAAC,EAAe,IAAKA,EAAkB,MAAM,CAAC,CAAwB,CAAC,EAE5GP,EAAM,KAAK,CAAEO,EAAkB,CAAC,EAAe,IAAK,GAAGA,EAAkB,MAAM,CAAC,CAAC,CAAC,CAE1F,CACJ,CAEA,IAAMC,EAAeC,EAAsB,KAAK,YAAY,EAGxDC,EAEJ,GAAIhB,EAAU,CACV,IAAMiB,EAAYlC,EAAM,IAAMiB,EAAW,IAAI,EAE7CgB,EAAkB3B,EACXL,EAAOiC,EAAU,CAAC,EAAaA,EAAU,MAAM,CAAC,CAAwB,EACzE,CAACA,EAAU,CAAC,EAAG,GAAGA,EAAU,MAAM,CAAC,CAAC,CAC9C,CAEA,GAAIpB,EAAO,CACP,IAAMqB,EAASb,EAAU,KAAK,aAAaR,CAAe,CAAC,EAEvDR,EACAiB,EAAM,KAAKtB,EAAOkC,EAAO,CAAC,EAAaA,EAAO,MAAM,CAAC,CAAwB,CAAC,EAE9EZ,EAAM,KAAK,CAACY,EAAO,CAAC,EAAG,GAAGA,EAAO,MAAM,CAAC,CAAC,CAAC,EAG1CF,GACAV,EAAM,KAAKU,CAAe,EAG9B,IAAIG,EAAcL,EAAwB,OAAUjB,EAAiB,OAQrE,GANIG,EACAmB,GAAc,OAAOnB,CAAQ,EAAE,OAAS,EAExCmB,GAAc,EAGdA,EAAa,EAAG,CAChB,IAAMC,EAAevC,EAAK,IAAI,OAAOsC,CAAU,CAAC,EAE5C9B,EACAiB,EAAM,KAAKtB,EAAOoC,EAAa,CAAC,EAAaA,EAAa,MAAM,CAAC,CAAwB,CAAC,EAE1Fd,EAAM,KAAK,CAAC,IAAMc,EAAa,CAAC,EAAG,GAAGA,EAAa,MAAM,CAAC,CAAC,CAAC,CAEpE,CACJ,KAAO,CACH,IAAMC,EAAUxC,EAAK,IAAI,OAAQiC,EAAwB,OAAS,CAAC,CAAC,EAEhEzB,EACAiB,EAAM,KAAKtB,EAAOqC,EAAQ,CAAC,EAAaA,EAAQ,MAAM,CAAC,CAAwB,CAAC,EAEhFf,EAAM,KAAK,CAACe,EAAQ,CAAC,EAAG,GAAGA,EAAQ,MAAM,CAAC,CAAC,CAAC,CAEpD,CAEA,GAAI,MAAM,QAAQpB,CAAK,GAAKA,EAAM,OAAS,EAAG,CAC1C,IAAMqB,EAASzC,EAAK,IAAMoB,EAAM,KAAK,KAAK,EAAI,GAAG,EAE7CZ,EACAiB,EAAM,KAAKtB,EAAOsC,EAAO,CAAC,EAAaA,EAAO,MAAM,CAAC,CAAwB,CAAC,EAE9EhB,EAAM,KAAK,CAACgB,EAAO,CAAC,EAAG,GAAGA,EAAO,MAAM,CAAC,CAAC,CAAC,CAElD,CAEA,GAAIvB,EAAQ,CACR,IAAMwB,EAAU1C,GACX,MAAM,QAAQoB,CAAK,GAAKA,EAAM,OAAS,EAAI,KAAO,KAAO,KAAO,KAAK,QAAQ,UAAU,OAASnB,EAAUiB,CAAgB,EAAIA,GAAU,IAC7I,EAEIV,EACAiB,EAAM,KAAKtB,EAAOuC,EAAQ,CAAC,EAAaA,EAAQ,MAAM,CAAC,CAAwB,CAAC,EAEhFjB,EAAM,KAAK,CAACiB,EAAQ,CAAC,EAAa,GAAGA,EAAQ,MAAM,CAAC,CAAC,CAAC,CAE9D,CAcA,GAZIzB,IACAQ,EAAM,KAAKR,CAAO,EAEdL,GACAa,EAAM,KAAK,GAAGb,CAAO,GAIzBE,GACAW,EAAM,KAAKX,EAAO;AAAA;AAAA,CAAM,EAGxBO,EAAQ,CACR,IAAMsB,EAAU3C,EAAM,KAAK,QAAQ,UAAU,OAASC,EAAUoB,CAAgB,EAAIA,CAAiB,EAEjGb,EACAiB,EAAM,KAAKtB,EAAQ;AAAA,EAAQwC,EAAQ,CAAC,EAAyBA,EAAQ,MAAM,CAAC,CAAwB,CAAC,EAErGlB,EAAM,KAAK,CAAE;AAAA,EAAQkB,EAAQ,CAAC,EAAyB,GAAGA,EAAQ,MAAM,CAAC,CAAC,CAAC,CAEnF,CAEA,GAAInC,EACAC,EAAmB,GAAGgB,CAAK,MACxB,CACH,IAAImB,EAAa,GAEXC,EAAM,CAAC,EAEPC,EAAa,CAAC,EAGpB,QAAWC,KAAStB,EACZ,MAAM,QAAQsB,CAAK,GAAKA,EAAM,OAAS,GAAMA,EAAM,CAAC,EAAa,SAAS,IAAI,GAC9EH,GAAcG,EAAM,CAAC,EAErBF,EAAI,KAAK,GAAGE,EAAM,MAAM,CAAC,CAAC,GAE1BD,EAAW,KAAKC,CAAK,EAI7BtC,EAAmBmC,EAAa,KAAM,GAAGC,EAAK,GAAI,GAAGC,CAAU,CACnE,CACJ,CAEQ,aAAa9B,EAAuB,CACxC,IAAIgC,EAAiB,KAAK,QAAQ,UAAU,MAAQhC,EAAM,YAAY,EAAIA,EAE1E,OAAAgC,EAAiB,KAAK,QAAQ,UAAU,MAAQ/C,EAAU+C,CAAc,EAAIA,EAExE,KAAK,QAAQ,KAAK,QAClBA,EAAiBjD,EAAKiD,CAAc,GAGjCA,CACX,CACJ","sourcesContent":["import colorize, { bold, grey, underline, white } from \"@visulima/colorize/browser\";\nimport { format } from \"@visulima/fmt\";\n\nimport type { ReadonlyMeta } from \"../../types\";\nimport { getLongestBadge } from \"../../util/get-longest-badge\";\nimport { getLongestLabel } from \"../../util/get-longest-label\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\nimport type { PrettyStyleOptions } from \"./abstract-pretty-reporter\";\nimport { AbstractPrettyReporter } from \"./abstract-pretty-reporter\";\n\nexport class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> {\n public constructor(options: Partial<PrettyStyleOptions> = {}) {\n super({\n uppercase: {\n label: true,\n ...options.uppercase,\n },\n ...options,\n });\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public log(meta: ReadonlyMeta<L>): void {\n // eslint-disable-next-line unicorn/no-typeof-undefined,@typescript-eslint/prefer-optional-chain\n const isNotBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n const consoleLogFunction = writeConsoleLogBasedOnLevel(meta.type.level);\n\n const { badge, context, date, error, groups, label, message, prefix, repeated, scope, suffix, type } = meta;\n\n const { color } = this._loggerTypes[type.name as keyof typeof this._loggerTypes];\n // eslint-disable-next-line security/detect-object-injection\n const colorized = color ? colorize[color] : white;\n\n const items = [];\n\n if (isNotBrowser && groups.length > 0) {\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n const cGroup = grey(\"[\" + (groups.at(-1) as string) + \"]\");\n\n items.push(format(groupSpaces + (cGroup[0] as string), cGroup.slice(1) as unknown as string[]));\n }\n\n if (date) {\n const cDate = grey(this._styles.dateFormatter(new Date(date)));\n\n if (isNotBrowser) {\n items.push(format(cDate[0] as string, cDate.slice(1) as unknown as string[]));\n } else {\n items.push([(cDate[0] as string) + \" \", ...cDate.slice(1)]);\n }\n }\n\n if (badge) {\n const cBadge = colorized(badge);\n\n if (isNotBrowser) {\n items.push(format(cBadge[0] as string, cBadge.slice(1) as unknown as string[]));\n } else {\n items.push([cBadge[0] + \" \", ...cBadge.slice(1)]);\n }\n } else {\n const longestBadge: string = getLongestBadge<L, T>(this._loggerTypes);\n\n if (longestBadge.length > 0) {\n const cBadgePlaceholder = grey(\".\".repeat(longestBadge.length));\n\n if (isNotBrowser) {\n items.push(format((cBadgePlaceholder[0] as string) + \" \", cBadgePlaceholder.slice(1) as unknown as string[]));\n } else {\n items.push([(cBadgePlaceholder[0] as string) + \" \", ...cBadgePlaceholder.slice(1)]);\n }\n }\n }\n\n const longestLabel = getLongestLabel<L, T>(this._loggerTypes);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let repeatedMessage: any[] | string | undefined;\n\n if (repeated) {\n const cRepeated = white(\"[\" + repeated + \"x]\");\n\n repeatedMessage = isNotBrowser\n ? (format(cRepeated[0] as string, cRepeated.slice(1) as unknown as string[]) as string)\n : [cRepeated[0], ...cRepeated.slice(1)];\n }\n\n if (label) {\n const cLabel = colorized(this._formatLabel(label as string));\n\n if (isNotBrowser) {\n items.push(format(cLabel[0] as string, cLabel.slice(1) as unknown as string[]));\n } else {\n items.push([cLabel[0], ...cLabel.slice(1)]);\n }\n\n if (repeatedMessage) {\n items.push(repeatedMessage);\n }\n\n let lengthDiff = (longestLabel as string).length - (label as string).length;\n\n if (repeated) {\n lengthDiff -= String(repeated).length + 3;\n } else {\n lengthDiff += 1;\n }\n\n if (lengthDiff > 0) {\n const cLabelSpacer = grey(\".\".repeat(lengthDiff));\n\n if (isNotBrowser) {\n items.push(format(cLabelSpacer[0] as string, cLabelSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([\" \" + cLabelSpacer[0], ...cLabelSpacer.slice(1)]);\n }\n }\n } else {\n const cSpacer = grey(\".\".repeat((longestLabel as string).length + 1));\n\n if (isNotBrowser) {\n items.push(format(cSpacer[0] as string, cSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([cSpacer[0], ...cSpacer.slice(1)]);\n }\n }\n\n if (Array.isArray(scope) && scope.length > 0) {\n const cScope = grey(\"[\" + scope.join(\" > \") + \"]\");\n\n if (isNotBrowser) {\n items.push(format(cScope[0] as string, cScope.slice(1) as unknown as string[]));\n } else {\n items.push([cScope[0], ...cScope.slice(1)]);\n }\n }\n\n if (prefix) {\n const cPrefix = grey(\n (Array.isArray(scope) && scope.length > 0 ? \". \" : \" \") + \"[\" + (this._styles.underline.prefix ? underline(prefix as string) : prefix) + \"] \",\n );\n\n if (isNotBrowser) {\n items.push(format(cPrefix[0] as string, cPrefix.slice(1) as unknown as string[]));\n } else {\n items.push([cPrefix[0] as string, ...cPrefix.slice(1)]);\n }\n }\n\n if (message) {\n items.push(message);\n\n if (context) {\n items.push(...context);\n }\n }\n\n if (error) {\n items.push(error, \"\\n\\n\");\n }\n\n if (suffix) {\n const cSuffix = grey((this._styles.underline.suffix ? underline(suffix as string) : suffix) as string);\n\n if (isNotBrowser) {\n items.push(format((\"\\n\" + (cSuffix[0] as string)) as string, cSuffix.slice(1) as unknown as string[]));\n } else {\n items.push([(\"\\n\" + (cSuffix[0] as string)) as string, ...cSuffix.slice(1)]);\n }\n }\n\n if (isNotBrowser) {\n consoleLogFunction(...items);\n } else {\n let logMessage = \"\";\n\n const css = [];\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const arguments_ = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const value of items) {\n if (Array.isArray(value) && value.length > 1 && (value[0] as string).includes(\"%c\")) {\n logMessage += value[0];\n\n css.push(...value.slice(1));\n } else {\n arguments_.push(value);\n }\n }\n\n consoleLogFunction(logMessage + \"%c\", ...css, \"\", ...arguments_);\n }\n }\n\n private _formatLabel(label: string): string {\n let formattedLabel = this._styles.uppercase.label ? label.toUpperCase() : label;\n\n formattedLabel = this._styles.underline.label ? underline(formattedLabel) : formattedLabel;\n\n if (this._styles.bold.label) {\n formattedLabel = bold(formattedLabel);\n }\n\n return formattedLabel;\n }\n}\n"]}
@@ -1,17 +0,0 @@
1
- export { a as JsonReporter } from './chunk-KERJDMYV.js';
2
- import { a } from './chunk-AFMDCM5W.js';
3
- import './chunk-TAH23BHM.js';
4
- import { b, a as a$1 } from './chunk-ZB7IIFHO.js';
5
- import { c } from './chunk-NF47XQ47.js';
6
- import C, { white, grey, underline, bold } from '@visulima/colorize/browser';
7
- import { format } from '@visulima/fmt';
8
-
9
- var m=class extends b{constructor(r={}){super({uppercase:{label:!0,...r.uppercase},...r});}log(r){let t=typeof window<"u"&&typeof window.document<"u",w=a(r.type.level),{badge:b,context:L,date:x,error:_,groups:p,label:u,message:k,prefix:f,repeated:c$1,scope:g,suffix:h,type:D}=r,{color:S}=this._loggerTypes[D.name],T=S?C[S]:white,e=[];if(t&&p.length>0){let s=p.map(()=>" ").join(""),n=grey("["+p.at(-1)+"]");e.push(format(s+n[0],n.slice(1)));}if(x){let s=grey(this._styles.dateFormatter(new Date(x)));t?e.push(format(s[0],s.slice(1))):e.push([s[0]+" ",...s.slice(1)]);}if(b){let s=T(b);t?e.push(format(s[0],s.slice(1))):e.push([s[0]+" ",...s.slice(1)]);}else {let s=a$1(this._loggerTypes);if(s.length>0){let n=grey(".".repeat(s.length));t?e.push(format(n[0]+" ",n.slice(1))):e.push([n[0]+" ",...n.slice(1)]);}}let v=c(this._loggerTypes),d;if(c$1){let s=white("["+c$1+"x]");d=t?format(s[0],s.slice(1)):[s[0],...s.slice(1)];}if(u){let s=T(this._formatLabel(u));t?e.push(format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]),d&&e.push(d);let n=v.length-u.length;if(c$1?n-=String(c$1).length+3:n+=1,n>0){let a=grey(".".repeat(n));t?e.push(format(a[0],a.slice(1))):e.push([" "+a[0],...a.slice(1)]);}}else {let s=grey(".".repeat(v.length+1));t?e.push(format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(Array.isArray(g)&&g.length>0){let s=grey("["+g.join(" > ")+"]");t?e.push(format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(f){let s=grey((Array.isArray(g)&&g.length>0?". ":" ")+"["+(this._styles.underline.prefix?underline(f):f)+"] ");t?e.push(format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(k&&(e.push(k),L&&e.push(...L)),_&&e.push(_,`
10
-
11
- `),h){let s=grey(this._styles.underline.suffix?underline(h):h);t?e.push(format(`
12
- `+s[0],s.slice(1))):e.push([`
13
- `+s[0],...s.slice(1)]);}if(t)w(...e);else {let s="",n=[],a=[];for(let l of e)Array.isArray(l)&&l.length>1&&l[0].includes("%c")?(s+=l[0],n.push(...l.slice(1))):a.push(l);w(s+"%c",...n,"",...a);}}_formatLabel(r){let t=this._styles.uppercase.label?r.toUpperCase():r;return t=this._styles.underline.label?underline(t):t,this._styles.bold.label&&(t=bold(t)),t}};
14
-
15
- export { m as PrettyReporter };
16
- //# sourceMappingURL=out.js.map
17
- //# sourceMappingURL=reporter.browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/reporter/pretty/pretty.browser.ts"],"names":["colorize","bold","grey","underline","white","format","PrettyReporter","AbstractPrettyReporter","options","meta","isNotBrowser","consoleLogFunction","writeConsoleLogBasedOnLevel","badge","context","date","error","groups","label","message","prefix","repeated","scope","suffix","type","color","colorized","items","groupSpaces","cGroup","cDate","cBadge","longestBadge","getLongestBadge","cBadgePlaceholder","longestLabel","getLongestLabel","repeatedMessage","cRepeated","cLabel","lengthDiff","cLabelSpacer","cSpacer","cScope","cPrefix","cSuffix","logMessage","css","arguments_","value","formattedLabel"],"mappings":"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","sourcesContent":["import colorize, { bold, grey, underline, white } from \"@visulima/colorize/browser\";\nimport { format } from \"@visulima/fmt\";\n\nimport type { ReadonlyMeta } from \"../../types\";\nimport { getLongestBadge } from \"../../util/get-longest-badge\";\nimport { getLongestLabel } from \"../../util/get-longest-label\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\nimport type { PrettyStyleOptions } from \"./abstract-pretty-reporter\";\nimport { AbstractPrettyReporter } from \"./abstract-pretty-reporter\";\n\nexport class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> {\n public constructor(options: Partial<PrettyStyleOptions> = {}) {\n super({\n uppercase: {\n label: true,\n ...options.uppercase,\n },\n ...options,\n });\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public log(meta: ReadonlyMeta<L>): void {\n // eslint-disable-next-line unicorn/no-typeof-undefined,@typescript-eslint/prefer-optional-chain\n const isNotBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n const consoleLogFunction = writeConsoleLogBasedOnLevel(meta.type.level);\n\n const { badge, context, date, error, groups, label, message, prefix, repeated, scope, suffix, type } = meta;\n\n const { color } = this._loggerTypes[type.name as keyof typeof this._loggerTypes];\n // eslint-disable-next-line security/detect-object-injection\n const colorized = color ? colorize[color] : white;\n\n const items = [];\n\n if (isNotBrowser && groups.length > 0) {\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n const cGroup = grey(\"[\" + (groups.at(-1) as string) + \"]\");\n\n items.push(format(groupSpaces + (cGroup[0] as string), cGroup.slice(1) as unknown as string[]));\n }\n\n if (date) {\n const cDate = grey(this._styles.dateFormatter(new Date(date)));\n\n if (isNotBrowser) {\n items.push(format(cDate[0] as string, cDate.slice(1) as unknown as string[]));\n } else {\n items.push([(cDate[0] as string) + \" \", ...cDate.slice(1)]);\n }\n }\n\n if (badge) {\n const cBadge = colorized(badge);\n\n if (isNotBrowser) {\n items.push(format(cBadge[0] as string, cBadge.slice(1) as unknown as string[]));\n } else {\n items.push([cBadge[0] + \" \", ...cBadge.slice(1)]);\n }\n } else {\n const longestBadge: string = getLongestBadge<L, T>(this._loggerTypes);\n\n if (longestBadge.length > 0) {\n const cBadgePlaceholder = grey(\".\".repeat(longestBadge.length));\n\n if (isNotBrowser) {\n items.push(format((cBadgePlaceholder[0] as string) + \" \", cBadgePlaceholder.slice(1) as unknown as string[]));\n } else {\n items.push([(cBadgePlaceholder[0] as string) + \" \", ...cBadgePlaceholder.slice(1)]);\n }\n }\n }\n\n const longestLabel = getLongestLabel<L, T>(this._loggerTypes);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let repeatedMessage: any[] | string | undefined;\n\n if (repeated) {\n const cRepeated = white(\"[\" + repeated + \"x]\");\n\n repeatedMessage = isNotBrowser\n ? (format(cRepeated[0] as string, cRepeated.slice(1) as unknown as string[]) as string)\n : [cRepeated[0], ...cRepeated.slice(1)];\n }\n\n if (label) {\n const cLabel = colorized(this._formatLabel(label as string));\n\n if (isNotBrowser) {\n items.push(format(cLabel[0] as string, cLabel.slice(1) as unknown as string[]));\n } else {\n items.push([cLabel[0], ...cLabel.slice(1)]);\n }\n\n if (repeatedMessage) {\n items.push(repeatedMessage);\n }\n\n let lengthDiff = (longestLabel as string).length - (label as string).length;\n\n if (repeated) {\n lengthDiff -= String(repeated).length + 3;\n } else {\n lengthDiff += 1;\n }\n\n if (lengthDiff > 0) {\n const cLabelSpacer = grey(\".\".repeat(lengthDiff));\n\n if (isNotBrowser) {\n items.push(format(cLabelSpacer[0] as string, cLabelSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([\" \" + cLabelSpacer[0], ...cLabelSpacer.slice(1)]);\n }\n }\n } else {\n const cSpacer = grey(\".\".repeat((longestLabel as string).length + 1));\n\n if (isNotBrowser) {\n items.push(format(cSpacer[0] as string, cSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([cSpacer[0], ...cSpacer.slice(1)]);\n }\n }\n\n if (Array.isArray(scope) && scope.length > 0) {\n const cScope = grey(\"[\" + scope.join(\" > \") + \"]\");\n\n if (isNotBrowser) {\n items.push(format(cScope[0] as string, cScope.slice(1) as unknown as string[]));\n } else {\n items.push([cScope[0], ...cScope.slice(1)]);\n }\n }\n\n if (prefix) {\n const cPrefix = grey(\n (Array.isArray(scope) && scope.length > 0 ? \". \" : \" \") + \"[\" + (this._styles.underline.prefix ? underline(prefix as string) : prefix) + \"] \",\n );\n\n if (isNotBrowser) {\n items.push(format(cPrefix[0] as string, cPrefix.slice(1) as unknown as string[]));\n } else {\n items.push([cPrefix[0] as string, ...cPrefix.slice(1)]);\n }\n }\n\n if (message) {\n items.push(message);\n\n if (context) {\n items.push(...context);\n }\n }\n\n if (error) {\n items.push(error, \"\\n\\n\");\n }\n\n if (suffix) {\n const cSuffix = grey((this._styles.underline.suffix ? underline(suffix as string) : suffix) as string);\n\n if (isNotBrowser) {\n items.push(format((\"\\n\" + (cSuffix[0] as string)) as string, cSuffix.slice(1) as unknown as string[]));\n } else {\n items.push([(\"\\n\" + (cSuffix[0] as string)) as string, ...cSuffix.slice(1)]);\n }\n }\n\n if (isNotBrowser) {\n consoleLogFunction(...items);\n } else {\n let logMessage = \"\";\n\n const css = [];\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const arguments_ = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const value of items) {\n if (Array.isArray(value) && value.length > 1 && (value[0] as string).includes(\"%c\")) {\n logMessage += value[0];\n\n css.push(...value.slice(1));\n } else {\n arguments_.push(value);\n }\n }\n\n consoleLogFunction(logMessage + \"%c\", ...css, \"\", ...arguments_);\n }\n }\n\n private _formatLabel(label: string): string {\n let formattedLabel = this._styles.uppercase.label ? label.toUpperCase() : label;\n\n formattedLabel = this._styles.underline.label ? underline(formattedLabel) : formattedLabel;\n\n if (this._styles.bold.label) {\n formattedLabel = bold(formattedLabel);\n }\n\n return formattedLabel;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/util/rotating-file-stream.ts","../src/util/safe-stream-handler.ts","../src/reporter/file/abstract-file-reporter.ts","../src/reporter/file/json-file-reporter.ts","../src/reporter/json/json.server.ts"],"names":["createRfsStream","SafeStreamHandler","stream","name","message","arguments_","error","RotatingFileStream","filePath","writeImmediately","options","fileStream","AbstractFileReporter","rfsOptions","meta","JsonFileReporter","#stringify","function_","type","rest","process","JsonReporter","AbstractJsonReporter","#stdout","#stderr","stdout","stderr","logLevel","writeStream"],"mappings":"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","sourcesContent":["import type { Writable } from \"node:stream\";\n\nimport type { Options as RfsOptions } from \"rotating-file-stream\";\nimport { createStream as createRfsStream } from \"rotating-file-stream\";\n\nimport { SafeStreamHandler } from \"./safe-stream-handler\";\n\n/**\n * A wrapper for the `rfs` module that will optionally write to disk immediately\n * by creating and closing a new stream on each write.\n */\nexport class RotatingFileStream {\n private readonly _filePath: string;\n\n private readonly _immediate: boolean;\n\n private readonly _stream: Writable | undefined;\n\n private readonly _options: RfsOptions;\n\n public constructor(filePath: string, writeImmediately = false, options: RfsOptions = {}) {\n this._filePath = filePath;\n this._immediate = writeImmediately;\n this._options = options;\n\n if (!this._immediate) {\n this._stream = createRfsStream(this._filePath, options);\n }\n }\n\n /**\n * Writes `message` to the instance's internal _stream\n * @param message Message to write\n */\n public write(message: string): void {\n let fileStream = this._stream;\n\n if (this._immediate) {\n fileStream = createRfsStream(this._filePath, this._options);\n }\n\n const stream = new SafeStreamHandler(fileStream as Writable, this._filePath);\n\n stream.write(message);\n\n if (this._immediate) {\n stream.end();\n }\n }\n\n /**\n * Ends the instance's internal _stream\n *\n * When `immediate` is not `true`, a call to `write` after calling this method\n * will throw an error.\n */\n public end(): void {\n if (this._stream !== undefined) {\n this._stream.end();\n }\n }\n}\n","import type { Writable } from \"node:stream\";\n\n/**\n * A handler for writable streams that only writes if the stream has finished\n * processing or draining\n */\nexport class SafeStreamHandler {\n public _ready = true;\n\n protected _stream: Writable;\n\n protected _name: string;\n\n public constructor(stream: Writable, name: string) {\n this._stream = stream;\n this._name = name;\n }\n\n /**\n * Writes `message` to the instance's internal stream\n * @param message Message to write\n */\n public write(message: string): void {\n this.writeStream(message);\n }\n\n /**\n * Calls `end` on this instance's internal stream\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public end(...arguments_: any[]): void {\n this._stream.end(...arguments_);\n }\n\n protected writeStream(message: string): void {\n if (!this._ready) {\n // eslint-disable-next-line no-console\n console.warn(\"Stream busy: \" + this._name + '. Write will be dropped: \"' + message + '\"');\n return;\n }\n this._ready = false;\n\n this._stream.on(\"error\", (error) => {\n throw error;\n });\n this._stream.on(\"drain\", () => {\n this._ready = true;\n });\n this._stream.on(\"finish\", () => {\n this._ready = true;\n });\n this._ready = this._stream.write(message, () => {});\n }\n}\n","import type { Options as RfsOptions } from \"rotating-file-stream\";\n\nimport type { ReadonlyMeta, Reporter } from \"../../types\";\nimport { RotatingFileStream } from \"../../util/rotating-file-stream\";\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type Options = RfsOptions & {\n filePath: string;\n writeImmediately?: boolean;\n};\n\nexport abstract class AbstractFileReporter<L extends string = never> implements Reporter<L> {\n protected _stream: RotatingFileStream;\n\n protected constructor(options: Options) {\n const { filePath, writeImmediately = false, ...rfsOptions } = options;\n\n this._stream = new RotatingFileStream(filePath, writeImmediately, rfsOptions);\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n this._stream.write(this._formatMessage(meta as ReadonlyMeta<L>) + \"\\n\");\n }\n\n protected abstract _formatMessage(data: ReadonlyMeta<L>): string;\n}\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { Meta } from \"../../types\";\nimport type { Options as FileReporterOptions } from \"./abstract-file-reporter\";\nimport { AbstractFileReporter } from \"./abstract-file-reporter\";\n\nexport class JsonFileReporter<L extends string = never> extends AbstractFileReporter<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #stringify: typeof stringify | undefined;\n\n public constructor(options: FileReporterOptions) {\n super({\n compress: \"gzip\", // compress rotated files\n interval: \"1d\", // rotate daily\n size: \"10M\", // rotate every 10 MegaBytes written\n ...options,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n protected _formatMessage(meta: Meta<L>): string {\n const { type, ...rest } = meta;\n\n if (rest.label) {\n rest.label = rest.label.trim();\n }\n\n if (rest.file) {\n // This is a hack to make the file property a string\n (rest as unknown as Omit<Meta<L>, \"file\"> & { file: string }).file =\n rest.file.name + \":\" + rest.file.line + (rest.file.column ? \":\" + rest.file.column : \"\");\n }\n\n return (this.#stringify as typeof stringify)(rest) as string;\n }\n}\n","import process from \"node:process\";\n\nimport type { ExtendedRfc5424LogLevels, LiteralUnion, StreamAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\nimport { AbstractJsonReporter } from \"./abstract-json-reporter\";\n\nexport class JsonReporter<L extends string = never> extends AbstractJsonReporter<L> implements StreamAwareReporter<L> {\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n public constructor() {\n super();\n\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStdout(stdout: NodeJS.WriteStream) {\n this.#stdout = stdout;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStderr(stderr: NodeJS.WriteStream) {\n this.#stderr = stderr;\n }\n\n protected override _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void {\n const stream = [\"error\", \"warn\"].includes(logLevel as string) ? this.#stderr : this.#stdout;\n\n writeStream(message + \"\\n\", stream);\n }\n}\n"]}
@@ -1,15 +0,0 @@
1
- import { c } from './chunk-WHEIXCFS.js';
2
- export { d as PrettyReporter } from './chunk-WHEIXCFS.js';
3
- import { a } from './chunk-TAH23BHM.js';
4
- import './chunk-ZB7IIFHO.js';
5
- import './chunk-NF47XQ47.js';
6
- import { createStream } from 'rotating-file-stream';
7
- import h from 'node:process';
8
-
9
- var n=class{_ready=!0;_stream;_name;constructor(t,r){this._stream=t,this._name=r;}write(t){this.writeStream(t);}end(...t){this._stream.end(...t);}writeStream(t){if(!this._ready){console.warn("Stream busy: "+this._name+'. Write will be dropped: "'+t+'"');return}this._ready=!1,this._stream.on("error",r=>{throw r}),this._stream.on("drain",()=>{this._ready=!0;}),this._stream.on("finish",()=>{this._ready=!0;}),this._ready=this._stream.write(t,()=>{});}};var p=class{_filePath;_immediate;_stream;_options;constructor(t,r=!1,e={}){this._filePath=t,this._immediate=r,this._options=e,this._immediate||(this._stream=createStream(this._filePath,e));}write(t){let r=this._stream;this._immediate&&(r=createStream(this._filePath,this._options));let e=new n(r,this._filePath);e.write(t),this._immediate&&e.end();}end(){this._stream!==void 0&&this._stream.end();}};var o=class{_stream;constructor(t){let{filePath:r,writeImmediately:e=!1,...y}=t;this._stream=new p(r,e,y);}log(t){this._stream.write(this._formatMessage(t)+`
10
- `);}};var m=class extends o{#t;constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});}setStringify(t){this.#t=t;}_formatMessage(t){let{type:r,...e}=t;return e.label&&(e.label=e.label.trim()),e.file&&(e.file=e.file.name+":"+e.file.line+(e.file.column?":"+e.file.column:"")),this.#t(e)}};var l=class extends a{#t;#e;constructor(){super(),this.#t=h.stdout,this.#e=h.stderr;}setStdout(t){this.#t=t;}setStderr(t){this.#e=t;}_log(t,r){let e=["error","warn"].includes(r)?this.#e:this.#t;c(t+`
11
- `,e);}};
12
-
13
- export { o as AbstractFileReporter, m as JsonFileReporter, l as JsonReporter };
14
- //# sourceMappingURL=out.js.map
15
- //# sourceMappingURL=reporter.server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/util/rotating-file-stream.ts","../src/util/safe-stream-handler.ts","../src/reporter/file/abstract-file-reporter.ts","../src/reporter/file/json-file-reporter.ts","../src/reporter/json/json.server.ts"],"names":["createRfsStream","SafeStreamHandler","stream","name","message","arguments_","error","RotatingFileStream","filePath","writeImmediately","options","fileStream","AbstractFileReporter","rfsOptions","meta","JsonFileReporter","#stringify","function_","type","rest","process","JsonReporter","AbstractJsonReporter","#stdout","#stderr","stdout","stderr","logLevel","writeStream"],"mappings":"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","sourcesContent":["import type { Writable } from \"node:stream\";\n\nimport type { Options as RfsOptions } from \"rotating-file-stream\";\nimport { createStream as createRfsStream } from \"rotating-file-stream\";\n\nimport { SafeStreamHandler } from \"./safe-stream-handler\";\n\n/**\n * A wrapper for the `rfs` module that will optionally write to disk immediately\n * by creating and closing a new stream on each write.\n */\nexport class RotatingFileStream {\n private readonly _filePath: string;\n\n private readonly _immediate: boolean;\n\n private readonly _stream: Writable | undefined;\n\n private readonly _options: RfsOptions;\n\n public constructor(filePath: string, writeImmediately = false, options: RfsOptions = {}) {\n this._filePath = filePath;\n this._immediate = writeImmediately;\n this._options = options;\n\n if (!this._immediate) {\n this._stream = createRfsStream(this._filePath, options);\n }\n }\n\n /**\n * Writes `message` to the instance's internal _stream\n * @param message Message to write\n */\n public write(message: string): void {\n let fileStream = this._stream;\n\n if (this._immediate) {\n fileStream = createRfsStream(this._filePath, this._options);\n }\n\n const stream = new SafeStreamHandler(fileStream as Writable, this._filePath);\n\n stream.write(message);\n\n if (this._immediate) {\n stream.end();\n }\n }\n\n /**\n * Ends the instance's internal _stream\n *\n * When `immediate` is not `true`, a call to `write` after calling this method\n * will throw an error.\n */\n public end(): void {\n if (this._stream !== undefined) {\n this._stream.end();\n }\n }\n}\n","import type { Writable } from \"node:stream\";\n\n/**\n * A handler for writable streams that only writes if the stream has finished\n * processing or draining\n */\nexport class SafeStreamHandler {\n public _ready = true;\n\n protected _stream: Writable;\n\n protected _name: string;\n\n public constructor(stream: Writable, name: string) {\n this._stream = stream;\n this._name = name;\n }\n\n /**\n * Writes `message` to the instance's internal stream\n * @param message Message to write\n */\n public write(message: string): void {\n this.writeStream(message);\n }\n\n /**\n * Calls `end` on this instance's internal stream\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public end(...arguments_: any[]): void {\n this._stream.end(...arguments_);\n }\n\n protected writeStream(message: string): void {\n if (!this._ready) {\n // eslint-disable-next-line no-console\n console.warn(\"Stream busy: \" + this._name + '. Write will be dropped: \"' + message + '\"');\n return;\n }\n this._ready = false;\n\n this._stream.on(\"error\", (error) => {\n throw error;\n });\n this._stream.on(\"drain\", () => {\n this._ready = true;\n });\n this._stream.on(\"finish\", () => {\n this._ready = true;\n });\n this._ready = this._stream.write(message, () => {});\n }\n}\n","import type { Options as RfsOptions } from \"rotating-file-stream\";\n\nimport type { ReadonlyMeta, Reporter } from \"../../types\";\nimport { RotatingFileStream } from \"../../util/rotating-file-stream\";\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport type Options = RfsOptions & {\n filePath: string;\n writeImmediately?: boolean;\n};\n\nexport abstract class AbstractFileReporter<L extends string = never> implements Reporter<L> {\n protected _stream: RotatingFileStream;\n\n protected constructor(options: Options) {\n const { filePath, writeImmediately = false, ...rfsOptions } = options;\n\n this._stream = new RotatingFileStream(filePath, writeImmediately, rfsOptions);\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n this._stream.write(this._formatMessage(meta as ReadonlyMeta<L>) + \"\\n\");\n }\n\n protected abstract _formatMessage(data: ReadonlyMeta<L>): string;\n}\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { Meta } from \"../../types\";\nimport type { Options as FileReporterOptions } from \"./abstract-file-reporter\";\nimport { AbstractFileReporter } from \"./abstract-file-reporter\";\n\nexport class JsonFileReporter<L extends string = never> extends AbstractFileReporter<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #stringify: typeof stringify | undefined;\n\n public constructor(options: FileReporterOptions) {\n super({\n compress: \"gzip\", // compress rotated files\n interval: \"1d\", // rotate daily\n size: \"10M\", // rotate every 10 MegaBytes written\n ...options,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n protected _formatMessage(meta: Meta<L>): string {\n const { type, ...rest } = meta;\n\n if (rest.label) {\n rest.label = rest.label.trim();\n }\n\n if (rest.file) {\n // This is a hack to make the file property a string\n (rest as unknown as Omit<Meta<L>, \"file\"> & { file: string }).file =\n rest.file.name + \":\" + rest.file.line + (rest.file.column ? \":\" + rest.file.column : \"\");\n }\n\n return (this.#stringify as typeof stringify)(rest) as string;\n }\n}\n","import process from \"node:process\";\n\nimport type { ExtendedRfc5424LogLevels, LiteralUnion, StreamAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\nimport { AbstractJsonReporter } from \"./abstract-json-reporter\";\n\nexport class JsonReporter<L extends string = never> extends AbstractJsonReporter<L> implements StreamAwareReporter<L> {\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n public constructor() {\n super();\n\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStdout(stdout: NodeJS.WriteStream) {\n this.#stdout = stdout;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStderr(stderr: NodeJS.WriteStream) {\n this.#stderr = stderr;\n }\n\n protected override _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void {\n const stream = [\"error\", \"warn\"].includes(logLevel as string) ? this.#stderr : this.#stdout;\n\n writeStream(message + \"\\n\", stream);\n }\n}\n"]}