@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.
- package/CHANGELOG.md +21 -0
- package/dist/chunk-JGZNXQSY.js +29 -0
- package/dist/chunk-JGZNXQSY.js.map +1 -0
- package/dist/chunk-XQP4GKQU.cjs +41 -0
- package/dist/chunk-XQP4GKQU.cjs.map +1 -0
- package/dist/index.server.cjs +5 -12
- package/dist/index.server.cjs.map +1 -1
- package/dist/index.server.js +5 -7
- package/dist/index.server.js.map +1 -1
- package/dist/reporter.server.cjs +3 -3
- package/dist/reporter.server.js +3 -3
- package/package.json +20 -15
- package/dist/chunk-ETY4VGL2.js +0 -21
- package/dist/chunk-ETY4VGL2.js.map +0 -1
- package/dist/chunk-O34IIMWQ.cjs +0 -31
- package/dist/chunk-O34IIMWQ.cjs.map +0 -1
package/dist/reporter.server.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
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;
|
|
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
|
|
20
|
+
get: function () { return chunkXQP4GKQU_cjs.d; }
|
|
21
21
|
});
|
|
22
22
|
exports.AbstractFileReporter = s;
|
|
23
23
|
exports.JsonFileReporter = p;
|
package/dist/reporter.server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
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;
|
|
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.
|
|
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.
|
|
183
|
-
"@visulima/fmt": "1.1.
|
|
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.
|
|
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.
|
|
199
|
-
"@vitest/ui": "^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.
|
|
207
|
-
"eslint-plugin-vitest-globals": "^1.
|
|
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.
|
|
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.
|
|
216
|
-
"vitest": "^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
|
package/dist/chunk-ETY4VGL2.js
DELETED
|
@@ -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"]}
|
package/dist/chunk-O34IIMWQ.cjs
DELETED
|
@@ -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"]}
|