@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 +0,0 @@
1
- {"version":3,"sources":["../src/reporter/pretty/pretty.server.ts","../../../node_modules/.pnpm/ansi-regex@6.0.1/node_modules/ansi-regex/index.js","../../../node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../../../node_modules/.pnpm/string-length@6.0.0/node_modules/string-length/index.js","../../../node_modules/.pnpm/terminal-size@4.0.0/node_modules/terminal-size/index.js","../../../node_modules/.pnpm/get-east-asian-width@1.2.0/node_modules/get-east-asian-width/lookup.js","../../../node_modules/.pnpm/get-east-asian-width@1.2.0/node_modules/get-east-asian-width/index.js","../../../node_modules/.pnpm/emoji-regex@10.3.0/node_modules/emoji-regex/index.mjs","../../../node_modules/.pnpm/string-width@7.1.0/node_modules/string-width/index.js","../../../node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js","../../../node_modules/.pnpm/wrap-ansi@9.0.0/node_modules/wrap-ansi/index.js","../src/util/write-stream.ts"],"names":["colorize","bgGrey","bold","cyan","grey","red","underline","white","ansiRegex","onlyFirst","pattern","regex","stripAnsi","string","segmenter","stringLength","countAnsiEscapeCodes","length","_","process","execFileSync","fs","tty","defaultColumns","defaultRows","exec","command","arguments_","shell","env","create","columns","rows","createIfNotDefault","maybeColumns","maybeRows","terminalSize","stdout","stderr","fallback","tput","devTty","resize","flags","size","isAmbiguous","x","isFullWidth","isWide","validate","codePoint","eastAsianWidth","ambiguousAsWide","emoji_regex_default","stringWidth","options","ambiguousIsNarrow","width","eastAsianWidthOptions","character","wrapAnsi16","offset","code","wrapAnsi256","wrapAnsi16m","green","blue","styles","modifierNames","foregroundColorNames","backgroundColorNames","colorNames","assembleStyles","codes","groupName","group","styleName","style","hex","matches","colorString","integer","remainder","value","result","ansiStyles","ansi_styles_default","ESCAPES","END_CODE","ANSI_ESCAPE_BELL","ANSI_CSI","ANSI_OSC","ANSI_SGR_TERMINATOR","ANSI_ESCAPE_LINK","wrapAnsiCode","wrapAnsiHyperlink","url","wordLengths","wrapWord","word","characters","isInsideEscape","isInsideLinkEscape","visible","index","characterLength","stringVisibleTrimSpacesRight","words","last","returnValue","escapeCode","escapeUrl","lengths","rowLength","remainingColumns","breaksStartingThisLine","row","preString","pre","preStringIndex","groups","wrapAnsi","line","writeStream","data","stream","PrettyReporter","AbstractPrettyReporter","#stdout","#stderr","#interactiveManager","#interactive","manager","interactive","meta","badge","context","date","error","file","label","message","prefix","repeated","scope","suffix","traceError","type","color","colorized","groupSpaces","items","longestBadge","getLongestBadge","longestLabel","getLongestLabel","titleSize","fileMessage","fileMessageSize","formattedMessage","hasError","newValue","logLevel","streamType","hideName","name","stack","lines","m","formattedLabel"],"mappings":"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K,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,OACNA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,IAAM,OACNA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,SACrBA,GAAK,SAAYA,GAAK,OAC3B,CAEA,SAASC,GAAYD,EAAG,CACvB,OAAOA,IAAM,OACTA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,KACzB,CAEA,SAASE,GAAOF,EAAG,CAClB,OAAOA,GAAK,MAAUA,GAAK,MACvBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,GAAK,MAAUA,GAAK,MACpBA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,GAAK,OAAUA,GAAK,OACpBA,IAAM,OACNA,GAAK,OAAUA,GAAK,OACpBA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,IAAM,OACNA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAWA,GAAK,OACrBA,IAAM,OACNA,IAAM,OACNA,GAAK,OAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,IAAM,QACNA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,IAAM,QACNA,IAAM,QACNA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,IAAM,QACNA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,QACrBA,GAAK,QAAWA,GAAK,MAC1B,CCvWA,SAASG,GAASC,EAAW,CAC5B,GAAI,CAAC,OAAO,cAAcA,CAAS,EAClC,MAAM,IAAI,UAAU,gCAAgC,OAAOA,CAAS,KAAK,CAE3E,CAQO,SAASC,GAAeD,EAAW,CAAC,gBAAAE,EAAkB,EAAK,EAAI,CAAC,EAAG,CAGzE,OAFAH,GAASC,CAAS,EAGjBH,GAAYG,CAAS,GAClBF,GAAOE,CAAS,GACfE,GAAmBP,EAAYK,CAAS,EAErC,EAGD,CACR,CC1BA,IAAOG,GAAQ,IAEP,whZCER,IAAMvC,GAAY,IAAI,KAAK,UAEZ,SAARwC,EAA6BzC,EAAQ0C,EAAU,CAAC,EAAG,CACzD,GAAI,OAAO1C,GAAW,UAAYA,EAAO,SAAW,EACnD,MAAO,GAGR,GAAM,CACL,kBAAA2C,EAAoB,GACpB,qBAAAxC,EAAuB,EACxB,EAAIuC,EAMJ,GAJKvC,IACJH,EAASD,EAAUC,CAAM,GAGtBA,EAAO,SAAW,EACrB,MAAO,GAGR,IAAI4C,EAAQ,EACNC,EAAwB,CAAC,gBAAiB,CAACF,CAAiB,EAElE,OAAW,CAAC,QAASG,CAAS,IAAK7C,GAAU,QAAQD,CAAM,EAAG,CAC7D,IAAMqC,EAAYS,EAAU,YAAY,CAAC,EAGzC,GAAI,EAAAT,GAAa,IAASA,GAAa,KAAQA,GAAa,MAKxD,EAAAA,GAAa,KAAUA,GAAa,KAIxC,IAAIG,GAAW,EAAE,KAAKM,CAAS,EAAG,CACjCF,GAAS,EACT,QACD,CAEAA,GAASN,GAAeD,EAAWQ,CAAqB,EACzD,CAEA,OAAOD,CACR,CC/CA,IAAMG,GAAa,CAACC,EAAS,IAAMC,GAAQ,QAAUA,EAAOD,CAAM,IAE5DE,GAAc,CAACF,EAAS,IAAMC,GAAQ,QAAU,GAAKD,CAAM,MAAMC,CAAI,IAErEE,GAAc,CAACH,EAAS,IAAM,CAACxD,EAAK4D,EAAOC,IAAS,QAAU,GAAKL,CAAM,MAAMxD,CAAG,IAAI4D,CAAK,IAAIC,CAAI,IAEnGC,EAAS,CACd,SAAU,CACT,MAAO,CAAC,EAAG,CAAC,EAEZ,KAAM,CAAC,EAAG,EAAE,EACZ,IAAK,CAAC,EAAG,EAAE,EACX,OAAQ,CAAC,EAAG,EAAE,EACd,UAAW,CAAC,EAAG,EAAE,EACjB,SAAU,CAAC,GAAI,EAAE,EACjB,QAAS,CAAC,EAAG,EAAE,EACf,OAAQ,CAAC,EAAG,EAAE,EACd,cAAe,CAAC,EAAG,EAAE,CACtB,EACA,MAAO,CACN,MAAO,CAAC,GAAI,EAAE,EACd,IAAK,CAAC,GAAI,EAAE,EACZ,MAAO,CAAC,GAAI,EAAE,EACd,OAAQ,CAAC,GAAI,EAAE,EACf,KAAM,CAAC,GAAI,EAAE,EACb,QAAS,CAAC,GAAI,EAAE,EAChB,KAAM,CAAC,GAAI,EAAE,EACb,MAAO,CAAC,GAAI,EAAE,EAGd,YAAa,CAAC,GAAI,EAAE,EACpB,KAAM,CAAC,GAAI,EAAE,EACb,KAAM,CAAC,GAAI,EAAE,EACb,UAAW,CAAC,GAAI,EAAE,EAClB,YAAa,CAAC,GAAI,EAAE,EACpB,aAAc,CAAC,GAAI,EAAE,EACrB,WAAY,CAAC,GAAI,EAAE,EACnB,cAAe,CAAC,GAAI,EAAE,EACtB,WAAY,CAAC,GAAI,EAAE,EACnB,YAAa,CAAC,GAAI,EAAE,CACrB,EACA,QAAS,CACR,QAAS,CAAC,GAAI,EAAE,EAChB,MAAO,CAAC,GAAI,EAAE,EACd,QAAS,CAAC,GAAI,EAAE,EAChB,SAAU,CAAC,GAAI,EAAE,EACjB,OAAQ,CAAC,GAAI,EAAE,EACf,UAAW,CAAC,GAAI,EAAE,EAClB,OAAQ,CAAC,GAAI,EAAE,EACf,QAAS,CAAC,GAAI,EAAE,EAGhB,cAAe,CAAC,IAAK,EAAE,EACvB,OAAQ,CAAC,IAAK,EAAE,EAChB,OAAQ,CAAC,IAAK,EAAE,EAChB,YAAa,CAAC,IAAK,EAAE,EACrB,cAAe,CAAC,IAAK,EAAE,EACvB,eAAgB,CAAC,IAAK,EAAE,EACxB,aAAc,CAAC,IAAK,EAAE,EACtB,gBAAiB,CAAC,IAAK,EAAE,EACzB,aAAc,CAAC,IAAK,EAAE,EACtB,cAAe,CAAC,IAAK,EAAE,CACxB,CACD,EAEaC,GAAgB,OAAO,KAAKD,EAAO,QAAQ,EAC3CE,GAAuB,OAAO,KAAKF,EAAO,KAAK,EAC/CG,GAAuB,OAAO,KAAKH,EAAO,OAAO,EACjDI,GAAa,CAAC,GAAGF,GAAsB,GAAGC,EAAoB,EAE3E,SAASE,IAAiB,CACzB,IAAMC,EAAQ,IAAI,IAElB,OAAW,CAACC,EAAWC,CAAK,IAAK,OAAO,QAAQR,CAAM,EAAG,CACxD,OAAW,CAACS,EAAWC,CAAK,IAAK,OAAO,QAAQF,CAAK,EACpDR,EAAOS,CAAS,EAAI,CACnB,KAAM,QAAUC,EAAM,CAAC,CAAC,IACxB,MAAO,QAAUA,EAAM,CAAC,CAAC,GAC1B,EAEAF,EAAMC,CAAS,EAAIT,EAAOS,CAAS,EAEnCH,EAAM,IAAII,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAG7B,OAAO,eAAeV,EAAQO,EAAW,CACxC,MAAOC,EACP,WAAY,EACb,CAAC,CACF,CAEA,cAAO,eAAeR,EAAQ,QAAS,CACtC,MAAOM,EACP,WAAY,EACb,CAAC,EAEDN,EAAO,MAAM,MAAQ,WACrBA,EAAO,QAAQ,MAAQ,WAEvBA,EAAO,MAAM,KAAOP,GAAW,EAC/BO,EAAO,MAAM,QAAUJ,GAAY,EACnCI,EAAO,MAAM,QAAUH,GAAY,EACnCG,EAAO,QAAQ,KAAOP,GAAW,EAAsB,EACvDO,EAAO,QAAQ,QAAUJ,GAAY,EAAsB,EAC3DI,EAAO,QAAQ,QAAUH,GAAY,EAAsB,EAG3D,OAAO,iBAAiBG,EAAQ,CAC/B,aAAc,CACb,MAAO,CAAC9D,EAAK4D,EAAOC,IAGf7D,IAAQ4D,GAASA,IAAUC,EAC1B7D,EAAM,EACF,GAGJA,EAAM,IACF,IAGD,KAAK,OAAQA,EAAM,GAAK,IAAO,EAAE,EAAI,IAGtC,GACH,GAAK,KAAK,MAAMA,EAAM,IAAM,CAAC,EAC7B,EAAI,KAAK,MAAM4D,EAAQ,IAAM,CAAC,EAC/B,KAAK,MAAMC,EAAO,IAAM,CAAC,EAE7B,WAAY,EACb,EACA,SAAU,CACT,MAAOY,GAAO,CACb,IAAMC,EAAU,yBAAyB,KAAKD,EAAI,SAAS,EAAE,CAAC,EAC9D,GAAI,CAACC,EACJ,MAAO,CAAC,EAAG,EAAG,CAAC,EAGhB,GAAI,CAACC,CAAW,EAAID,EAEhBC,EAAY,SAAW,IAC1BA,EAAc,CAAC,GAAGA,CAAW,EAAE,IAAIrB,GAAaA,EAAYA,CAAS,EAAE,KAAK,EAAE,GAG/E,IAAMsB,EAAU,OAAO,SAASD,EAAa,EAAE,EAE/C,MAAO,CAELC,GAAW,GAAM,IACjBA,GAAW,EAAK,IACjBA,EAAU,GAEX,CACD,EACA,WAAY,EACb,EACA,aAAc,CACb,MAAOH,GAAOX,EAAO,aAAa,GAAGA,EAAO,SAASW,CAAG,CAAC,EACzD,WAAY,EACb,EACA,cAAe,CACd,MAAOhB,GAAQ,CACd,GAAIA,EAAO,EACV,MAAO,IAAKA,EAGb,GAAIA,EAAO,GACV,MAAO,KAAMA,EAAO,GAGrB,IAAIzD,EACA4D,EACAC,EAEJ,GAAIJ,GAAQ,IACXzD,IAASyD,EAAO,KAAO,GAAM,GAAK,IAClCG,EAAQ5D,EACR6D,EAAO7D,MACD,CACNyD,GAAQ,GAER,IAAMoB,EAAYpB,EAAO,GAEzBzD,EAAM,KAAK,MAAMyD,EAAO,EAAE,EAAI,EAC9BG,EAAQ,KAAK,MAAMiB,EAAY,CAAC,EAAI,EACpChB,EAAQgB,EAAY,EAAK,CAC1B,CAEA,IAAMC,EAAQ,KAAK,IAAI9E,EAAK4D,EAAOC,CAAI,EAAI,EAE3C,GAAIiB,IAAU,EACb,MAAO,IAIR,IAAIC,EAAS,IAAO,KAAK,MAAMlB,CAAI,GAAK,EAAM,KAAK,MAAMD,CAAK,GAAK,EAAK,KAAK,MAAM5D,CAAG,GAEtF,OAAI8E,IAAU,IACbC,GAAU,IAGJA,CACR,EACA,WAAY,EACb,EACA,UAAW,CACV,MAAO,CAAC/E,EAAK4D,EAAOC,IAASC,EAAO,cAAcA,EAAO,aAAa9D,EAAK4D,EAAOC,CAAI,CAAC,EACvF,WAAY,EACb,EACA,UAAW,CACV,MAAOY,GAAOX,EAAO,cAAcA,EAAO,aAAaW,CAAG,CAAC,EAC3D,WAAY,EACb,CACD,CAAC,EAEMX,CACR,CAEA,IAAMkB,GAAab,GAAe,EAE3Bc,GAAQD,GC1Nf,IAAME,EAAU,IAAI,IAAI,CACvB,OACA,MACD,CAAC,EAEKC,GAAW,GACXC,EAAmB,OACnBC,GAAW,IACXC,GAAW,IACXC,GAAsB,IACtBC,EAAmB,GAAGF,EAAQ,MAE9BG,GAAehC,GAAQ,GAAGyB,EAAQ,OAAO,EAAE,KAAK,EAAE,KAAK,GAAGG,EAAQ,GAAG5B,CAAI,GAAG8B,EAAmB,GAC/FG,GAAoBC,GAAO,GAAGT,EAAQ,OAAO,EAAE,KAAK,EAAE,KAAK,GAAGM,CAAgB,GAAGG,CAAG,GAAGP,CAAgB,GAIvGQ,GAAcpF,GAAUA,EAAO,MAAM,GAAG,EAAE,IAAI8C,GAAaL,EAAYK,CAAS,CAAC,EAIjFuC,EAAW,CAAClE,EAAMmE,EAAMpE,IAAY,CACzC,IAAMqE,EAAa,CAAC,GAAGD,CAAI,EAEvBE,EAAiB,GACjBC,EAAqB,GACrBC,EAAUjD,EAAY1C,EAAUoB,EAAK,GAAG,EAAE,CAAC,CAAC,EAEhD,OAAW,CAACwE,EAAO7C,CAAS,IAAKyC,EAAW,QAAQ,EAAG,CACtD,IAAMK,EAAkBnD,EAAYK,CAAS,EAgB7C,GAdI4C,EAAUE,GAAmB1E,EAChCC,EAAKA,EAAK,OAAS,CAAC,GAAK2B,GAEzB3B,EAAK,KAAK2B,CAAS,EACnB4C,EAAU,GAGPhB,EAAQ,IAAI5B,CAAS,IACxB0C,EAAiB,GAGjBC,EADgCF,EAAW,MAAMI,EAAQ,EAAGA,EAAQ,EAAIX,EAAiB,MAAM,EAAE,KAAK,EAAE,IACvDA,GAG9CQ,EAAgB,CACfC,EACC3C,IAAc8B,IACjBY,EAAiB,GACjBC,EAAqB,IAEZ3C,IAAciC,KACxBS,EAAiB,IAGlB,QACD,CAEAE,GAAWE,EAEPF,IAAYxE,GAAWyE,EAAQJ,EAAW,OAAS,IACtDpE,EAAK,KAAK,EAAE,EACZuE,EAAU,EAEZ,CAII,CAACA,GAAWvE,EAAK,GAAG,EAAE,EAAE,OAAS,GAAKA,EAAK,OAAS,IACvDA,EAAKA,EAAK,OAAS,CAAC,GAAKA,EAAK,IAAI,EAEpC,EAGM0E,GAA+B7F,GAAU,CAC9C,IAAM8F,EAAQ9F,EAAO,MAAM,GAAG,EAC1B+F,EAAOD,EAAM,OAEjB,KAAOC,EAAO,GACT,EAAAtD,EAAYqD,EAAMC,EAAO,CAAC,CAAC,EAAI,IAInCA,IAGD,OAAIA,IAASD,EAAM,OACX9F,EAGD8F,EAAM,MAAM,EAAGC,CAAI,EAAE,KAAK,GAAG,EAAID,EAAM,MAAMC,CAAI,EAAE,KAAK,EAAE,CAClE,EAOMnF,GAAO,CAACZ,EAAQkB,EAASwB,EAAU,CAAC,IAAM,CAC/C,GAAIA,EAAQ,OAAS,IAAS1C,EAAO,KAAK,IAAM,GAC/C,MAAO,GAGR,IAAIgG,EAAc,GACdC,EACAC,EAEEC,EAAUf,GAAYpF,CAAM,EAC9BmB,EAAO,CAAC,EAAE,EAEd,OAAW,CAACwE,EAAOL,CAAI,IAAKtF,EAAO,MAAM,GAAG,EAAE,QAAQ,EAAG,CACpD0C,EAAQ,OAAS,KACpBvB,EAAKA,EAAK,OAAS,CAAC,EAAIA,EAAK,GAAG,EAAE,EAAE,UAAU,GAG/C,IAAIiF,EAAY3D,EAAYtB,EAAK,GAAG,EAAE,CAAC,EAgBvC,GAdIwE,IAAU,IACTS,GAAalF,IAAYwB,EAAQ,WAAa,IAASA,EAAQ,OAAS,MAE3EvB,EAAK,KAAK,EAAE,EACZiF,EAAY,IAGTA,EAAY,GAAK1D,EAAQ,OAAS,MACrCvB,EAAKA,EAAK,OAAS,CAAC,GAAK,IACzBiF,MAKE1D,EAAQ,MAAQyD,EAAQR,CAAK,EAAIzE,EAAS,CAC7C,IAAMmF,EAAoBnF,EAAUkF,EAC9BE,EAAyB,EAAI,KAAK,OAAOH,EAAQR,CAAK,EAAIU,EAAmB,GAAKnF,CAAO,EAChE,KAAK,OAAOiF,EAAQR,CAAK,EAAI,GAAKzE,CAAO,EAC3CoF,GAC5BnF,EAAK,KAAK,EAAE,EAGbkE,EAASlE,EAAMmE,EAAMpE,CAAO,EAC5B,QACD,CAEA,GAAIkF,EAAYD,EAAQR,CAAK,EAAIzE,GAAWkF,EAAY,GAAKD,EAAQR,CAAK,EAAI,EAAG,CAChF,GAAIjD,EAAQ,WAAa,IAAS0D,EAAYlF,EAAS,CACtDmE,EAASlE,EAAMmE,EAAMpE,CAAO,EAC5B,QACD,CAEAC,EAAK,KAAK,EAAE,CACb,CAEA,GAAIiF,EAAYD,EAAQR,CAAK,EAAIzE,GAAWwB,EAAQ,WAAa,GAAO,CACvE2C,EAASlE,EAAMmE,EAAMpE,CAAO,EAC5B,QACD,CAEAC,EAAKA,EAAK,OAAS,CAAC,GAAKmE,CAC1B,CAEI5C,EAAQ,OAAS,KACpBvB,EAAOA,EAAK,IAAIoF,GAAOV,GAA6BU,CAAG,CAAC,GAGzD,IAAMC,EAAYrF,EAAK,KAAK;AAAA,CAAI,EAC1BsF,EAAM,CAAC,GAAGD,CAAS,EAGrBE,EAAiB,EAErB,OAAW,CAACf,EAAO7C,CAAS,IAAK2D,EAAI,QAAQ,EAAG,CAG/C,GAFAT,GAAelD,EAEX4B,EAAQ,IAAI5B,CAAS,EAAG,CAC3B,GAAM,CAAC,OAAA6D,CAAM,EAAI,IAAI,OAAO,QAAQ9B,EAAQ,oBAAoBG,CAAgB,aAAaJ,CAAgB,GAAG,EAAE,KAAK4B,EAAU,MAAME,CAAc,CAAC,GAAK,CAAC,OAAQ,CAAC,CAAC,EACtK,GAAIC,EAAO,OAAS,OAAW,CAC9B,IAAM1D,EAAO,OAAO,WAAW0D,EAAO,IAAI,EAC1CV,EAAahD,IAAS0B,GAAW,OAAY1B,CAC9C,MAAW0D,EAAO,MAAQ,SACzBT,EAAYS,EAAO,IAAI,SAAW,EAAI,OAAYA,EAAO,IAE3D,CAEA,IAAM1D,EAAOwB,GAAW,MAAM,IAAI,OAAOwB,CAAU,CAAC,EAEhDQ,EAAId,EAAQ,CAAC,IAAM;AAAA,GAClBO,IACHF,GAAed,GAAkB,EAAE,GAGhCe,GAAchD,IACjB+C,GAAef,GAAahC,CAAI,IAEvBH,IAAc;AAAA,IACpBmD,GAAchD,IACjB+C,GAAef,GAAagB,CAAU,GAGnCC,IACHF,GAAed,GAAkBgB,CAAS,IAI5CQ,GAAkB5D,EAAU,MAC7B,CAEA,OAAOkD,CACR,EAGe,SAARY,EAA0B5G,EAAQkB,EAASwB,EAAS,CAC1D,OAAO,OAAO1C,CAAM,EAClB,UAAU,EACV,WAAW;AAAA,EAAQ;AAAA,CAAI,EACvB,MAAM;AAAA,CAAI,EACV,IAAI6G,GAAQjG,GAAKiG,EAAM3F,EAASwB,CAAO,CAAC,EACxC,KAAK;AAAA,CAAI,CACZ,CC7NO,IAAMoE,GAAc,CAACC,EAAcC,KAEvBA,EAAe,SAAWA,EAAO,OAEnC,KAAKA,EAAQD,CAAI,EXa3B,IAAME,GAAN,cAAiFC,CAAqE,CACzJC,GAEAC,GAEAC,GAEAC,GAAe,GAER,YAAY5E,EAAuC,CAAC,EAAG,CAC1D,MAAM,CACF,UAAW,CACP,MAAO,GACP,GAAGA,EAAQ,SACf,EACA,GAAGA,CACP,CAAC,EAED,KAAKyE,GAAU,QAAQ,OACvB,KAAKC,GAAU,QAAQ,MAC3B,CAEO,UAAU5F,EAAkC,CAC/C,KAAK2F,GAAU3F,CACnB,CAEO,UAAUC,EAAkC,CAC/C,KAAK2F,GAAU3F,CACnB,CAEO,sBAAsB8F,EAAoC,CAC7D,KAAKF,GAAsBE,CAC/B,CAEO,iBAAiBC,EAA4B,CAChD,KAAKF,GAAeE,CACxB,CAEO,IAAIC,EAA6B,CACpC,KAAK,KAAK,KAAK,eAAeA,CAAuB,EAAGA,EAAK,KAAK,KAAK,CAC3E,CAGU,eAAeV,EAA+B,CACpD,GAAM,CAAE,QAAA7F,CAAQ,EAAIK,EAAa,EAE7BQ,EAAOb,EAEP,OAAO,KAAK,QAAQ,eAAkB,WACtCa,EAAO,KAAK,QAAQ,eAGxB,GAAM,CAAE,MAAA2F,EAAO,QAAAC,EAAS,KAAAC,EAAM,MAAAC,EAAO,KAAAC,EAAM,OAAAnB,EAAQ,MAAAoB,EAAO,QAAAC,EAAS,OAAAC,EAAQ,SAAAC,EAAU,MAAAC,EAAO,OAAAC,EAAQ,WAAAC,EAAY,KAAAC,EAAK,EAAIvB,EAEnH,CAAE,MAAAwB,CAAM,EAAI,KAAK,aAAaD,GAAK,IAAsC,EAEzEE,EAAYD,EAAQpJ,GAASoJ,CAAK,EAAI7I,GAEtC+I,EAAsB9B,EAAO,IAAI,IAAM,MAAM,EAAE,KAAK,EAAE,EACtD+B,EAAkB,CAAC,EAUzB,GARI/B,EAAO,OAAS,GAChB+B,EAAM,KAAMD,EAAclJ,EAAK,IAAMoH,EAAO,GAAG,EAAE,EAAI,IAAI,CAAY,EAGrEiB,GACAc,EAAM,KAAKnJ,EAAK,KAAK,QAAQ,cAAc,IAAI,KAAKqI,CAAI,CAAC,CAAC,EAAI,GAAG,EAGjEF,EACAgB,EAAM,KAAKF,EAAUd,CAAK,CAAW,MAClC,CACH,IAAMiB,EAAuBC,EAAsB,KAAK,YAAY,EAEhED,EAAa,OAAS,GACtBD,EAAM,KAAKnJ,EAAK,IAAI,OAAOoJ,EAAa,MAAM,CAAC,EAAI,GAAG,CAE9D,CAEA,IAAME,EAAuBC,EAAsB,KAAK,YAAY,EAEhEf,EACAW,EAAM,KAAKF,EAAU,KAAK,aAAaT,CAAe,CAAC,EAAI,IAAKxI,EAAK,IAAI,OAAOsJ,EAAa,OAAS3I,EAAa6H,CAAe,CAAC,CAAC,CAAC,EAGrIW,EAAM,KAAKnJ,EAAK,IAAI,OAAOsJ,EAAa,OAAS,CAAC,CAAC,CAAC,EAGpDX,GACAQ,EAAM,KAAKtJ,GAAO,MAAM,IAAM8I,EAAW,IAAI,EAAI,GAAG,EAGpD,MAAM,QAAQC,CAAK,GAAKA,EAAM,OAAS,GACvCO,EAAM,KAAKnJ,EAAK,KAAO4I,EAAM,KAAK,KAAK,EAAI,IAAI,CAAC,EAGhDF,GACAS,EAAM,KACFnJ,GACK,MAAM,QAAQ4I,CAAK,GAAKA,EAAM,OAAS,EAAI,KAAO,KAC/C,KACC,KAAK,QAAQ,UAAU,OAAS1I,EAAUwI,CAAgB,EAAIA,GAC/D,IACR,CACJ,EAGJ,IAAMc,EAAY7I,EAAawI,EAAM,KAAK,GAAG,CAAC,EAE9C,GAAIZ,EAAM,CACN,IAAMkB,EAAclB,EAAK,MAAQA,EAAK,KAAO,IAAMA,EAAK,KAAO,IACzDmB,EAAkB/I,EAAa8I,CAAW,EAE5CC,EAAkBF,EAAY,EAAIhH,EAClC2G,EAAM,KAAKnJ,EAAK,IAAMyJ,CAAW,CAAC,EAElCN,EAAM,KAAKnJ,EAAK,IAAI,OAAOwC,EAAOgH,EAAYE,EAAkB,CAAC,EAAI,IAAMD,CAAW,CAAC,CAE/F,MACIN,EAAM,KAAKnJ,EAAK,IAAI,OAAOwC,EAAOgH,EAAY,CAAC,CAAC,CAAC,EAOrD,GAJIL,EAAM,OAAS,GACfA,EAAM,KAAK;AAAA;AAAA,CAAM,EAGjBV,EAAS,CACT,IAAMkB,EAAuC,OAAOlB,GAAY,SAAWA,EAAW,KAAK,WAAgCA,CAAO,EAWlI,GATAU,EAAM,KACFD,EACI7B,EAASsC,GAAoB,YAAanH,EAAO,EAAG,CAChD,KAAM,GACN,KAAM,GACN,SAAU,EACd,CAAC,CACT,EAEI4F,EAAS,CACT,IAAIwB,EAAW,GAEfT,EAAM,KACF,GAAGf,EAAQ,IAAKrD,GAAU,CACtB,GAAIA,aAAiB,MACjB,OAAA6E,EAAW,GACJ;AAAA;AAAA,EAAS,KAAK,aAAa7E,EAAOvC,EAAM0G,CAAW,EAG9D,GAAI,OAAOnE,GAAU,SACjB,MAAO,IAAO,KAAK,WAAgCA,CAAK,EAG5D,IAAM8E,IAAYD,EAAW;AAAA;AAAA,EAAS,KAAO7E,EAE7C,OAAA6E,EAAW,GAEJC,EACX,CAAC,CACL,CACJ,CACJ,CAEA,OAAIvB,GACAa,EAAM,KAAK,KAAK,aAAab,EAAgB9F,EAAM0G,CAAW,CAAC,EAG/DJ,GACAK,EAAM,KAAK,KAAK,aAAaL,EAAqBtG,EAAM0G,EAAa,EAAI,CAAC,EAG1EL,GACAM,EAAM,KAAK;AAAA,EAAMD,EAAclJ,EAAK,KAAK,QAAQ,UAAU,OAASE,EAAU2I,CAAgB,EAAIA,CAAM,CAAC,EAGtGM,EAAM,KAAK,EAAE,EAAI;AAAA,CAC5B,CAEU,KAAKV,EAAiBqB,EAA2D,CACvF,IAAMC,EAAa,CAAC,QAAS,QAAS,MAAM,EAAE,SAASD,CAAkB,EAAI,SAAW,SAClFrC,EAASsC,IAAe,SAAW,KAAKlC,GAAU,KAAKD,GAEzD,KAAKG,IAAgB,KAAKD,KAAwB,QAAaL,EAAO,MACtE,KAAKK,GAAoB,OAAOiC,EAAYtB,EAAQ,MAAM;AAAA,CAAI,EAAG,CAAC,EAElElB,GAAYkB,EAAU;AAAA,EAAMhB,CAAM,CAE1C,CAGQ,aAAaa,EAAc9F,EAAc0G,EAAqBc,EAAW,GAAe,CAC5F,GAAM,CAAE,QAAAvB,EAAS,KAAAwB,EAAM,MAAAC,CAAM,EAAI5B,EAE3Ba,EAAkB,CAAC,EAWzB,GATAA,EAAM,KACF,GAAIa,EAAW,CAAC,EAAI,CAACd,EAAcjJ,GAAIgK,CAAI,EAAG,IAAI,EAClD5C,EAASoB,EAASjG,EAAO,EAAG,CACxB,KAAM,GACN,KAAM,GACN,SAAU,EACd,CAAC,CACL,EAEI0H,EAAO,CACP,IAAMC,EAAQD,EACT,MAAM;AAAA,CAAI,EACV,OAAO,CAAC,EACR,IAAK5C,GAAiB4B,EAAc5B,EAAK,KAAK,EAAE,QAAQ,UAAW,EAAE,CAAC,EACtE,OAAQA,GAAiB,CAACA,EAAK,SAAS,YAAY,CAAC,EAE1D6B,EAAM,KACF;AAAA,EACAgB,EACK,IAAK7C,GAAiB,KAAOA,EAAK,QAAQ,QAAU8C,GAAMpK,EAAKoK,CAAC,CAAC,EAAE,QAAQ,WAAY,CAACtJ,EAAGsJ,IAAM,IAAMrK,GAAKqK,CAAW,EAAI,GAAG,CAAC,EAC/H,KAAK;AAAA,CAAI,CAClB,CACJ,CAEA,OAAOjB,EAAM,KAAK,EAAE,CACxB,CAEQ,aAAaX,EAAuB,CACxC,IAAI6B,EAAiB,KAAK,QAAQ,UAAU,MAAQ7B,EAAM,YAAY,EAAIA,EAE1E,OAAA6B,EAAiB,KAAK,QAAQ,UAAU,MAAQnK,EAAUmK,CAAc,EAAIA,EAExE,KAAK,QAAQ,KAAK,QAClBA,EAAiBvK,GAAKuK,CAAc,GAGjCA,CACX,CACJ","sourcesContent":["import colorize, { bgGrey, bold, cyan, grey, red, underline, white } from \"@visulima/colorize\";\nimport type { stringify } from \"safe-stable-stringify\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport stringLength from \"string-length\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport terminalSize from \"terminal-size\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport wrapAnsi from \"wrap-ansi\";\n\nimport type { InteractiveManager } from \"../../interactive/interactive-manager\";\nimport type { ExtendedRfc5424LogLevels, InteractiveStreamReporter, LiteralUnion, ReadonlyMeta } from \"../../types\";\nimport { getLongestBadge } from \"../../util/get-longest-badge\";\nimport { getLongestLabel } from \"../../util/get-longest-label\";\nimport { writeStream } from \"../../util/write-stream\";\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> implements InteractiveStreamReporter<L> {\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n #interactiveManager: InteractiveManager | undefined;\n\n #interactive = false;\n\n public constructor(options: Partial<PrettyStyleOptions> = {}) {\n super({\n uppercase: {\n label: true,\n ...options.uppercase,\n },\n ...options,\n });\n\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n public setStdout(stdout: NodeJS.WriteStream): void {\n this.#stdout = stdout;\n }\n\n public setStderr(stderr: NodeJS.WriteStream): void {\n this.#stderr = stderr;\n }\n\n public setInteractiveManager(manager?: InteractiveManager): void {\n this.#interactiveManager = manager;\n }\n\n public setIsInteractive(interactive: boolean): void {\n this.#interactive = interactive;\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n this._log(this._formatMessage(meta as ReadonlyMeta<L>), meta.type.level);\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n protected _formatMessage(data: ReadonlyMeta<L>): string {\n const { columns } = terminalSize();\n\n let size = columns;\n\n if (typeof this._styles.messageLength === \"number\") {\n size = this._styles.messageLength;\n }\n\n const { badge, context, date, error, file, groups, label, message, prefix, repeated, scope, suffix, traceError, type } = data;\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 groupSpaces: string = groups.map(() => \" \").join(\"\");\n const items: string[] = [];\n\n if (groups.length > 0) {\n items.push((groupSpaces + grey(\"[\" + groups.at(-1) + \"] \")) as string);\n }\n\n if (date) {\n items.push(grey(this._styles.dateFormatter(new Date(date))) + \" \");\n }\n\n if (badge) {\n items.push(colorized(badge) as string);\n } else {\n const longestBadge: string = getLongestBadge<L, T>(this._loggerTypes);\n\n if (longestBadge.length > 0) {\n items.push(grey(\".\".repeat(longestBadge.length)) + \" \");\n }\n }\n\n const longestLabel: string = getLongestLabel<L, T>(this._loggerTypes);\n\n if (label) {\n items.push(colorized(this._formatLabel(label as string)) + \" \", grey(\".\".repeat(longestLabel.length - stringLength(label as string))));\n } else {\n // plus 2 for the space and the dot\n items.push(grey(\".\".repeat(longestLabel.length + 2)));\n }\n\n if (repeated) {\n items.push(bgGrey.white(\"[\" + repeated + \"x]\") + \" \");\n }\n\n if (Array.isArray(scope) && scope.length > 0) {\n items.push(grey(\" [\" + scope.join(\" > \") + \"] \"));\n }\n\n if (prefix) {\n items.push(\n grey(\n (Array.isArray(scope) && scope.length > 0 ? \". \" : \" \") +\n \"[\" +\n (this._styles.underline.prefix ? underline(prefix as string) : prefix) +\n \"] \",\n ),\n );\n }\n\n const titleSize = stringLength(items.join(\" \"));\n\n if (file) {\n const fileMessage = file.name + (file.line ? \":\" + file.line : \"\");\n const fileMessageSize = stringLength(fileMessage);\n\n if (fileMessageSize + titleSize + 2 > size) {\n items.push(grey(\" \" + fileMessage));\n } else {\n items.push(grey(\".\".repeat(size - titleSize - fileMessageSize - 2) + \" \" + fileMessage));\n }\n } else {\n items.push(grey(\".\".repeat(size - titleSize - 1)));\n }\n\n if (items.length > 0) {\n items.push(\"\\n\\n\");\n }\n\n if (message) {\n const formattedMessage: string | undefined = typeof message === \"string\" ? message : (this._stringify as typeof stringify)(message);\n\n items.push(\n groupSpaces +\n wrapAnsi(formattedMessage ?? \"undefined\", size - 3, {\n hard: true,\n trim: true,\n wordWrap: true,\n }),\n );\n\n if (context) {\n let hasError = false;\n\n items.push(\n ...context.map((value) => {\n if (value instanceof Error) {\n hasError = true;\n return \"\\n\\n\" + this._formatError(value, size, groupSpaces);\n }\n\n if (typeof value === \"object\") {\n return \" \" + (this._stringify as typeof stringify)(value);\n }\n\n const newValue = (hasError ? \"\\n\\n\" : \" \") + value;\n\n hasError = false;\n\n return newValue;\n }),\n );\n }\n }\n\n if (error) {\n items.push(this._formatError(error as Error, size, groupSpaces));\n }\n\n if (traceError) {\n items.push(this._formatError(traceError as Error, size, groupSpaces, true));\n }\n\n if (suffix) {\n items.push(\"\\n\", groupSpaces + grey(this._styles.underline.suffix ? underline(suffix as string) : suffix));\n }\n\n return items.join(\"\") + \"\\n\";\n }\n\n protected _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void {\n const streamType = [\"error\", \"trace\", \"warn\"].includes(logLevel as string) ? \"stderr\" : \"stdout\";\n const stream = streamType === \"stderr\" ? this.#stderr : this.#stdout;\n\n if (this.#interactive && this.#interactiveManager !== undefined && stream.isTTY) {\n this.#interactiveManager.update(streamType, message.split(\"\\n\"), 0);\n } else {\n writeStream(message + \"\\n\", stream);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n private _formatError(error: Error, size: number, groupSpaces: string, hideName = false): string {\n const { message, name, stack } = error;\n\n const items: string[] = [];\n\n items.push(\n ...(hideName ? [] : [groupSpaces + red(name), \": \"]),\n wrapAnsi(message, size - 3, {\n hard: true,\n trim: true,\n wordWrap: true,\n }),\n );\n\n if (stack) {\n const lines = stack\n .split(\"\\n\")\n .splice(1)\n .map((line: string) => groupSpaces + line.trim().replace(\"file://\", \"\"))\n .filter((line: string) => !line.includes(\"/pail/dist\"));\n\n items.push(\n \"\\n\",\n lines\n .map((line: string) => \" \" + line.replace(/^at +/, (m) => grey(m)).replace(/\\((.+)\\)/, (_, m) => \"(\" + cyan(m as string) + \")\"))\n .join(\"\\n\"),\n );\n }\n\n return items.join(\"\");\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","export default function ansiRegex({onlyFirst = false} = {}) {\n\tconst pattern = [\n\t '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","import stripAnsi from 'strip-ansi';\n\nconst segmenter = new Intl.Segmenter();\n\nexport default function stringLength(string, {countAnsiEscapeCodes = false} = {}) {\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\tlet length = 0;\n\n\tfor (const _ of segmenter.segment(string)) { // eslint-disable-line no-unused-vars\n\t\tlength++;\n\t}\n\n\treturn length;\n}\n","import process from 'node:process';\nimport {execFileSync} from 'node:child_process';\nimport fs from 'node:fs';\nimport tty from 'node:tty';\n\nconst defaultColumns = 80;\nconst defaultRows = 24;\n\nconst exec = (command, arguments_, {shell, env} = {}) =>\n\texecFileSync(command, arguments_, {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t\tshell,\n\t\tenv,\n\t}).trim();\n\nconst create = (columns, rows) => ({\n\tcolumns: Number.parseInt(columns, 10),\n\trows: Number.parseInt(rows, 10),\n});\n\nconst createIfNotDefault = (maybeColumns, maybeRows) => {\n\tconst {columns, rows} = create(maybeColumns, maybeRows);\n\n\tif (Number.isNaN(columns) || Number.isNaN(rows)) {\n\t\treturn;\n\t}\n\n\tif (columns === defaultColumns && rows === defaultRows) {\n\t\treturn;\n\t}\n\n\treturn {columns, rows};\n};\n\nexport default function terminalSize() {\n\tconst {env, stdout, stderr} = process;\n\n\tif (stdout?.columns && stdout?.rows) {\n\t\treturn create(stdout.columns, stdout.rows);\n\t}\n\n\tif (stderr?.columns && stderr?.rows) {\n\t\treturn create(stderr.columns, stderr.rows);\n\t}\n\n\t// These values are static, so not the first choice.\n\tif (env.COLUMNS && env.LINES) {\n\t\treturn create(env.COLUMNS, env.LINES);\n\t}\n\n\tconst fallback = {\n\t\tcolumns: defaultColumns,\n\t\trows: defaultRows,\n\t};\n\n\tif (process.platform === 'win32') {\n\t\t// We include `tput` for Windows users using Git Bash.\n\t\treturn tput() ?? fallback;\n\t}\n\n\tif (process.platform === 'darwin') {\n\t\treturn devTty() ?? tput() ?? fallback;\n\t}\n\n\treturn devTty() ?? tput() ?? resize() ?? fallback;\n}\n\nconst devTty = () => {\n\ttry {\n\t\t// eslint-disable-next-line no-bitwise\n\t\tconst flags = process.platform === 'darwin' ? fs.constants.O_EVTONLY | fs.constants.O_NONBLOCK : fs.constants.O_NONBLOCK;\n\t\t// eslint-disable-next-line new-cap\n\t\tconst {columns, rows} = tty.WriteStream(fs.openSync('/dev/tty', flags));\n\t\treturn {columns, rows};\n\t} catch {}\n};\n\n// On macOS, this only returns correct values when stdout is not redirected.\nconst tput = () => {\n\ttry {\n\t\t// `tput` requires the `TERM` environment variable to be set.\n\t\tconst columns = exec('tput', ['cols'], {env: {TERM: 'dumb', ...process.env}});\n\t\tconst rows = exec('tput', ['lines'], {env: {TERM: 'dumb', ...process.env}});\n\n\t\tif (columns && rows) {\n\t\t\treturn createIfNotDefault(columns, rows);\n\t\t}\n\t} catch {}\n};\n\n// Only exists on Linux.\nconst resize = () => {\n\t// `resize` is preferred as it works even when all file descriptors are redirected\n\t// https://linux.die.net/man/1/resize\n\ttry {\n\t\tconst size = exec('resize', ['-u']).match(/\\d+/g);\n\n\t\tif (size.length === 2) {\n\t\t\treturn createIfNotDefault(size[0], size[1]);\n\t\t}\n\t} catch {}\n};\n","// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E3\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0x4DBF\n\t\t|| x >= 0x4E00 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x === 0x16FF0\n\t\t|| x === 0x16FF1\n\t\t|| x >= 0x17000 && x <= 0x187F7\n\t\t|| x >= 0x18800 && x <= 0x18CD5\n\t\t|| x >= 0x18D00 && x <= 0x18D08\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D7\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA88\n\t\t|| x >= 0x1FA90 && x <= 0x1FABD\n\t\t|| x >= 0x1FABF && x <= 0x1FAC5\n\t\t|| x >= 0x1FACE && x <= 0x1FADB\n\t\t|| x >= 0x1FAE0 && x <= 0x1FAE8\n\t\t|| x >= 0x1FAF0 && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// For Prettier. This doesn't count \"ambiguous\" characters or check for valid input.\n// https://github.com/sindresorhus/get-east-asian-width/pull/6\nexport const _isNarrowWidth = codePoint => !(isFullWidth(codePoint) || isWide(codePoint));\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC2\\uDECE-\\uDEDB\\uDEE0-\\uDEE8]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (codePoint >= 0x3_00 && codePoint <= 0x3_6F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue: code => {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = [...preString];\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","export const writeStream = (data: string, stream: NodeJS.WriteStream): boolean => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/unbound-method\n const write = (stream as any).__write ?? stream.write;\n\n return write.call(stream, data);\n};\n"]}
@@ -1,10 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkQINSQ6TU_cjs = require('./chunk-QINSQ6TU.cjs');
4
-
5
- var a=o=>{let e=Object.keys(o).map(t=>o[t].badge??"");return e.length===0?"":e.reduce((t,r)=>t.length>r.length?t:r)};var n=class{_styles;_loggerTypes;_stringify;constructor(e){this._styles={bold:{label:!1},dateFormatter:t=>[t.getHours(),t.getMinutes(),t.getSeconds()].map(r=>String(r).padStart(2,"0")).join(":"),underline:{label:!1,message:!1,prefix:!1,suffix:!1},uppercase:{label:!1},...e},this._loggerTypes=chunkQINSQ6TU_cjs.b;}setStringify(e){this._stringify=e;}setLoggerTypes(e){this._loggerTypes=e;}};
6
-
7
- exports.a = a;
8
- exports.b = n;
9
- //# sourceMappingURL=out.js.map
10
- //# sourceMappingURL=chunk-YP3U3DTV.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/util/get-longest-badge.ts","../src/reporter/pretty/abstract-pretty-reporter.ts"],"names":["getLongestBadge","types","badges","x","y","AbstractPrettyReporter","options","date","n","LOG_TYPES","function_"],"mappings":"yCAEO,IAAMA,EAAuDC,GAA0E,CAC1I,IAAMC,EAAS,OAAO,KAAKD,CAAK,EAAE,IAAKE,GAAMF,EAAME,CAAM,EAAE,OAAS,EAAE,EAEtE,OAAID,EAAO,SAAW,EACX,GAIJA,EAAO,OAAO,CAACC,EAAGC,IAAOD,EAAE,OAASC,EAAE,OAASD,EAAIC,CAAE,CAChE,ECNO,IAAeC,EAAf,KAEP,CACuB,QAET,aAGA,WAEA,YAAYC,EAAsC,CACxD,KAAK,QAAU,CACX,KAAM,CACF,MAAO,EACX,EACA,cAAgBC,GAAe,CAACA,EAAK,SAAS,EAAGA,EAAK,WAAW,EAAGA,EAAK,WAAW,CAAC,EAAE,IAAKC,GAAM,OAAOA,CAAC,EAAE,SAAS,EAAG,GAAG,CAAC,EAAE,KAAK,GAAG,EACtI,UAAW,CACP,MAAO,GACP,QAAS,GACT,OAAQ,GACR,OAAQ,EACZ,EACA,UAAW,CACP,MAAO,EACX,EACA,GAAGF,CACP,EAEA,KAAK,aAAeG,CACxB,CAGO,aAAaC,EAAsB,CACtC,KAAK,WAAaA,CACtB,CAEO,eAAeT,EAAqE,CACvF,KAAK,aAAeA,CACxB,CAGJ","sourcesContent":["import type { DefaultLogTypes, LiteralUnion, LoggerTypesConfig } from \"../types\";\n\nexport const getLongestBadge = <L extends string, T extends string>(types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>): string => {\n const badges = Object.keys(types).map((x) => types[x as T].badge ?? \"\");\n\n if (badges.length === 0) {\n return \"\";\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return badges.reduce((x, y) => (x.length > y.length ? x : y));\n};\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport { LOG_TYPES } from \"../../constants\";\nimport type { DefaultLogTypes, LiteralUnion, LoggerTypesAwareReporter, LoggerTypesConfig, ReadonlyMeta, StringifyAwareReporter } from \"../../types\";\n\nexport abstract class AbstractPrettyReporter<T extends string = never, L extends string = never>\n implements LoggerTypesAwareReporter<T, L>, StringifyAwareReporter<L>\n{\n protected readonly _styles: PrettyStyleOptions;\n\n protected _loggerTypes: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\n\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n protected _stringify: typeof stringify | undefined;\n\n protected constructor(options: Partial<PrettyStyleOptions>) {\n this._styles = {\n bold: {\n label: false,\n },\n dateFormatter: (date: Date) => [date.getHours(), date.getMinutes(), date.getSeconds()].map((n) => String(n).padStart(2, \"0\")).join(\":\"),\n underline: {\n label: false,\n message: false,\n prefix: false,\n suffix: false,\n },\n uppercase: {\n label: false,\n },\n ...options,\n } as PrettyStyleOptions;\n\n this._loggerTypes = LOG_TYPES as LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\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 public setLoggerTypes(types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>): void {\n this._loggerTypes = types;\n }\n\n public abstract log(meta: ReadonlyMeta<L>): void;\n}\n\nexport type PrettyStyleOptions = {\n bold: {\n label: boolean;\n };\n dateFormatter: (date: Date) => string;\n // Length of the message before a line break is inserted\n messageLength: number | undefined;\n underline: {\n label: boolean;\n prefix: boolean;\n suffix: boolean;\n };\n uppercase: {\n label: boolean;\n };\n};\n"]}
@@ -1,7 +0,0 @@
1
- import { b } from './chunk-NF47XQ47.js';
2
-
3
- var g=o=>{let e=Object.keys(o).map(t=>o[t].badge??"");return e.length===0?"":e.reduce((t,r)=>t.length>r.length?t:r)};var n=class{_styles;_loggerTypes;_stringify;constructor(e){this._styles={bold:{label:!1},dateFormatter:t=>[t.getHours(),t.getMinutes(),t.getSeconds()].map(r=>String(r).padStart(2,"0")).join(":"),underline:{label:!1,message:!1,prefix:!1,suffix:!1},uppercase:{label:!1},...e},this._loggerTypes=b;}setStringify(e){this._stringify=e;}setLoggerTypes(e){this._loggerTypes=e;}};
4
-
5
- export { g as a, n as b };
6
- //# sourceMappingURL=out.js.map
7
- //# sourceMappingURL=chunk-ZB7IIFHO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/util/get-longest-badge.ts","../src/reporter/pretty/abstract-pretty-reporter.ts"],"names":["getLongestBadge","types","badges","x","y","AbstractPrettyReporter","options","date","n","LOG_TYPES","function_"],"mappings":"wCAEO,IAAMA,EAAuDC,GAA0E,CAC1I,IAAMC,EAAS,OAAO,KAAKD,CAAK,EAAE,IAAKE,GAAMF,EAAME,CAAM,EAAE,OAAS,EAAE,EAEtE,OAAID,EAAO,SAAW,EACX,GAIJA,EAAO,OAAO,CAACC,EAAGC,IAAOD,EAAE,OAASC,EAAE,OAASD,EAAIC,CAAE,CAChE,ECNO,IAAeC,EAAf,KAEP,CACuB,QAET,aAGA,WAEA,YAAYC,EAAsC,CACxD,KAAK,QAAU,CACX,KAAM,CACF,MAAO,EACX,EACA,cAAgBC,GAAe,CAACA,EAAK,SAAS,EAAGA,EAAK,WAAW,EAAGA,EAAK,WAAW,CAAC,EAAE,IAAKC,GAAM,OAAOA,CAAC,EAAE,SAAS,EAAG,GAAG,CAAC,EAAE,KAAK,GAAG,EACtI,UAAW,CACP,MAAO,GACP,QAAS,GACT,OAAQ,GACR,OAAQ,EACZ,EACA,UAAW,CACP,MAAO,EACX,EACA,GAAGF,CACP,EAEA,KAAK,aAAeG,CACxB,CAGO,aAAaC,EAAsB,CACtC,KAAK,WAAaA,CACtB,CAEO,eAAeT,EAAqE,CACvF,KAAK,aAAeA,CACxB,CAGJ","sourcesContent":["import type { DefaultLogTypes, LiteralUnion, LoggerTypesConfig } from \"../types\";\n\nexport const getLongestBadge = <L extends string, T extends string>(types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>): string => {\n const badges = Object.keys(types).map((x) => types[x as T].badge ?? \"\");\n\n if (badges.length === 0) {\n return \"\";\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce\n return badges.reduce((x, y) => (x.length > y.length ? x : y));\n};\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport { LOG_TYPES } from \"../../constants\";\nimport type { DefaultLogTypes, LiteralUnion, LoggerTypesAwareReporter, LoggerTypesConfig, ReadonlyMeta, StringifyAwareReporter } from \"../../types\";\n\nexport abstract class AbstractPrettyReporter<T extends string = never, L extends string = never>\n implements LoggerTypesAwareReporter<T, L>, StringifyAwareReporter<L>\n{\n protected readonly _styles: PrettyStyleOptions;\n\n protected _loggerTypes: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\n\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n protected _stringify: typeof stringify | undefined;\n\n protected constructor(options: Partial<PrettyStyleOptions>) {\n this._styles = {\n bold: {\n label: false,\n },\n dateFormatter: (date: Date) => [date.getHours(), date.getMinutes(), date.getSeconds()].map((n) => String(n).padStart(2, \"0\")).join(\":\"),\n underline: {\n label: false,\n message: false,\n prefix: false,\n suffix: false,\n },\n uppercase: {\n label: false,\n },\n ...options,\n } as PrettyStyleOptions;\n\n this._loggerTypes = LOG_TYPES as LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\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 public setLoggerTypes(types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>): void {\n this._loggerTypes = types;\n }\n\n public abstract log(meta: ReadonlyMeta<L>): void;\n}\n\nexport type PrettyStyleOptions = {\n bold: {\n label: boolean;\n };\n dateFormatter: (date: Date) => string;\n // Length of the message before a line break is inserted\n messageLength: number | undefined;\n underline: {\n label: boolean;\n prefix: boolean;\n suffix: boolean;\n };\n uppercase: {\n label: boolean;\n };\n};\n"]}
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkN2UPJYJR_cjs = require('./chunk-N2UPJYJR.cjs');
4
- var chunkQINSQ6TU_cjs = require('./chunk-QINSQ6TU.cjs');
5
- var safeStableStringify = require('safe-stable-stringify');
6
-
7
- var c=class{log(e){let{context:t=[],message:s,type:r}=e;chunkN2UPJYJR_cjs.a(r.level)(s,...t);}};var m=i=>i===void 0?[]:Array.isArray(i)?i:[i];var T=(i,e)=>{let t={...i};return Object.keys(e).forEach(s=>{t[s]={...t[s],...e[s]};}),t};var w=(i,e)=>i.length>=e?i:i.padEnd(e);var x={badge:void 0,context:void 0,error:void 0,label:void 0,message:void 0,prefix:void 0,repeated:void 0,scope:void 0,suffix:void 0},f=class{timersMap;countMap;seqTimers;lastLog;logLevels;disabled;scopeName;types;longestLabel;processors;generalLogLevel;reporters;throttle;throttleMin;stringify;groups;startTimerMessage;endTimerMessage;rawReporter;constructor(e){this.throttle=e.throttle??1e3,this.throttleMin=e.throttleMin??5,this.stringify=safeStableStringify.configure({strict:!0}),this.startTimerMessage=e.messages?.timerStart??"Initialized timer...",this.endTimerMessage=e.messages?.timerEnd??"Timer run for:",this.types=T(chunkQINSQ6TU_cjs.b,e.types??{}),this.longestLabel=chunkQINSQ6TU_cjs.c(this.types),this.logLevels={...chunkQINSQ6TU_cjs.a,...e.logLevels},this.generalLogLevel=this._normalizeLogLevel(e.logLevel),this.reporters=new Set,this.processors=new Set,this.disabled=e.disabled??!1,this.scopeName=m(e.scope).filter(Boolean),this.timersMap=new Map,this.countMap=new Map,this.groups=[],this.seqTimers=new Set;for(let t in this.types)this[t]=this._logger.bind(this,t,!1);this.lastLog={},Array.isArray(e.reporters)&&this.registerReporters(e.reporters),this.rawReporter=this.extendReporter(e.rawReporter??new c),Array.isArray(e.processors)&&this.registerProcessors(e.processors);}wrapConsole(){for(let e in this.types)console["__"+e]||(console["__"+e]=console[e]),console[e]=this[e];}restoreConsole(){for(let e in this.types)console["__"+e]&&(console[e]=console["__"+e],delete console["__"+e]);}wrapException(){process.on("uncaughtException",e=>{this.error(e);}),process.on("unhandledRejection",e=>{this.error(e);});}disable(){this.disabled=!0;}enable(){this.disabled=!1;}isEnabled(){return !this.disabled}scope(...e){if(e.length===0)throw new Error("No scope name was defined.");return this.scopeName=e.flat(),this}unscope(){this.scopeName=[];}time(e="default"){this.seqTimers.has(e)?this._logger("warn",!1,{message:"Timer '"+e+"' already exists",prefix:e}):(this.seqTimers.add(e),this.timersMap.set(e,Date.now()),this._logger("start",!1,{message:this.startTimerMessage,prefix:e}));}timeLog(e,...t){if(!e&&this.seqTimers.size>0&&(e=[...this.seqTimers].pop()),e&&this.timersMap.has(e)){let s=Date.now()-this.timersMap.get(e);this._logger("info",!1,{context:t,message:s<1e3?s+" ms":(s/1e3).toFixed(2)+" s",prefix:e});}else this._logger("warn",!1,{context:t,message:"Timer not found",prefix:e});}timeEnd(e){if(!e&&this.seqTimers.size>0&&(e=[...this.seqTimers].pop()),e&&this.timersMap.has(e)){let t=Date.now()-this.timersMap.get(e);this.timersMap.delete(e),this._logger("stop",!1,{message:this.endTimerMessage+" "+(t<1e3?t+" ms":(t/1e3).toFixed(2)+" s"),prefix:e});}}group(e="console.group"){typeof window>"u"?console.group(e):this.groups.push(e);}groupEnd(){typeof window>"u"?console.groupEnd():this.groups.pop();}count(e="default"){let t=this.countMap.get(e)??0;this.countMap.set(e,t+1),this._logger("log",!1,{message:e+": "+(t+1),prefix:e});}countReset(e="default"){this.countMap.has(e)?this.countMap.delete(e):this._logger("warn",!1,{message:"Count for "+e+" does not exist",prefix:e});}clear(){console.clear();}raw(e,...t){this.disabled||this._logger("log",!0,{context:t,message:e});}extendReporter(e){return typeof e.setLoggerTypes=="function"&&e.setLoggerTypes(this.types),typeof e.setStringify=="function"&&e.setStringify(this.stringify),e}registerReporters(e){for(let t of e)this.reporters.add(this.extendReporter(t));}_report(e,t){if(t)this.rawReporter.log(Object.freeze(e));else for(let s of this.reporters)s.log(Object.freeze(e));}registerProcessors(e){for(let t of e)typeof t.setStringify=="function"&&t.setStringify(this.stringify),this.processors.add(t);}_normalizeLogLevel(e){return e&&this.logLevels[e]?e:"debug"}_buildMeta(e,t,...s){let r={...x};if(r.type={level:t.logLevel,name:e},r.groups=this.groups,r.scope=this.scopeName,r.date=new Date,s.length===1&&typeof s[0]=="object"&&s[0]!==null)if(s[0]instanceof Error)r.error=s[0];else if("message"in s[0]){let{context:o,message:p,prefix:g,suffix:n}=s[0];o&&(r.context=o),g&&(r.prefix=g),n&&(r.suffix=n),r.message=p;}else r.message=s[0];else s.length>1&&typeof s[0]=="string"?(r.message=s[0],r.context=s.slice(1)):r.message=s[0];return t.logLevel==="trace"&&(r.traceError=new Error("Trace")),t.badge&&(r.badge=w(t.badge,t.badge.length+1)),t.label&&(r.label=t.label),r}_logger(e,t,...s){if(this.disabled)return;let r=this._normalizeLogLevel(this.types[e].logLevel);if(this.logLevels[r]>=this.logLevels[this.generalLogLevel]){let o=this._buildMeta(e,this.types[e],...s),p=(n=!1)=>{let a=(this.lastLog.count||0)-this.throttleMin;if(this.lastLog.object&&a>0){let l={...this.lastLog.object};a>1&&(l.repeated=a),this._report(l,t),this.lastLog.count=1;}if(n){for(let l of this.processors)o={...l.process(o)};this.lastLog.object=o,this._report(o,t);}};clearTimeout(this.lastLog.timeout);let g=this.lastLog.time&&o.date?new Date(o.date).getTime()-this.lastLog.time.getTime():0;if(this.lastLog.time=new Date(o.date),g<this.throttle)try{let n=JSON.stringify([o.label,o.scope,o.type,o.message,o.prefix,o.suffix,o.context]),a=this.lastLog.serialized===n;if(this.lastLog.serialized=n,a&&(this.lastLog.count=(this.lastLog.count||0)+1,this.lastLog.count>this.throttleMin)){this.lastLog.timeout=setTimeout(p,this.throttle);return}}catch{}p(!0);}}},j=f;
8
-
9
- exports.a = f;
10
- exports.b = j;
11
- //# sourceMappingURL=out.js.map
12
- //# sourceMappingURL=chunk-ZHHJ42XL.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pail.browser.ts","../src/reporter/raw/raw.browser.ts","../src/util/arrayify.ts","../src/util/merge-types.ts","../src/util/pad-end.ts"],"names":["stringifyConfigure","RawReporter","meta","context","message","type","writeConsoleLogBasedOnLevel","arrayify","x","mergeTypes","standard","custom","types","padEnd","string_","targetLength","EMPTY_META","PailBrowserImpl","options","LOG_TYPES","getLongestLabel","EXTENDED_RFC_5424_LOG_LEVELS","error","name","label","data","span","current","arguments_","reporter","reporters","raw","processors","processor","level","typeName","prefix","suffix","messageObject","logLevel","resolveLog","newLog","repeated","lastMeta","diffTime","serializedLog","isSameLog","PailBrowser"],"mappings":"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","sourcesContent":["import type { stringify } from \"safe-stable-stringify\";\nimport { configure as stringifyConfigure } from \"safe-stable-stringify\";\n\nimport { EXTENDED_RFC_5424_LOG_LEVELS, LOG_TYPES } from \"./constants\";\nimport { RawReporter } from \"./reporter/raw/raw.browser\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LiteralUnion,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Message,\n Meta,\n Primitive,\n Processor,\n Reporter,\n StringifyAwareProcessor,\n StringifyAwareReporter,\n} from \"./types\";\nimport { arrayify } from \"./util/arrayify\";\nimport { getLongestLabel } from \"./util/get-longest-label\";\nimport { mergeTypes } from \"./util/merge-types\";\nimport { padEnd } from \"./util/pad-end\";\n\nconst EMPTY_META = {\n badge: undefined,\n context: undefined,\n error: undefined,\n label: undefined,\n message: undefined,\n prefix: undefined,\n repeated: undefined,\n scope: undefined,\n suffix: undefined,\n};\n\nexport class PailBrowserImpl<T extends string = never, L extends string = never> {\n protected timersMap: Map<string, number>;\n\n protected countMap: Map<string, number>;\n\n protected seqTimers: Set<string>;\n\n protected readonly lastLog: {\n count?: number;\n object?: Meta<L>;\n serialized?: string;\n time?: Date;\n timeout?: ReturnType<typeof setTimeout>;\n };\n\n protected readonly logLevels: Record<string, number>;\n\n protected disabled: boolean;\n\n protected scopeName: string[];\n\n protected readonly types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\n\n protected readonly longestLabel: string;\n\n protected readonly processors: Set<Processor<L>>;\n\n protected readonly generalLogLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>;\n\n protected reporters: Set<Reporter<L>>;\n\n protected readonly throttle: number;\n\n protected readonly throttleMin: number;\n\n protected readonly stringify: typeof stringify;\n\n protected groups: string[];\n\n protected readonly startTimerMessage: string;\n\n protected readonly endTimerMessage: string;\n\n protected rawReporter: Reporter<L>;\n\n public constructor(options: ConstructorOptions<T, L>) {\n this.throttle = options.throttle ?? 1000;\n this.throttleMin = options.throttleMin ?? 5;\n\n this.stringify = stringifyConfigure({\n strict: true,\n });\n\n this.startTimerMessage = options.messages?.timerStart ?? \"Initialized timer...\";\n this.endTimerMessage = options.messages?.timerEnd ?? \"Timer run for:\";\n this.types = mergeTypes<L, T>(LOG_TYPES, (options.types ?? {}) as LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>);\n this.longestLabel = getLongestLabel<L, T>(this.types);\n\n this.logLevels = { ...EXTENDED_RFC_5424_LOG_LEVELS, ...options.logLevels };\n this.generalLogLevel = this._normalizeLogLevel(options.logLevel);\n\n this.reporters = new Set();\n this.processors = new Set();\n\n this.disabled = options.disabled ?? false;\n\n this.scopeName = arrayify(options.scope).filter(Boolean) as string[];\n\n this.timersMap = new Map();\n this.countMap = new Map();\n\n this.groups = [];\n\n this.seqTimers = new Set();\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax,guard-for-in\n for (const type in this.types) {\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n this[type] = this._logger.bind(this, type as T, false);\n }\n\n // Track of last log\n this.lastLog = {};\n\n if (Array.isArray(options.reporters)) {\n this.registerReporters(options.reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n\n if (Array.isArray(options.processors)) {\n this.registerProcessors(options.processors);\n }\n }\n\n public wrapConsole(): void {\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const type in this.types) {\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(console as any)[\"__\" + type]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[\"__\" + type] = (console as any)[type];\n }\n // Override\n // @TODO: Fix typings\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[type] = (this as unknown as PailBrowserImpl<T, L>)[type as keyof PailBrowserImpl<T, L>];\n }\n }\n\n public restoreConsole(): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const type in this.types) {\n // Restore if backup is available\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((console as any)[\"__\" + type]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[type] = (console as any)[\"__\" + type];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-dynamic-delete\n delete (console as any)[\"__\" + type];\n }\n }\n }\n\n public wrapException(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.on(\"uncaughtException\", (error: any) => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n (this as unknown as PailBrowserImpl<T, L>).error(error);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.on(\"unhandledRejection\", (error: any) => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n (this as unknown as PailBrowserImpl<T, L>).error(error);\n });\n }\n\n /**\n * Disables logging\n */\n public disable(): void {\n this.disabled = true;\n }\n\n /**\n * Enables logging\n */\n public enable(): void {\n this.disabled = false;\n }\n\n public isEnabled(): boolean {\n return !this.disabled;\n }\n\n public scope<N extends string = T>(...name: string[]): PailBrowserType<N, L> {\n if (name.length === 0) {\n throw new Error(\"No scope name was defined.\");\n }\n\n this.scopeName = name.flat();\n\n return this as unknown as PailBrowserType<N, L>;\n }\n\n public unscope(): void {\n this.scopeName = [];\n }\n\n public time(label = \"default\"): void {\n if (this.seqTimers.has(label)) {\n this._logger(\"warn\", false, {\n message: \"Timer '\" + label + \"' already exists\",\n prefix: label,\n });\n } else {\n this.seqTimers.add(label);\n this.timersMap.set(label, Date.now());\n\n this._logger(\"start\", false, {\n message: this.startTimerMessage,\n prefix: label,\n });\n }\n }\n\n public timeLog(label?: string, ...data: unknown[]): void {\n if (!label && this.seqTimers.size > 0) {\n // eslint-disable-next-line no-param-reassign\n label = [...this.seqTimers].pop();\n }\n\n if (label && this.timersMap.has(label)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const span = Date.now() - this.timersMap.get(label)!;\n\n this._logger(\"info\", false, {\n context: data,\n message: span < 1000 ? span + \" ms\" : (span / 1000).toFixed(2) + \" s\",\n prefix: label,\n });\n } else {\n this._logger(\"warn\", false, {\n context: data,\n message: \"Timer not found\",\n prefix: label,\n });\n }\n }\n\n public timeEnd(label?: string): void {\n if (!label && this.seqTimers.size > 0) {\n // eslint-disable-next-line no-param-reassign\n label = [...this.seqTimers].pop();\n }\n\n if (label && this.timersMap.has(label)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const span = Date.now() - this.timersMap.get(label)!;\n\n this.timersMap.delete(label);\n\n this._logger(\"stop\", false, {\n message: this.endTimerMessage + \" \" + (span < 1000 ? span + \" ms\" : (span / 1000).toFixed(2) + \" s\"),\n prefix: label,\n });\n }\n }\n\n public group(label = \"console.group\"): void {\n if (typeof window === \"undefined\") {\n // eslint-disable-next-line no-console\n console.group(label);\n } else {\n this.groups.push(label);\n }\n }\n\n public groupEnd(): void {\n if (typeof window === \"undefined\") {\n // eslint-disable-next-line no-console\n console.groupEnd();\n } else {\n this.groups.pop();\n }\n }\n\n public count(label = \"default\"): void {\n const current = this.countMap.get(label) ?? 0;\n\n this.countMap.set(label, current + 1);\n\n this._logger(\"log\", false, {\n message: label + \": \" + (current + 1),\n prefix: label,\n });\n }\n\n public countReset(label = \"default\"): void {\n if (this.countMap.has(label)) {\n this.countMap.delete(label);\n } else {\n this._logger(\"warn\", false, {\n message: \"Count for \" + label + \" does not exist\",\n prefix: label,\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n public clear(): void {\n // eslint-disable-next-line no-console\n console.clear();\n }\n\n public raw(message: string, ...arguments_: unknown[]): void {\n if (this.disabled) {\n return;\n }\n\n this._logger(\"log\", true, {\n context: arguments_,\n message,\n });\n }\n\n protected extendReporter(reporter: Reporter<L>): Reporter<L> {\n if (typeof (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes === \"function\") {\n (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes(this.types);\n }\n\n if (typeof (reporter as StringifyAwareReporter<L>).setStringify === \"function\") {\n (reporter as StringifyAwareReporter<L>).setStringify(this.stringify);\n }\n\n return reporter;\n }\n\n protected registerReporters(reporters: Reporter<L>[]): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const reporter of reporters) {\n this.reporters.add(this.extendReporter(reporter));\n }\n }\n\n private _report(meta: Meta<L>, raw: boolean): void {\n if (raw) {\n this.rawReporter.log(Object.freeze(meta));\n } else {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const reporter of this.reporters) {\n reporter.log(Object.freeze(meta));\n }\n }\n }\n\n private registerProcessors(processors: Processor<L>[]): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const processor of processors) {\n if (typeof (processor as StringifyAwareProcessor<L>).setStringify === \"function\") {\n (processor as StringifyAwareProcessor<L>).setStringify(this.stringify);\n }\n\n this.processors.add(processor as Processor<L>);\n }\n }\n\n private _normalizeLogLevel(level: LiteralUnion<ExtendedRfc5424LogLevels, L> | undefined): LiteralUnion<ExtendedRfc5424LogLevels, L> {\n // eslint-disable-next-line security/detect-object-injection\n return level && this.logLevels[level] ? level : \"debug\";\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity,@typescript-eslint/no-explicit-any\n private _buildMeta(typeName: string, type: Partial<LoggerConfiguration<L>>, ...arguments_: any[]): Meta<L> {\n const meta = { ...EMPTY_META } as Meta<L>;\n\n meta.type = {\n level: type.logLevel as LiteralUnion<ExtendedRfc5424LogLevels, L>,\n name: typeName,\n };\n\n meta.groups = this.groups;\n meta.scope = this.scopeName;\n meta.date = new Date();\n\n if (arguments_.length === 1 && typeof arguments_[0] === \"object\" && arguments_[0] !== null) {\n if (arguments_[0] instanceof Error) {\n // eslint-disable-next-line prefer-destructuring\n meta.error = arguments_[0];\n } else if (\"message\" in arguments_[0]) {\n const { context, message, prefix, suffix } = arguments_[0] as Message;\n\n if (context) {\n meta.context = context;\n }\n\n if (prefix) {\n meta.prefix = prefix;\n }\n\n if (suffix) {\n meta.suffix = suffix;\n }\n\n meta.message = message;\n } else {\n meta.message = arguments_[0] as Primitive | ReadonlyArray<unknown> | Record<PropertyKey, unknown>;\n }\n } else if (arguments_.length > 1 && typeof arguments_[0] === \"string\") {\n meta.message = arguments_[0] as string;\n meta.context = arguments_.slice(1);\n } else {\n // eslint-disable-next-line prefer-destructuring\n meta.message = arguments_[0];\n }\n\n if (type.logLevel === \"trace\") {\n meta.traceError = new Error(\"Trace\");\n }\n\n if (type.badge) {\n meta.badge = padEnd(type.badge, type.badge.length + 1);\n }\n\n if (type.label) {\n meta.label = type.label;\n }\n\n return meta;\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity,@typescript-eslint/no-explicit-any\n private _logger(type: LiteralUnion<DefaultLogTypes, T>, raw: boolean, ...messageObject: any[]): void {\n if (this.disabled) {\n return;\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const logLevel = this._normalizeLogLevel(this.types[type].logLevel);\n\n // eslint-disable-next-line security/detect-object-injection\n if ((this.logLevels[logLevel] as number) >= (this.logLevels[this.generalLogLevel] as number)) {\n // eslint-disable-next-line security/detect-object-injection\n let meta = this._buildMeta(type, this.types[type], ...messageObject);\n\n /**\n * @param newLog false if the throttle expired and we don't want to log a duplicate\n */\n const resolveLog = (newLog = false) => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const repeated = (this.lastLog.count || 0) - this.throttleMin;\n\n if (this.lastLog.object && repeated > 0) {\n const lastMeta = { ...this.lastLog.object };\n\n if (repeated > 1) {\n lastMeta.repeated = repeated;\n }\n\n this._report(lastMeta, raw);\n\n this.lastLog.count = 1;\n }\n\n if (newLog) {\n // Apply global processors\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const processor of this.processors) {\n meta = { ...processor.process(meta) };\n }\n\n this.lastLog.object = meta;\n\n this._report(meta, raw);\n }\n };\n\n clearTimeout(this.lastLog.timeout);\n\n const diffTime = this.lastLog.time && meta.date ? new Date(meta.date as Date | string).getTime() - this.lastLog.time.getTime() : 0;\n\n this.lastLog.time = new Date(meta.date as Date | string);\n\n if (diffTime < this.throttle) {\n try {\n const serializedLog = JSON.stringify([meta.label, meta.scope, meta.type, meta.message, meta.prefix, meta.suffix, meta.context]);\n const isSameLog = this.lastLog.serialized === serializedLog;\n\n this.lastLog.serialized = serializedLog;\n\n if (isSameLog) {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.lastLog.count = (this.lastLog.count || 0) + 1;\n\n if (this.lastLog.count > this.throttleMin) {\n // Auto-resolve when throttle is timed out\n this.lastLog.timeout = setTimeout(resolveLog, this.throttle);\n\n return; // SPAM!\n }\n }\n } catch {\n // Circular References\n }\n }\n\n resolveLog(true);\n }\n }\n}\n\nexport type PailBrowserType<T extends string = never, L extends string = never> = PailBrowserImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ConstructorOptions<TC, LC>) => PailBrowserType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ConstructorOptions<T, L>) => PailBrowserType<T, L>;\n\nexport const PailBrowser = PailBrowserImpl as unknown as PailBrowserType;\n","import type { ReadonlyMeta, Reporter } from \"../../types\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\n\nexport class RawReporter<L extends string = never> implements Reporter<L> {\n // eslint-disable-next-line class-methods-use-this\n public log(meta: ReadonlyMeta<L>): void {\n const { context = [], message, type } = meta;\n\n const consoleLogFunction = writeConsoleLogBasedOnLevel(type.level);\n\n consoleLogFunction(message, ...context);\n }\n}\n","export const arrayify = <T>(x: T | T[]): T[] => {\n if (x === undefined) {\n return [] as T[];\n }\n\n return Array.isArray(x) ? x : ([x] as T[]);\n};\n","import type { DefaultLoggerTypes, DefaultLogTypes, LiteralUnion, LoggerTypesConfig } from \"../types\";\n\nexport const mergeTypes = <L extends string, T extends string>(\n standard: DefaultLoggerTypes<L>,\n custom: LoggerTypesConfig<T, L>,\n): LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L> => {\n const types = { ...standard } as LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\n\n Object.keys(custom).forEach((type) => {\n types[type as T] = { ...types[type as T], ...custom[type as T] };\n });\n\n return types;\n};\n","export const padEnd = (string_: string, targetLength: number): string => {\n if (string_.length >= targetLength) {\n return string_;\n }\n\n return string_.padEnd(targetLength);\n};\n"]}
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- var n=class{_stringify;setStringify(t){this._stringify=t;}log(t){let{file:e,type:l,...i}=t;i.label&&(i.label=i.label.trim()),e&&(i.file=e.name+":"+e.line+(e.column?":"+e.column:"")),this._log(this._stringify(i),l.level);}};
4
-
5
- exports.a = n;
6
- //# sourceMappingURL=out.js.map
7
- //# sourceMappingURL=chunk-ZJMTPHZR.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/reporter/json/abstract-json-reporter.ts"],"names":["AbstractJsonReporter","function_","meta","file","type","rest"],"mappings":"AAIO,IAAeA,EAAf,KAAmG,CAE5F,WAGH,aAAaC,EAAsB,CACtC,KAAK,WAAaA,CACtB,CAEO,IAAIC,EAA6B,CAGpC,GAAM,CAAE,KAAAC,EAAM,KAAAC,EAAM,GAAGC,CAAK,EAAIH,EAE5BG,EAAK,QACLA,EAAK,MAAQA,EAAK,MAAM,KAAK,GAG7BF,IAECE,EAAqE,KAAOF,EAAK,KAAO,IAAMA,EAAK,MAAQA,EAAK,OAAS,IAAMA,EAAK,OAAS,KAGlJ,KAAK,KAAM,KAAK,WAAgCE,CAAI,EAAaD,EAAK,KAAK,CAC/E,CAGJ","sourcesContent":["import type { stringify } from \"safe-stable-stringify\";\n\nimport type { ExtendedRfc5424LogLevels, LiteralUnion, ReadonlyMeta, StringifyAwareReporter } from \"../../types\";\n\nexport abstract class AbstractJsonReporter<L extends string = never> implements StringifyAwareReporter<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n protected _stringify: typeof stringify | undefined;\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 public log(meta: ReadonlyMeta<L>): void {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error\n // @ts-ignore -- tsup can find the type\n const { file, type, ...rest } = meta;\n\n if (rest.label) {\n rest.label = rest.label.trim();\n }\n\n if (file) {\n // This is a hack to make the file property a string\n (rest as unknown as Omit<ReadonlyMeta<L>, \"file\"> & { file: string }).file = file.name + \":\" + file.line + (file.column ? \":\" + file.column : \"\");\n }\n\n this._log((this._stringify as typeof stringify)(rest) as string, type.level);\n }\n\n protected abstract _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.browser.ts"],"names":["createPail","options","PailBrowser","MessageFormatterProcessor","ErrorProcessor","JsonReporter","pail"],"mappings":"2PAOO,IAAMA,EAAkEC,GAC3E,IAAIC,EAAkB,CAClB,WAAY,CACR,IAAIC,EAEJ,GAAI,OAAO,OAAW,IAAe,CAAC,IAAIC,CAAgB,EAAuB,CAAC,CACtF,EACA,UAAW,CAAC,IAAIC,CAAiB,EACjC,GAAGJ,CACP,CAAC,EAEQK,EAAON,EAAW","sourcesContent":["import type { PailBrowserType } from \"./pail.browser\";\nimport { PailBrowser } from \"./pail.browser\";\nimport { ErrorProcessor } from \"./processor/error/error-processor\";\nimport { MessageFormatterProcessor } from \"./processor/message-formatter-processor\";\nimport { JsonReporter } from \"./reporter/json/json.browser\";\nimport type { ConstructorOptions, Processor } from \"./types\";\n\nexport const createPail = <T extends string = never, L extends string = never>(options?: ConstructorOptions<T, L>): PailBrowserType<T, L> =>\n new PailBrowser<T, L>({\n processors: [\n new MessageFormatterProcessor<L>(),\n // eslint-disable-next-line unicorn/no-negated-condition\n ...(typeof window !== \"undefined\" ? ([new ErrorProcessor()] as Processor<L>[]) : []),\n ],\n reporters: [new JsonReporter<L>()],\n ...options,\n });\n\nexport const pail = createPail();\n\nexport type { PailBrowserType as Pail } from \"./pail.browser\";\nexport type {\n ConstructorOptions,\n DefaultLoggerTypes,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Processor,\n Reporter,\n StreamAwareReporter,\n} from \"./shared\";\n"]}
@@ -1,13 +0,0 @@
1
- import { b } from './chunk-2I5JHTDY.js';
2
- import { a as a$1 } from './chunk-R5F555RP.js';
3
- import { a } from './chunk-SR3Q3EUO.js';
4
- import { a as a$2 } from './chunk-KERJDMYV.js';
5
- import './chunk-AFMDCM5W.js';
6
- import './chunk-TAH23BHM.js';
7
- import './chunk-NF47XQ47.js';
8
-
9
- var p=s=>new b({processors:[new a,...typeof window<"u"?[new a$1]:[]],reporters:[new a$2],...s}),L=p();
10
-
11
- export { p as createPail, L as pail };
12
- //# sourceMappingURL=out.js.map
13
- //# sourceMappingURL=index.browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.browser.ts"],"names":["createPail","options","PailBrowser","MessageFormatterProcessor","ErrorProcessor","JsonReporter","pail"],"mappings":"oPAOO,IAAMA,EAAkEC,GAC3E,IAAIC,EAAkB,CAClB,WAAY,CACR,IAAIC,EAEJ,GAAI,OAAO,OAAW,IAAe,CAAC,IAAIC,CAAgB,EAAuB,CAAC,CACtF,EACA,UAAW,CAAC,IAAIC,CAAiB,EACjC,GAAGJ,CACP,CAAC,EAEQK,EAAON,EAAW","sourcesContent":["import type { PailBrowserType } from \"./pail.browser\";\nimport { PailBrowser } from \"./pail.browser\";\nimport { ErrorProcessor } from \"./processor/error/error-processor\";\nimport { MessageFormatterProcessor } from \"./processor/message-formatter-processor\";\nimport { JsonReporter } from \"./reporter/json/json.browser\";\nimport type { ConstructorOptions, Processor } from \"./types\";\n\nexport const createPail = <T extends string = never, L extends string = never>(options?: ConstructorOptions<T, L>): PailBrowserType<T, L> =>\n new PailBrowser<T, L>({\n processors: [\n new MessageFormatterProcessor<L>(),\n // eslint-disable-next-line unicorn/no-negated-condition\n ...(typeof window !== \"undefined\" ? ([new ErrorProcessor()] as Processor<L>[]) : []),\n ],\n reporters: [new JsonReporter<L>()],\n ...options,\n });\n\nexport const pail = createPail();\n\nexport type { PailBrowserType as Pail } from \"./pail.browser\";\nexport type {\n ConstructorOptions,\n DefaultLoggerTypes,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Processor,\n Reporter,\n StreamAwareReporter,\n} from \"./shared\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/interactive/interactive-manager.ts","../src/interactive/interactive-stream-hook.ts","../src/util/ansi-escapes.ts","../src/reporter/raw/raw.server.ts","../src/pail.server.ts","../src/index.server.ts"],"names":["InteractiveManager","#stream","#isActive","#isSuspended","#lastLength","#outside","stdout","stderr","stream","count","hook","eraseRowCount","erase","separateHistory","rows","from","width","height","terminalSize","position","actualLength","outside","output","accumulator","row","wrapAnsi","status","StringDecoder","ESC","eraseScreen","eraseLine","cursorLeft","cursorUp","clearTerminal","cursorHide","cursorShow","eraseLines","clear","index","InteractiveStreamHook","_InteractiveStreamHook","#decoder","#history","#method","data","arguments_","callback","element","message","RawReporter","#stringify","#stdout","#stderr","#interactiveManager","#interactive","function_","manager","interactive","meta","context","groups","type","items","formattedMessage","value","streamType","groupSpaces","writeStream","PailServerImpl","PailBrowserImpl","options","rawReporter","reporters","rest","name","reporter","PailServer","_getDefaultLogLevel","createPail","MessageFormatterProcessor","ErrorProcessor","PrettyReporter","pail"],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-extraneous-dependencies\nimport terminalSize from \"terminal-size\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport wrapAnsi from \"wrap-ansi\";\n\nimport type { InteractiveStreamHook } from \"./interactive-stream-hook\";\n\ntype StreamType = \"stderr\" | \"stdout\";\n\nexport class InteractiveManager {\n readonly #stream: {\n stderr: InteractiveStreamHook;\n stdout: InteractiveStreamHook;\n };\n\n #isActive = false;\n\n #isSuspended = false;\n\n #lastLength = 0;\n\n #outside = 0;\n\n public constructor(stdout: InteractiveStreamHook, stderr: InteractiveStreamHook) {\n this.#stream = {\n stderr,\n stdout,\n };\n }\n\n /**\n * Last printed rows count\n */\n public get lastLength(): number {\n return this.#lastLength;\n }\n\n /**\n * Rows count outside editable area\n */\n public get outside(): number {\n return this.#outside;\n }\n\n /**\n * Hook activity status\n */\n public get isHooked(): boolean {\n return this.#isActive;\n }\n\n /**\n * Suspend status for active hooks\n */\n public get isSuspended(): boolean {\n return this.#isSuspended;\n }\n\n /**\n * Removes from the bottom of output up the specified count of lines\n *\n * @param stream - Stream to remove lines from\n * @param count - lines count to remove\n */\n public erase(stream: StreamType, count = this.#lastLength): void {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n this.#stream[stream].erase(count);\n }\n\n /**\n * Hook stdout and stderr streams\n * @returns Success status\n */\n public hook(): boolean {\n if (!this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.active());\n\n this._clear(true);\n }\n\n return this.#isActive;\n }\n\n /**\n * Resume suspend hooks\n *\n * @param stream - Stream to resume\n * @param eraseRowCount - erase output rows count\n */\n public resume(stream: StreamType, eraseRowCount?: number): void {\n if (this.#isSuspended) {\n this.#isSuspended = false;\n\n if (eraseRowCount) {\n this.erase(stream, eraseRowCount);\n }\n\n this.#lastLength = 0;\n\n Object.values(this.#stream).forEach((hook) => hook.active());\n }\n }\n\n /**\n * Suspend active hooks for external output\n *\n * @param stream - Stream to suspend\n * @param erase - erase output\n */\n public suspend(stream: StreamType, erase = true): void {\n if (!this.#isSuspended) {\n this.#isSuspended = true;\n\n if (erase) {\n this.erase(stream);\n }\n\n Object.values(this.#stream).forEach((hook) => hook.renew());\n }\n }\n\n /**\n * Unhooks both stdout and stderr streams and print their story of logs\n *\n * @param separateHistory - If `true`, will add an empty line to the history output for individual recorded lines and console logs\n *\n * @returns Success status\n */\n public unhook(separateHistory = true): boolean {\n if (this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.inactive(separateHistory));\n\n this._clear();\n }\n\n return !this.#isActive;\n }\n\n /**\n * Update output\n *\n * @param stream - Stream to write to\n * @param rows - Text lines to write to standard output\n * @param from - Index of the line starting from which the contents of the terminal are being overwritten\n */\n public update(stream: StreamType, rows: string[], from = 0): void {\n if (rows.length > 0) {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const hook = this.#stream[stream];\n\n const { columns: width, rows: height } = terminalSize();\n\n const position = from > height ? height - 1 : Math.max(0, Math.min(height - 1, from));\n const actualLength = this.lastLength - position;\n const outside = Math.max(actualLength - height, this.outside);\n\n // eslint-disable-next-line unicorn/no-array-reduce\n let output = rows.reduce<string[]>(\n (accumulator, row) => [\n ...accumulator,\n wrapAnsi(row, width, {\n hard: true,\n trim: false,\n wordWrap: true,\n }),\n ],\n [],\n );\n\n if (height <= actualLength) {\n hook.erase(height);\n\n if (position < outside) {\n output = output.slice(outside - position + 1);\n }\n } else if (actualLength) {\n hook.erase(actualLength);\n }\n\n hook.write(output.join(\"\\n\") + \"\\n\");\n\n this.#lastLength = outside ? outside + output.length + 1 : output.length;\n this.#outside = Math.max(this.lastLength - height, this.outside);\n }\n }\n\n private _clear(status = false): void {\n this.#isActive = status;\n this.#lastLength = 0;\n this.#outside = 0;\n }\n}\n","import { StringDecoder } from \"node:string_decoder\";\n\nimport { cursorHide, cursorShow, eraseLines } from \"../util/ansi-escapes\";\n\nexport class InteractiveStreamHook {\n public static readonly DRAIN = true;\n\n readonly #decoder = new StringDecoder();\n\n #history: string[] = [];\n\n readonly #method: NodeJS.WriteStream[\"write\"];\n\n readonly #stream: NodeJS.WriteStream;\n\n public constructor(stream: NodeJS.WriteStream) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#method = stream.write;\n this.#stream = stream;\n }\n\n public active(): void {\n this.write(cursorHide as string);\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error\n // @ts-ignore - We are modifying the write method\n this.#stream.write = (data: Uint8Array | string, ...arguments_: [((error?: Error) => void)?] | [(string | undefined)?, ((error?: Error) => void)?]) => {\n const callback = arguments_.at(-1);\n\n this.#history.push(\n this.#decoder.write(\n typeof data === \"string\"\n ? Buffer.from(data, typeof arguments_[0] === \"string\" ? (arguments_[0] as BufferEncoding) : undefined)\n : Buffer.from(data),\n ),\n );\n\n if (typeof callback === \"function\") {\n callback();\n }\n\n return InteractiveStreamHook.DRAIN;\n };\n }\n\n public erase(count: number): void {\n if (count > 0) {\n this.write(eraseLines(count + 1) as string);\n }\n }\n\n public inactive(separateHistory = false): void {\n if (this.#history.length > 0) {\n if (separateHistory) {\n this.write(\"\\n\");\n }\n\n this.#history.forEach((element) => {\n this.write(element);\n });\n this.#history = [];\n }\n\n this.renew();\n }\n\n public renew(): void {\n this.#stream.write = this.#method;\n this.write(cursorShow as string);\n }\n\n public write(message: string): void {\n this.#method.apply(this.#stream, [message]);\n }\n}\n","const ESC = \"\\u001B[\";\n\nconst eraseScreen = ESC + \"2J\";\nconst eraseLine = ESC + \"2K\";\n\nconst cursorLeft = ESC + \"G\";\nconst cursorUp = (count = 1) => ESC + count + \"A\";\n\nexport const clearTerminal: string =\n process.platform === \"win32\"\n ? `${eraseScreen}${ESC}0f`\n : // 1. Erases the screen (Only done in case `2` is not supported)\n // 2. Erases the whole screen including scrollback buffer\n // 3. Moves cursor to the top-left position\n // More info: https://www.real-world-systems.com/docs/ANSIcode.html\n `${eraseScreen}${ESC}3J${ESC}H`;\n\nexport const cursorHide: string = ESC + \"?25l\";\nexport const cursorShow: string = ESC + \"?25h\";\n\nexport const eraseLines = (count: number): string => {\n let clear = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 0; index < count; index++) {\n clear += eraseLine + (index < count - 1 ? cursorUp() : \"\");\n }\n\n if (count) {\n clear += cursorLeft;\n }\n\n return clear;\n};\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { InteractiveManager } from \"../../interactive/interactive-manager\";\nimport type { ReadonlyMeta, StreamAwareReporter, StringifyAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\n\nexport class RawReporter<L extends string = never> implements StreamAwareReporter<L>, StringifyAwareReporter<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #stringify: typeof stringify | undefined;\n\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n #interactiveManager: InteractiveManager | undefined;\n\n #interactive = false;\n\n public constructor() {\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 // 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 public setInteractiveManager(manager?: InteractiveManager): void {\n this.#interactiveManager = manager;\n }\n\n public setIsInteractive(interactive: boolean): void {\n this.#interactive = interactive;\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n const { context, groups, message, type } = meta;\n\n const items: string[] = [];\n\n const formattedMessage: string | undefined = typeof message === \"string\" ? message : (this.#stringify as typeof stringify)(message);\n\n items.push(formattedMessage + \"\");\n\n if (context) {\n items.push(\n ...context.map((value) => {\n if (typeof value === \"object\") {\n return \" \" + (this.#stringify as typeof stringify)(value);\n }\n\n return \" \" + value;\n }),\n );\n }\n\n const streamType = [\"error\", \"trace\", \"warn\"].includes(type.level as string) ? \"stderr\" : \"stdout\";\n const stream = streamType === \"stderr\" ? this.#stderr : this.#stdout;\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n\n if (this.#interactive && this.#interactiveManager !== undefined && stream.isTTY) {\n this.#interactiveManager.update(streamType, (groupSpaces + items.join(\"\")).split(\"\\n\"), 0);\n } else {\n writeStream(groupSpaces + items.join(\"\"), stream);\n }\n }\n}\n","import { InteractiveManager } from \"./interactive/interactive-manager\";\nimport { InteractiveStreamHook } from \"./interactive/interactive-stream-hook\";\nimport { PailBrowserImpl } from \"./pail.browser\";\nimport { RawReporter } from \"./reporter/raw/raw.server\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n InteractiveStreamReporter,\n LiteralUnion,\n LoggerFunction,\n LoggerTypesAwareReporter,\n Reporter,\n ServerConstructorOptions,\n StreamAwareReporter,\n StringifyAwareReporter,\n} from \"./types\";\nimport { clearTerminal } from \"./util/ansi-escapes\";\n\nclass PailServerImpl<T extends string = never, L extends string = never> extends PailBrowserImpl<T, L> {\n protected readonly stdout: NodeJS.WriteStream;\n\n protected readonly stderr: NodeJS.WriteStream;\n\n protected interactiveManager: InteractiveManager | undefined;\n\n protected readonly interactive: boolean;\n\n public constructor(public readonly options: ServerConstructorOptions<T, L> = {}) {\n const { interactive, rawReporter, reporters, stderr, stdout, ...rest } = options;\n\n super(rest as ConstructorOptions<T, L>);\n\n this.interactive = interactive ?? false;\n\n this.stdout = stdout as NodeJS.WriteStream;\n this.stderr = stderr as NodeJS.WriteStream;\n\n if (this.interactive) {\n this.interactiveManager = new InteractiveManager(new InteractiveStreamHook(this.stdout), new InteractiveStreamHook(this.stderr));\n }\n\n if (Array.isArray(reporters)) {\n this.registerReporters(reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n }\n\n public override scope<N extends string = T>(...name: string[]): PailServerType<N, L> {\n if (name.length === 0) {\n throw new Error(\"No scope name was defined.\");\n }\n\n this.scopeName = name.flat();\n\n return this as unknown as PailServerType<N, L>;\n }\n\n public getInteractiveManager(): InteractiveManager | undefined {\n return this.interactiveManager;\n }\n\n public wrapStd() {\n this._wrapStream(this.stdout, \"log\");\n this._wrapStream(this.stderr, \"log\");\n }\n\n public restoreStd() {\n this._restoreStream(this.stdout);\n this._restoreStream(this.stderr);\n }\n\n public wrapAll(): void {\n this.wrapConsole();\n this.wrapStd();\n }\n\n public restoreAll(): void {\n this.restoreConsole();\n this.restoreStd();\n }\n\n public override clear(): void {\n this.stdout.write(clearTerminal as string);\n this.stderr.write(clearTerminal as string);\n }\n\n protected override extendReporter(reporter: Reporter<L>): Reporter<L> {\n if (typeof (reporter as StreamAwareReporter<L>).setStdout === \"function\") {\n (reporter as StreamAwareReporter<L>).setStdout(this.stdout);\n }\n\n if (typeof (reporter as StreamAwareReporter<L>).setStderr === \"function\") {\n (reporter as StreamAwareReporter<L>).setStderr(this.stderr);\n }\n\n if (typeof (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes === \"function\") {\n (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes(this.types);\n }\n\n if (typeof (reporter as StringifyAwareReporter<L>).setStringify === \"function\") {\n (reporter as StringifyAwareReporter<L>).setStringify(this.stringify);\n }\n\n if (typeof (reporter as InteractiveStreamReporter<L>).setIsInteractive === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setIsInteractive(this.interactive);\n }\n\n if (this.interactive && typeof (reporter as InteractiveStreamReporter<L>).setInteractiveManager === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setInteractiveManager(this.interactiveManager);\n }\n\n return reporter;\n }\n\n private _wrapStream(stream: NodeJS.WriteStream | undefined, type: LiteralUnion<DefaultLogTypes, L>) {\n if (!stream) {\n return;\n }\n\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign,@typescript-eslint/unbound-method\n (stream as any).__write = stream.write;\n }\n\n // Override\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n (stream as any).write = (data: any): void => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n (this as unknown as PailServerImpl)[type].log(String(data).trim());\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n private _restoreStream(stream?: NodeJS.WriteStream): void {\n if (!stream) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n stream.write = (stream as any).__write;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n delete (stream as any).__write;\n }\n }\n}\n\nexport type PailServerType<T extends string = never, L extends string = never> = PailServerImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ServerConstructorOptions<TC, LC>) => PailServerType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ServerConstructorOptions<T, L>) => PailServerType<T, L>;\n\nexport const PailServer = PailServerImpl as unknown as PailServerType;\n","import type { PailServerType } from \"./pail.server\";\nimport { PailServer } from \"./pail.server\";\nimport { ErrorProcessor } from \"./processor/error/error-processor\";\nimport { MessageFormatterProcessor } from \"./processor/message-formatter-processor\";\nimport { PrettyReporter } from \"./reporter/pretty/pretty.server\";\nimport type { ConstructorOptions, ExtendedRfc5424LogLevels } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst _getDefaultLogLevel = (): ExtendedRfc5424LogLevels => {\n if (process.env.NODE_ENV === \"debug\" || process.env.DEBUG !== undefined) {\n return \"debug\";\n }\n\n if (process.env.NODE_ENV === \"test\") {\n return \"warning\";\n }\n\n return \"informational\";\n};\n\nexport const createPail = <T extends string = never, L extends string = never>(options?: ConstructorOptions<T, L>): PailServerType<T, L> =>\n new PailServer<T, L>({\n logLevel: _getDefaultLogLevel(),\n processors: [new MessageFormatterProcessor<L>(), new ErrorProcessor<L>()],\n reporters: [new PrettyReporter()],\n stderr: process.stderr,\n stdout: process.stdout,\n ...options,\n });\n\nexport const pail = createPail();\n\nexport type { PailServerType as Pail } from \"./pail.server\";\nexport type {\n ConstructorOptions,\n DefaultLoggerTypes,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Processor,\n Reporter,\n StreamAwareReporter,\n} from \"./shared\";\n"]}
@@ -1,18 +0,0 @@
1
- import { a as a$3 } from './chunk-2I5JHTDY.js';
2
- import { a as a$2 } from './chunk-R5F555RP.js';
3
- import { a as a$1 } from './chunk-SR3Q3EUO.js';
4
- import './chunk-AFMDCM5W.js';
5
- import { d, a as a$4, b, c } from './chunk-WHEIXCFS.js';
6
- import './chunk-ZB7IIFHO.js';
7
- import './chunk-NF47XQ47.js';
8
- import { StringDecoder } from 'node:string_decoder';
9
-
10
- var v=class{#e;#t=!1;#i=!1;#r=0;#s=0;constructor(t,e){this.#e={stderr:e,stdout:t};}get lastLength(){return this.#r}get outside(){return this.#s}get isHooked(){return this.#t}get isSuspended(){return this.#i}erase(t,e=this.#r){if(this.#e[t]===void 0)throw new TypeError(`Stream "${t}" is not available`);this.#e[t].erase(e);}hook(){return this.#t||(Object.values(this.#e).forEach(t=>t.active()),this._clear(!0)),this.#t}resume(t,e){this.#i&&(this.#i=!1,e&&this.erase(t,e),this.#r=0,Object.values(this.#e).forEach(r=>r.active()));}suspend(t,e=!0){this.#i||(this.#i=!0,e&&this.erase(t),Object.values(this.#e).forEach(r=>r.renew()));}unhook(t=!0){return this.#t&&(Object.values(this.#e).forEach(e=>e.inactive(t)),this._clear()),!this.#t}update(t,e,r=0){if(e.length>0){if(this.#e[t]===void 0)throw new TypeError(`Stream "${t}" is not available`);let o=this.#e[t],{columns:u,rows:i}=a$4(),c=r>i?i-1:Math.max(0,Math.min(i-1,r)),n=this.lastLength-c,d=Math.max(n-i,this.outside),p=e.reduce((l,P)=>[...l,b(P,u,{hard:!0,trim:!1,wordWrap:!0})],[]);i<=n?(o.erase(i),c<d&&(p=p.slice(d-c+1))):n&&o.erase(n),o.write(p.join(`
11
- `)+`
12
- `),this.#r=d?d+p.length+1:p.length,this.#s=Math.max(this.lastLength-i,this.outside);}}_clear(t=!1){this.#t=t,this.#r=0,this.#s=0;}};var a="\x1B[",A=a+"2J",_=a+"2K",J=a+"G",O=(s=1)=>a+s+"A",S=process.platform==="win32"?`${A}${a}0f`:`${A}${a}3J${a}H`,N=a+"?25l",M=a+"?25h",E=s=>{let t="";for(let e=0;e<s;e++)t+=_+(e<s-1?O():"");return s&&(t+=J),t};var g=class s{static DRAIN=!0;#e=new StringDecoder;#t=[];#i;#r;constructor(t){this.#i=t.write,this.#r=t;}active(){this.write(N),this.#r.write=(t,...e)=>{let r=e.at(-1);return this.#t.push(this.#e.write(typeof t=="string"?Buffer.from(t,typeof e[0]=="string"?e[0]:void 0):Buffer.from(t))),typeof r=="function"&&r(),s.DRAIN};}erase(t){t>0&&this.write(E(t+1));}inactive(t=!1){this.#t.length>0&&(t&&this.write(`
13
- `),this.#t.forEach(e=>{this.write(e);}),this.#t=[]),this.renew();}renew(){this.#r.write=this.#i,this.write(M);}write(t){this.#i.apply(this.#r,[t]);}};var m=class{#e;#t;#i;#r;#s=!1;constructor(){this.#t=process.stdout,this.#i=process.stderr;}setStdout(t){this.#t=t;}setStderr(t){this.#i=t;}setStringify(t){this.#e=t;}setInteractiveManager(t){this.#r=t;}setIsInteractive(t){this.#s=t;}log(t){let{context:e,groups:r,message:o,type:u}=t,i=[],c$1=typeof o=="string"?o:this.#e(o);i.push(c$1+""),e&&i.push(...e.map(l=>typeof l=="object"?" "+this.#e(l):" "+l));let n=["error","trace","warn"].includes(u.level)?"stderr":"stdout",d=n==="stderr"?this.#i:this.#t,p=r.map(()=>" ").join("");this.#s&&this.#r!==void 0&&d.isTTY?this.#r.update(n,(p+i.join("")).split(`
14
- `),0):c(p+i.join(""),d);}};var y=class extends a$3{constructor(e={}){let{interactive:r,rawReporter:o,reporters:u,stderr:i,stdout:c,...n}=e;super(n);this.options=e;this.interactive=r??!1,this.stdout=c,this.stderr=i,this.interactive&&(this.interactiveManager=new v(new g(this.stdout),new g(this.stderr))),Array.isArray(u)&&this.registerReporters(u),this.rawReporter=this.extendReporter(e.rawReporter??new m);}stdout;stderr;interactiveManager;interactive;scope(...e){if(e.length===0)throw new Error("No scope name was defined.");return this.scopeName=e.flat(),this}getInteractiveManager(){return this.interactiveManager}wrapStd(){this._wrapStream(this.stdout,"log"),this._wrapStream(this.stderr,"log");}restoreStd(){this._restoreStream(this.stdout),this._restoreStream(this.stderr);}wrapAll(){this.wrapConsole(),this.wrapStd();}restoreAll(){this.restoreConsole(),this.restoreStd();}clear(){this.stdout.write(S),this.stderr.write(S);}extendReporter(e){return typeof e.setStdout=="function"&&e.setStdout(this.stdout),typeof e.setStderr=="function"&&e.setStderr(this.stderr),typeof e.setLoggerTypes=="function"&&e.setLoggerTypes(this.types),typeof e.setStringify=="function"&&e.setStringify(this.stringify),typeof e.setIsInteractive=="function"&&e.setIsInteractive(this.interactive),this.interactive&&typeof e.setInteractiveManager=="function"&&e.setInteractiveManager(this.interactiveManager),e}_wrapStream(e,r){e&&(e.__write||(e.__write=e.write),e.write=o=>{this[r].log(String(o).trim());});}_restoreStream(e){e&&e.__write&&(e.write=e.__write,delete e.__write);}},C=y;var W=()=>process.env.DEBUG!==void 0?"debug":"informational",D=s=>new C({logLevel:W(),processors:[new a$1,new a$2],reporters:[new d],stderr:process.stderr,stdout:process.stdout,...s}),ce=D();
15
-
16
- export { D as createPail, ce as pail };
17
- //# sourceMappingURL=out.js.map
18
- //# sourceMappingURL=index.server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/interactive/interactive-manager.ts","../src/interactive/interactive-stream-hook.ts","../src/util/ansi-escapes.ts","../src/reporter/raw/raw.server.ts","../src/pail.server.ts","../src/index.server.ts"],"names":["InteractiveManager","#stream","#isActive","#isSuspended","#lastLength","#outside","stdout","stderr","stream","count","hook","eraseRowCount","erase","separateHistory","rows","from","width","height","terminalSize","position","actualLength","outside","output","accumulator","row","wrapAnsi","status","StringDecoder","ESC","eraseScreen","eraseLine","cursorLeft","cursorUp","clearTerminal","cursorHide","cursorShow","eraseLines","clear","index","InteractiveStreamHook","_InteractiveStreamHook","#decoder","#history","#method","data","arguments_","callback","element","message","RawReporter","#stringify","#stdout","#stderr","#interactiveManager","#interactive","function_","manager","interactive","meta","context","groups","type","items","formattedMessage","value","streamType","groupSpaces","writeStream","PailServerImpl","PailBrowserImpl","options","rawReporter","reporters","rest","name","reporter","PailServer","_getDefaultLogLevel","createPail","MessageFormatterProcessor","ErrorProcessor","PrettyReporter","pail"],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-extraneous-dependencies\nimport terminalSize from \"terminal-size\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport wrapAnsi from \"wrap-ansi\";\n\nimport type { InteractiveStreamHook } from \"./interactive-stream-hook\";\n\ntype StreamType = \"stderr\" | \"stdout\";\n\nexport class InteractiveManager {\n readonly #stream: {\n stderr: InteractiveStreamHook;\n stdout: InteractiveStreamHook;\n };\n\n #isActive = false;\n\n #isSuspended = false;\n\n #lastLength = 0;\n\n #outside = 0;\n\n public constructor(stdout: InteractiveStreamHook, stderr: InteractiveStreamHook) {\n this.#stream = {\n stderr,\n stdout,\n };\n }\n\n /**\n * Last printed rows count\n */\n public get lastLength(): number {\n return this.#lastLength;\n }\n\n /**\n * Rows count outside editable area\n */\n public get outside(): number {\n return this.#outside;\n }\n\n /**\n * Hook activity status\n */\n public get isHooked(): boolean {\n return this.#isActive;\n }\n\n /**\n * Suspend status for active hooks\n */\n public get isSuspended(): boolean {\n return this.#isSuspended;\n }\n\n /**\n * Removes from the bottom of output up the specified count of lines\n *\n * @param stream - Stream to remove lines from\n * @param count - lines count to remove\n */\n public erase(stream: StreamType, count = this.#lastLength): void {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n this.#stream[stream].erase(count);\n }\n\n /**\n * Hook stdout and stderr streams\n * @returns Success status\n */\n public hook(): boolean {\n if (!this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.active());\n\n this._clear(true);\n }\n\n return this.#isActive;\n }\n\n /**\n * Resume suspend hooks\n *\n * @param stream - Stream to resume\n * @param eraseRowCount - erase output rows count\n */\n public resume(stream: StreamType, eraseRowCount?: number): void {\n if (this.#isSuspended) {\n this.#isSuspended = false;\n\n if (eraseRowCount) {\n this.erase(stream, eraseRowCount);\n }\n\n this.#lastLength = 0;\n\n Object.values(this.#stream).forEach((hook) => hook.active());\n }\n }\n\n /**\n * Suspend active hooks for external output\n *\n * @param stream - Stream to suspend\n * @param erase - erase output\n */\n public suspend(stream: StreamType, erase = true): void {\n if (!this.#isSuspended) {\n this.#isSuspended = true;\n\n if (erase) {\n this.erase(stream);\n }\n\n Object.values(this.#stream).forEach((hook) => hook.renew());\n }\n }\n\n /**\n * Unhooks both stdout and stderr streams and print their story of logs\n *\n * @param separateHistory - If `true`, will add an empty line to the history output for individual recorded lines and console logs\n *\n * @returns Success status\n */\n public unhook(separateHistory = true): boolean {\n if (this.#isActive) {\n Object.values(this.#stream).forEach((hook) => hook.inactive(separateHistory));\n\n this._clear();\n }\n\n return !this.#isActive;\n }\n\n /**\n * Update output\n *\n * @param stream - Stream to write to\n * @param rows - Text lines to write to standard output\n * @param from - Index of the line starting from which the contents of the terminal are being overwritten\n */\n public update(stream: StreamType, rows: string[], from = 0): void {\n if (rows.length > 0) {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-unnecessary-condition\n if (this.#stream[stream] === undefined) {\n throw new TypeError(`Stream \"${stream}\" is not available`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const hook = this.#stream[stream];\n\n const { columns: width, rows: height } = terminalSize();\n\n const position = from > height ? height - 1 : Math.max(0, Math.min(height - 1, from));\n const actualLength = this.lastLength - position;\n const outside = Math.max(actualLength - height, this.outside);\n\n // eslint-disable-next-line unicorn/no-array-reduce\n let output = rows.reduce<string[]>(\n (accumulator, row) => [\n ...accumulator,\n wrapAnsi(row, width, {\n hard: true,\n trim: false,\n wordWrap: true,\n }),\n ],\n [],\n );\n\n if (height <= actualLength) {\n hook.erase(height);\n\n if (position < outside) {\n output = output.slice(outside - position + 1);\n }\n } else if (actualLength) {\n hook.erase(actualLength);\n }\n\n hook.write(output.join(\"\\n\") + \"\\n\");\n\n this.#lastLength = outside ? outside + output.length + 1 : output.length;\n this.#outside = Math.max(this.lastLength - height, this.outside);\n }\n }\n\n private _clear(status = false): void {\n this.#isActive = status;\n this.#lastLength = 0;\n this.#outside = 0;\n }\n}\n","import { StringDecoder } from \"node:string_decoder\";\n\nimport { cursorHide, cursorShow, eraseLines } from \"../util/ansi-escapes\";\n\nexport class InteractiveStreamHook {\n public static readonly DRAIN = true;\n\n readonly #decoder = new StringDecoder();\n\n #history: string[] = [];\n\n readonly #method: NodeJS.WriteStream[\"write\"];\n\n readonly #stream: NodeJS.WriteStream;\n\n public constructor(stream: NodeJS.WriteStream) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.#method = stream.write;\n this.#stream = stream;\n }\n\n public active(): void {\n this.write(cursorHide as string);\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment,@typescript-eslint/prefer-ts-expect-error\n // @ts-ignore - We are modifying the write method\n this.#stream.write = (data: Uint8Array | string, ...arguments_: [((error?: Error) => void)?] | [(string | undefined)?, ((error?: Error) => void)?]) => {\n const callback = arguments_.at(-1);\n\n this.#history.push(\n this.#decoder.write(\n typeof data === \"string\"\n ? Buffer.from(data, typeof arguments_[0] === \"string\" ? (arguments_[0] as BufferEncoding) : undefined)\n : Buffer.from(data),\n ),\n );\n\n if (typeof callback === \"function\") {\n callback();\n }\n\n return InteractiveStreamHook.DRAIN;\n };\n }\n\n public erase(count: number): void {\n if (count > 0) {\n this.write(eraseLines(count + 1) as string);\n }\n }\n\n public inactive(separateHistory = false): void {\n if (this.#history.length > 0) {\n if (separateHistory) {\n this.write(\"\\n\");\n }\n\n this.#history.forEach((element) => {\n this.write(element);\n });\n this.#history = [];\n }\n\n this.renew();\n }\n\n public renew(): void {\n this.#stream.write = this.#method;\n this.write(cursorShow as string);\n }\n\n public write(message: string): void {\n this.#method.apply(this.#stream, [message]);\n }\n}\n","const ESC = \"\\u001B[\";\n\nconst eraseScreen = ESC + \"2J\";\nconst eraseLine = ESC + \"2K\";\n\nconst cursorLeft = ESC + \"G\";\nconst cursorUp = (count = 1) => ESC + count + \"A\";\n\nexport const clearTerminal: string =\n process.platform === \"win32\"\n ? `${eraseScreen}${ESC}0f`\n : // 1. Erases the screen (Only done in case `2` is not supported)\n // 2. Erases the whole screen including scrollback buffer\n // 3. Moves cursor to the top-left position\n // More info: https://www.real-world-systems.com/docs/ANSIcode.html\n `${eraseScreen}${ESC}3J${ESC}H`;\n\nexport const cursorHide: string = ESC + \"?25l\";\nexport const cursorShow: string = ESC + \"?25h\";\n\nexport const eraseLines = (count: number): string => {\n let clear = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 0; index < count; index++) {\n clear += eraseLine + (index < count - 1 ? cursorUp() : \"\");\n }\n\n if (count) {\n clear += cursorLeft;\n }\n\n return clear;\n};\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { InteractiveManager } from \"../../interactive/interactive-manager\";\nimport type { ReadonlyMeta, StreamAwareReporter, StringifyAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\n\nexport class RawReporter<L extends string = never> implements StreamAwareReporter<L>, StringifyAwareReporter<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #stringify: typeof stringify | undefined;\n\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n #interactiveManager: InteractiveManager | undefined;\n\n #interactive = false;\n\n public constructor() {\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 // 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 public setInteractiveManager(manager?: InteractiveManager): void {\n this.#interactiveManager = manager;\n }\n\n public setIsInteractive(interactive: boolean): void {\n this.#interactive = interactive;\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n const { context, groups, message, type } = meta;\n\n const items: string[] = [];\n\n const formattedMessage: string | undefined = typeof message === \"string\" ? message : (this.#stringify as typeof stringify)(message);\n\n items.push(formattedMessage + \"\");\n\n if (context) {\n items.push(\n ...context.map((value) => {\n if (typeof value === \"object\") {\n return \" \" + (this.#stringify as typeof stringify)(value);\n }\n\n return \" \" + value;\n }),\n );\n }\n\n const streamType = [\"error\", \"trace\", \"warn\"].includes(type.level as string) ? \"stderr\" : \"stdout\";\n const stream = streamType === \"stderr\" ? this.#stderr : this.#stdout;\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n\n if (this.#interactive && this.#interactiveManager !== undefined && stream.isTTY) {\n this.#interactiveManager.update(streamType, (groupSpaces + items.join(\"\")).split(\"\\n\"), 0);\n } else {\n writeStream(groupSpaces + items.join(\"\"), stream);\n }\n }\n}\n","import { InteractiveManager } from \"./interactive/interactive-manager\";\nimport { InteractiveStreamHook } from \"./interactive/interactive-stream-hook\";\nimport { PailBrowserImpl } from \"./pail.browser\";\nimport { RawReporter } from \"./reporter/raw/raw.server\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n InteractiveStreamReporter,\n LiteralUnion,\n LoggerFunction,\n LoggerTypesAwareReporter,\n Reporter,\n ServerConstructorOptions,\n StreamAwareReporter,\n StringifyAwareReporter,\n} from \"./types\";\nimport { clearTerminal } from \"./util/ansi-escapes\";\n\nclass PailServerImpl<T extends string = never, L extends string = never> extends PailBrowserImpl<T, L> {\n protected readonly stdout: NodeJS.WriteStream;\n\n protected readonly stderr: NodeJS.WriteStream;\n\n protected interactiveManager: InteractiveManager | undefined;\n\n protected readonly interactive: boolean;\n\n public constructor(public readonly options: ServerConstructorOptions<T, L> = {}) {\n const { interactive, rawReporter, reporters, stderr, stdout, ...rest } = options;\n\n super(rest as ConstructorOptions<T, L>);\n\n this.interactive = interactive ?? false;\n\n this.stdout = stdout as NodeJS.WriteStream;\n this.stderr = stderr as NodeJS.WriteStream;\n\n if (this.interactive) {\n this.interactiveManager = new InteractiveManager(new InteractiveStreamHook(this.stdout), new InteractiveStreamHook(this.stderr));\n }\n\n if (Array.isArray(reporters)) {\n this.registerReporters(reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n }\n\n public override scope<N extends string = T>(...name: string[]): PailServerType<N, L> {\n if (name.length === 0) {\n throw new Error(\"No scope name was defined.\");\n }\n\n this.scopeName = name.flat();\n\n return this as unknown as PailServerType<N, L>;\n }\n\n public getInteractiveManager(): InteractiveManager | undefined {\n return this.interactiveManager;\n }\n\n public wrapStd() {\n this._wrapStream(this.stdout, \"log\");\n this._wrapStream(this.stderr, \"log\");\n }\n\n public restoreStd() {\n this._restoreStream(this.stdout);\n this._restoreStream(this.stderr);\n }\n\n public wrapAll(): void {\n this.wrapConsole();\n this.wrapStd();\n }\n\n public restoreAll(): void {\n this.restoreConsole();\n this.restoreStd();\n }\n\n public override clear(): void {\n this.stdout.write(clearTerminal as string);\n this.stderr.write(clearTerminal as string);\n }\n\n protected override extendReporter(reporter: Reporter<L>): Reporter<L> {\n if (typeof (reporter as StreamAwareReporter<L>).setStdout === \"function\") {\n (reporter as StreamAwareReporter<L>).setStdout(this.stdout);\n }\n\n if (typeof (reporter as StreamAwareReporter<L>).setStderr === \"function\") {\n (reporter as StreamAwareReporter<L>).setStderr(this.stderr);\n }\n\n if (typeof (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes === \"function\") {\n (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes(this.types);\n }\n\n if (typeof (reporter as StringifyAwareReporter<L>).setStringify === \"function\") {\n (reporter as StringifyAwareReporter<L>).setStringify(this.stringify);\n }\n\n if (typeof (reporter as InteractiveStreamReporter<L>).setIsInteractive === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setIsInteractive(this.interactive);\n }\n\n if (this.interactive && typeof (reporter as InteractiveStreamReporter<L>).setInteractiveManager === \"function\") {\n (reporter as InteractiveStreamReporter<L>).setInteractiveManager(this.interactiveManager);\n }\n\n return reporter;\n }\n\n private _wrapStream(stream: NodeJS.WriteStream | undefined, type: LiteralUnion<DefaultLogTypes, L>) {\n if (!stream) {\n return;\n }\n\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign,@typescript-eslint/unbound-method\n (stream as any).__write = stream.write;\n }\n\n // Override\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n (stream as any).write = (data: any): void => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n (this as unknown as PailServerImpl)[type].log(String(data).trim());\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n private _restoreStream(stream?: NodeJS.WriteStream): void {\n if (!stream) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((stream as any).__write) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n stream.write = (stream as any).__write;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-param-reassign\n delete (stream as any).__write;\n }\n }\n}\n\nexport type PailServerType<T extends string = never, L extends string = never> = PailServerImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ServerConstructorOptions<TC, LC>) => PailServerType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ServerConstructorOptions<T, L>) => PailServerType<T, L>;\n\nexport const PailServer = PailServerImpl as unknown as PailServerType;\n","import type { PailServerType } from \"./pail.server\";\nimport { PailServer } from \"./pail.server\";\nimport { ErrorProcessor } from \"./processor/error/error-processor\";\nimport { MessageFormatterProcessor } from \"./processor/message-formatter-processor\";\nimport { PrettyReporter } from \"./reporter/pretty/pretty.server\";\nimport type { ConstructorOptions, ExtendedRfc5424LogLevels } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst _getDefaultLogLevel = (): ExtendedRfc5424LogLevels => {\n if (process.env.NODE_ENV === \"debug\" || process.env.DEBUG !== undefined) {\n return \"debug\";\n }\n\n if (process.env.NODE_ENV === \"test\") {\n return \"warning\";\n }\n\n return \"informational\";\n};\n\nexport const createPail = <T extends string = never, L extends string = never>(options?: ConstructorOptions<T, L>): PailServerType<T, L> =>\n new PailServer<T, L>({\n logLevel: _getDefaultLogLevel(),\n processors: [new MessageFormatterProcessor<L>(), new ErrorProcessor<L>()],\n reporters: [new PrettyReporter()],\n stderr: process.stderr,\n stdout: process.stdout,\n ...options,\n });\n\nexport const pail = createPail();\n\nexport type { PailServerType as Pail } from \"./pail.server\";\nexport type {\n ConstructorOptions,\n DefaultLoggerTypes,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Processor,\n Reporter,\n StreamAwareReporter,\n} from \"./shared\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- export { a as MessageFormatterProcessor } from './chunk-SR3Q3EUO.js';
2
- //# sourceMappingURL=out.js.map
3
- //# sourceMappingURL=processor.browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
@@ -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":"kFAIO,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"]}