@visulima/pail 1.1.1 → 1.1.3

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.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkO34IIMWQ_cjs = require('./chunk-O34IIMWQ.cjs');
3
+ var chunkXQP4GKQU_cjs = require('./chunk-XQP4GKQU.cjs');
4
4
  var chunkZJMTPHZR_cjs = require('./chunk-ZJMTPHZR.cjs');
5
5
  require('./chunk-YP3U3DTV.cjs');
6
6
  require('./chunk-QINSQ6TU.cjs');
@@ -12,12 +12,12 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
12
  var c__default = /*#__PURE__*/_interopDefault(c);
13
13
 
14
14
  var a=class{_ready=!0;_stream;_name;constructor(t,r){this._stream=t,this._name=r;}write(t){this.writeStream(t);}end(...t){this._stream.end(...t);}writeStream(t){if(!this._ready){console.warn("Stream busy: "+this._name+'. Write will be dropped: "'+t+'"');return}this._ready=!1,this._stream.on("error",r=>{throw r}),this._stream.on("drain",()=>{this._ready=!0;}),this._stream.on("finish",()=>{this._ready=!0;}),this._ready=this._stream.write(t,()=>{});}};var n=class{_filePath;_immediate;_stream;_options;constructor(t,r=!1,e={}){this._filePath=t,this._immediate=r,this._options=e,this._immediate||(this._stream=rotatingFileStream.createStream(this._filePath,e));}write(t){let r=this._stream;this._immediate&&(r=rotatingFileStream.createStream(this._filePath,this._options));let e=new a(r,this._filePath);e.write(t),this._immediate&&e.end();}end(){this._stream!==void 0&&this._stream.end();}};var s=class{_stream;constructor(t){let{filePath:r,writeImmediately:e=!1,...h}=t;this._stream=new n(r,e,h);}log(t){this._stream.write(this._formatMessage(t)+`
15
- `);}};var p=class extends s{#t;constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});}setStringify(t){this.#t=t;}_formatMessage(t){let{type:r,...e}=t;return e.label&&(e.label=e.label.trim()),e.file&&(e.file=e.file.name+":"+e.file.line+(e.file.column?":"+e.file.column:"")),this.#t(e)}};var m=class extends chunkZJMTPHZR_cjs.a{#t;#e;constructor(){super(),this.#t=c__default.default.stdout,this.#e=c__default.default.stderr;}setStdout(t){this.#t=t;}setStderr(t){this.#e=t;}_log(t,r){let e=["error","warn"].includes(r)?this.#e:this.#t;chunkO34IIMWQ_cjs.a(t+`
15
+ `);}};var p=class extends s{#t;constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});}setStringify(t){this.#t=t;}_formatMessage(t){let{type:r,...e}=t;return e.label&&(e.label=e.label.trim()),e.file&&(e.file=e.file.name+":"+e.file.line+(e.file.column?":"+e.file.column:"")),this.#t(e)}};var m=class extends chunkZJMTPHZR_cjs.a{#t;#e;constructor(){super(),this.#t=c__default.default.stdout,this.#e=c__default.default.stderr;}setStdout(t){this.#t=t;}setStderr(t){this.#e=t;}_log(t,r){let e=["error","warn"].includes(r)?this.#e:this.#t;chunkXQP4GKQU_cjs.c(t+`
16
16
  `,e);}};
17
17
 
18
18
  Object.defineProperty(exports, 'PrettyReporter', {
19
19
  enumerable: true,
20
- get: function () { return chunkO34IIMWQ_cjs.b; }
20
+ get: function () { return chunkXQP4GKQU_cjs.d; }
21
21
  });
22
22
  exports.AbstractFileReporter = s;
23
23
  exports.JsonFileReporter = p;
@@ -1,5 +1,5 @@
1
- import { a as a$1 } from './chunk-ETY4VGL2.js';
2
- export { b as PrettyReporter } from './chunk-ETY4VGL2.js';
1
+ import { c } from './chunk-JGZNXQSY.js';
2
+ export { d as PrettyReporter } from './chunk-JGZNXQSY.js';
3
3
  import { a } from './chunk-TAH23BHM.js';
4
4
  import './chunk-ZB7IIFHO.js';
5
5
  import './chunk-NF47XQ47.js';
@@ -7,7 +7,7 @@ import { createStream } from 'rotating-file-stream';
7
7
  import h from 'node:process';
8
8
 
9
9
  var n=class{_ready=!0;_stream;_name;constructor(t,r){this._stream=t,this._name=r;}write(t){this.writeStream(t);}end(...t){this._stream.end(...t);}writeStream(t){if(!this._ready){console.warn("Stream busy: "+this._name+'. Write will be dropped: "'+t+'"');return}this._ready=!1,this._stream.on("error",r=>{throw r}),this._stream.on("drain",()=>{this._ready=!0;}),this._stream.on("finish",()=>{this._ready=!0;}),this._ready=this._stream.write(t,()=>{});}};var p=class{_filePath;_immediate;_stream;_options;constructor(t,r=!1,e={}){this._filePath=t,this._immediate=r,this._options=e,this._immediate||(this._stream=createStream(this._filePath,e));}write(t){let r=this._stream;this._immediate&&(r=createStream(this._filePath,this._options));let e=new n(r,this._filePath);e.write(t),this._immediate&&e.end();}end(){this._stream!==void 0&&this._stream.end();}};var o=class{_stream;constructor(t){let{filePath:r,writeImmediately:e=!1,...y}=t;this._stream=new p(r,e,y);}log(t){this._stream.write(this._formatMessage(t)+`
10
- `);}};var m=class extends o{#t;constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});}setStringify(t){this.#t=t;}_formatMessage(t){let{type:r,...e}=t;return e.label&&(e.label=e.label.trim()),e.file&&(e.file=e.file.name+":"+e.file.line+(e.file.column?":"+e.file.column:"")),this.#t(e)}};var l=class extends a{#t;#e;constructor(){super(),this.#t=h.stdout,this.#e=h.stderr;}setStdout(t){this.#t=t;}setStderr(t){this.#e=t;}_log(t,r){let e=["error","warn"].includes(r)?this.#e:this.#t;a$1(t+`
10
+ `);}};var m=class extends o{#t;constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});}setStringify(t){this.#t=t;}_formatMessage(t){let{type:r,...e}=t;return e.label&&(e.label=e.label.trim()),e.file&&(e.file=e.file.name+":"+e.file.line+(e.file.column?":"+e.file.column:"")),this.#t(e)}};var l=class extends a{#t;#e;constructor(){super(),this.#t=h.stdout,this.#e=h.stderr;}setStdout(t){this.#t=t;}setStderr(t){this.#e=t;}_log(t,r){let e=["error","warn"].includes(r)?this.#e:this.#t;c(t+`
11
11
  `,e);}};
12
12
 
13
13
  export { o as AbstractFileReporter, m as JsonFileReporter, l as JsonReporter };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/pail",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "Find a file or directory by walking up parent directories.",
5
5
  "keywords": [
6
6
  "anolilab",
@@ -179,41 +179,41 @@
179
179
  "test:watch": "vitest"
180
180
  },
181
181
  "dependencies": {
182
- "@visulima/colorize": "1.3.0",
183
- "@visulima/fmt": "1.1.3",
184
- "safe-stable-stringify": "^2.4.3",
185
- "string-length": "^6.0.0",
186
- "terminal-size": "^4.0.0",
187
- "wrap-ansi": "^9.0.0"
182
+ "@visulima/colorize": "1.3.1",
183
+ "@visulima/fmt": "1.1.4",
184
+ "safe-stable-stringify": "^2.4.3"
188
185
  },
189
186
  "devDependencies": {
190
187
  "@anolilab/eslint-config": "^15.0.3",
191
188
  "@anolilab/prettier-config": "^5.0.14",
192
189
  "@anolilab/semantic-release-preset": "^8.0.3",
193
- "@babel/core": "^7.24.0",
190
+ "@babel/core": "^7.24.3",
194
191
  "@rushstack/eslint-plugin-security": "^0.8.1",
195
192
  "@secretlint/secretlint-rule-preset-recommend": "^8.1.2",
196
193
  "@total-typescript/ts-reset": "^0.5.1",
197
194
  "@types/node": "18.18.8",
198
- "@vitest/coverage-v8": "^1.3.1",
199
- "@vitest/ui": "^1.3.1",
195
+ "@vitest/coverage-v8": "^1.4.0",
196
+ "@vitest/ui": "^1.4.0",
200
197
  "cross-env": "^7.0.3",
201
198
  "eslint": "^8.57.0",
202
199
  "eslint-plugin-deprecation": "^2.0.0",
203
200
  "eslint-plugin-etc": "^2.0.3",
204
201
  "eslint-plugin-import": "npm:eslint-plugin-i@^2.29.1",
205
202
  "eslint-plugin-mdx": "^3.1.5",
206
- "eslint-plugin-vitest": "^0.3.22",
207
- "eslint-plugin-vitest-globals": "^1.4.0",
203
+ "eslint-plugin-vitest": "^0.3.26",
204
+ "eslint-plugin-vitest-globals": "^1.5.0",
208
205
  "prettier": "^3.2.5",
209
206
  "rimraf": "^5.0.5",
210
207
  "rotating-file-stream": "^3.2.1",
211
208
  "secretlint": "8.1.2",
212
- "semantic-release": "^23.0.2",
209
+ "semantic-release": "^23.0.5",
213
210
  "sort-package-json": "^2.8.0",
211
+ "string-length": "^6.0.0",
212
+ "terminal-size": "^4.0.0",
214
213
  "tsup": "^8.0.2",
215
- "typescript": "^5.4.2",
216
- "vitest": "^1.3.1"
214
+ "typescript": "^5.4.3",
215
+ "vitest": "^1.4.0",
216
+ "wrap-ansi": "^9.0.0"
217
217
  },
218
218
  "peerDependencies": {
219
219
  "rotating-file-stream": "^3.1.1"
@@ -226,6 +226,11 @@
226
226
  "engines": {
227
227
  "node": ">=18.* <=21.*"
228
228
  },
229
+ "os": [
230
+ "darwin",
231
+ "linux",
232
+ "win32"
233
+ ],
229
234
  "publishConfig": {
230
235
  "access": "public",
231
236
  "provenance": true
@@ -1,21 +0,0 @@
1
- import { b, a } from './chunk-ZB7IIFHO.js';
2
- import { c } from './chunk-NF47XQ47.js';
3
- import U, { white, grey, bgGrey, underline, red, cyan, bold } from '@visulima/colorize';
4
- import L from 'string-length';
5
- import F from 'terminal-size';
6
- import z from 'wrap-ansi';
7
-
8
- var W=(v,e)=>(e.__write??e.write).call(e,v);var A=class extends b{#e;#t;#r;#s=!1;constructor(e={}){super({uppercase:{label:!0,...e.uppercase},...e}),this.#e=process.stdout,this.#t=process.stderr;}setStdout(e){this.#e=e;}setStderr(e){this.#t=e;}setInteractiveManager(e){this.#r=e;}setIsInteractive(e){this.#s=e;}log(e){this._log(this._formatMessage(e),e.type.level);}_formatMessage(e){let{columns:r}=F(),s=r;typeof this._styles.messageLength=="number"&&(s=this._styles.messageLength);let{badge:o,context:u,date:y,error:g,file:a$1,groups:f,label:n,message:p,prefix:c$1,repeated:S,scope:d,suffix:b,traceError:M,type:J}=e,{color:w}=this._loggerTypes[J.name],x=w?U[w]:white,h=f.map(()=>" ").join(""),t=[];if(f.length>0&&t.push(h+grey("["+f.at(-1)+"] ")),y&&t.push(grey(this._styles.dateFormatter(new Date(y)))+" "),o)t.push(x(o));else {let l=a(this._loggerTypes);l.length>0&&t.push(grey(".".repeat(l.length))+" ");}let T=c(this._loggerTypes);n?t.push(x(this._formatLabel(n))+" ",grey(".".repeat(T.length-L(n)))):t.push(grey(".".repeat(T.length+2))),S&&t.push(bgGrey.white("["+S+"x]")+" "),Array.isArray(d)&&d.length>0&&t.push(grey(" ["+d.join(" > ")+"] ")),c$1&&t.push(grey((Array.isArray(d)&&d.length>0?". ":" ")+"["+(this._styles.underline.prefix?underline(c$1):c$1)+"] "));let E=L(t.join(" "));if(a$1){let l=a$1.name+(a$1.line?":"+a$1.line:""),m=L(l);t.push(grey(".".repeat(s-E-m-2)+" "+l));}else t.push(grey(".".repeat(s-E-1)));if(t.length>0&&t.push(`
9
-
10
- `),p){let l=typeof p=="string"?p:this._stringify(p);t.push(h+z(l??"undefined",s-3,{hard:!0,trim:!0,wordWrap:!0})),u&&t.push(...u.map(m=>typeof m=="object"?" "+this._stringify(m):" "+m));}return g&&t.push(this._formatError(g,s,h)),M&&t.push(this._formatError(M,s,h,!0)),b&&t.push(`
11
- `,h+grey(this._styles.underline.suffix?underline(b):b)),t.join("")+`
12
- `}_log(e,r){let s=["error","trace","warn"].includes(r)?"stderr":"stdout",o=s==="stderr"?this.#t:this.#e;this.#s&&this.#r!==void 0&&o.isTTY?this.#r.update(s,e.split(`
13
- `),0):W(e+`
14
- `,o);}_formatError(e,r,s,o=!1){let{message:u,name:y,stack:g}=e,a=[];if(a.push(...o?[]:[s+red(y),": "],z(u,r-3,{hard:!0,trim:!0,wordWrap:!0})),g){let f=g.split(`
15
- `).splice(1).map(n=>s+n.trim().replace("file://","")).filter(n=>!n.includes("/pail/dist"));a.push(`
16
- `,f.map(n=>" "+n.replace(/^at +/,p=>grey(p)).replace(/\((.+)\)/,(p,c)=>"("+cyan(c)+")")).join(`
17
- `));}return a.join("")}_formatLabel(e){let r=this._styles.uppercase.label?e.toUpperCase():e;return r=this._styles.underline.label?underline(r):r,this._styles.bold.label&&(r=bold(r)),r}};
18
-
19
- export { W as a, A as b };
20
- //# sourceMappingURL=out.js.map
21
- //# sourceMappingURL=chunk-ETY4VGL2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/reporter/pretty/pretty.server.ts","../src/util/write-stream.ts"],"names":["colorize","bgGrey","bold","cyan","grey","red","underline","white","stringLength","terminalSize","wrapAnsi","writeStream","data","stream","PrettyReporter","AbstractPrettyReporter","#stdout","#stderr","#interactiveManager","#interactive","options","stdout","stderr","manager","interactive","meta","columns","size","badge","context","date","error","file","groups","label","message","prefix","repeated","scope","suffix","traceError","type","color","colorized","groupSpaces","items","longestBadge","getLongestBadge","longestLabel","getLongestLabel","titleSize","fileMessage","fileMessageSize","formattedMessage","value","logLevel","streamType","hideName","name","stack","lines","line","m","_","formattedLabel"],"mappings":"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","sourcesContent":["import colorize, { bgGrey, bold, cyan, grey, red, underline, white } from \"@visulima/colorize\";\nimport type { stringify } from \"safe-stable-stringify\";\nimport stringLength from \"string-length\";\nimport terminalSize from \"terminal-size\";\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 items.push(grey(\".\".repeat(size - titleSize - fileMessageSize - 2) + \" \" + fileMessage));\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 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\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 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,31 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkYP3U3DTV_cjs = require('./chunk-YP3U3DTV.cjs');
4
- var chunkQINSQ6TU_cjs = require('./chunk-QINSQ6TU.cjs');
5
- var P = require('@visulima/colorize');
6
- var L = require('string-length');
7
- var D = require('terminal-size');
8
- var z = require('wrap-ansi');
9
-
10
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
-
12
- var P__default = /*#__PURE__*/_interopDefault(P);
13
- var L__default = /*#__PURE__*/_interopDefault(L);
14
- var D__default = /*#__PURE__*/_interopDefault(D);
15
- var z__default = /*#__PURE__*/_interopDefault(z);
16
-
17
- var W=(v,e)=>(e.__write??e.write).call(e,v);var A=class extends chunkYP3U3DTV_cjs.b{#e;#t;#r;#s=!1;constructor(e={}){super({uppercase:{label:!0,...e.uppercase},...e}),this.#e=process.stdout,this.#t=process.stderr;}setStdout(e){this.#e=e;}setStderr(e){this.#t=e;}setInteractiveManager(e){this.#r=e;}setIsInteractive(e){this.#s=e;}log(e){this._log(this._formatMessage(e),e.type.level);}_formatMessage(e){let{columns:r}=D__default.default(),s=r;typeof this._styles.messageLength=="number"&&(s=this._styles.messageLength);let{badge:o,context:u,date:y,error:g,file:a,groups:f,label:n,message:p,prefix:c,repeated:S,scope:d,suffix:b,traceError:M,type:J}=e,{color:w}=this._loggerTypes[J.name],x=w?P__default.default[w]:P.white,h=f.map(()=>" ").join(""),t=[];if(f.length>0&&t.push(h+P.grey("["+f.at(-1)+"] ")),y&&t.push(P.grey(this._styles.dateFormatter(new Date(y)))+" "),o)t.push(x(o));else {let l=chunkYP3U3DTV_cjs.a(this._loggerTypes);l.length>0&&t.push(P.grey(".".repeat(l.length))+" ");}let T=chunkQINSQ6TU_cjs.c(this._loggerTypes);n?t.push(x(this._formatLabel(n))+" ",P.grey(".".repeat(T.length-L__default.default(n)))):t.push(P.grey(".".repeat(T.length+2))),S&&t.push(P.bgGrey.white("["+S+"x]")+" "),Array.isArray(d)&&d.length>0&&t.push(P.grey(" ["+d.join(" > ")+"] ")),c&&t.push(P.grey((Array.isArray(d)&&d.length>0?". ":" ")+"["+(this._styles.underline.prefix?P.underline(c):c)+"] "));let E=L__default.default(t.join(" "));if(a){let l=a.name+(a.line?":"+a.line:""),m=L__default.default(l);t.push(P.grey(".".repeat(s-E-m-2)+" "+l));}else t.push(P.grey(".".repeat(s-E-1)));if(t.length>0&&t.push(`
18
-
19
- `),p){let l=typeof p=="string"?p:this._stringify(p);t.push(h+z__default.default(l??"undefined",s-3,{hard:!0,trim:!0,wordWrap:!0})),u&&t.push(...u.map(m=>typeof m=="object"?" "+this._stringify(m):" "+m));}return g&&t.push(this._formatError(g,s,h)),M&&t.push(this._formatError(M,s,h,!0)),b&&t.push(`
20
- `,h+P.grey(this._styles.underline.suffix?P.underline(b):b)),t.join("")+`
21
- `}_log(e,r){let s=["error","trace","warn"].includes(r)?"stderr":"stdout",o=s==="stderr"?this.#t:this.#e;this.#s&&this.#r!==void 0&&o.isTTY?this.#r.update(s,e.split(`
22
- `),0):W(e+`
23
- `,o);}_formatError(e,r,s,o=!1){let{message:u,name:y,stack:g}=e,a=[];if(a.push(...o?[]:[s+P.red(y),": "],z__default.default(u,r-3,{hard:!0,trim:!0,wordWrap:!0})),g){let f=g.split(`
24
- `).splice(1).map(n=>s+n.trim().replace("file://","")).filter(n=>!n.includes("/pail/dist"));a.push(`
25
- `,f.map(n=>" "+n.replace(/^at +/,p=>P.grey(p)).replace(/\((.+)\)/,(p,c)=>"("+P.cyan(c)+")")).join(`
26
- `));}return a.join("")}_formatLabel(e){let r=this._styles.uppercase.label?e.toUpperCase():e;return r=this._styles.underline.label?P.underline(r):r,this._styles.bold.label&&(r=P.bold(r)),r}};
27
-
28
- exports.a = W;
29
- exports.b = A;
30
- //# sourceMappingURL=out.js.map
31
- //# sourceMappingURL=chunk-O34IIMWQ.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/reporter/pretty/pretty.server.ts","../src/util/write-stream.ts"],"names":["colorize","bgGrey","bold","cyan","grey","red","underline","white","stringLength","terminalSize","wrapAnsi","writeStream","data","stream","PrettyReporter","AbstractPrettyReporter","#stdout","#stderr","#interactiveManager","#interactive","options","stdout","stderr","manager","interactive","meta","columns","size","badge","context","date","error","file","groups","label","message","prefix","repeated","scope","suffix","traceError","type","color","colorized","groupSpaces","items","longestBadge","getLongestBadge","longestLabel","getLongestLabel","titleSize","fileMessage","fileMessageSize","formattedMessage","value","logLevel","streamType","hideName","name","stack","lines","line","m","_","formattedLabel"],"mappings":"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","sourcesContent":["import colorize, { bgGrey, bold, cyan, grey, red, underline, white } from \"@visulima/colorize\";\nimport type { stringify } from \"safe-stable-stringify\";\nimport stringLength from \"string-length\";\nimport terminalSize from \"terminal-size\";\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 items.push(grey(\".\".repeat(size - titleSize - fileMessageSize - 2) + \" \" + fileMessage));\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 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\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 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"]}