@visulima/pail 1.0.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.
- package/CHANGELOG.md +53 -0
- package/LICENSE.md +21 -0
- package/README.md +420 -0
- package/dist/abstract-pretty-reporter-dDQbeuZX.d.cts +37 -0
- package/dist/abstract-pretty-reporter-doXJ0wsq.d.ts +37 -0
- package/dist/chunk-32FAOPTJ.cjs +10 -0
- package/dist/chunk-32FAOPTJ.cjs.map +1 -0
- package/dist/chunk-46NTLZF7.cjs +10 -0
- package/dist/chunk-46NTLZF7.cjs.map +1 -0
- package/dist/chunk-4RK45K5E.cjs +7 -0
- package/dist/chunk-4RK45K5E.cjs.map +1 -0
- package/dist/chunk-57OYT2NC.js +7 -0
- package/dist/chunk-57OYT2NC.js.map +1 -0
- package/dist/chunk-6ATEEAVC.cjs +9 -0
- package/dist/chunk-6ATEEAVC.cjs.map +1 -0
- package/dist/chunk-7OFJLC7L.cjs +7 -0
- package/dist/chunk-7OFJLC7L.cjs.map +1 -0
- package/dist/chunk-EBP7SMYV.js +5 -0
- package/dist/chunk-EBP7SMYV.js.map +1 -0
- package/dist/chunk-FJCEDFRI.js +9 -0
- package/dist/chunk-FJCEDFRI.js.map +1 -0
- package/dist/chunk-G62M5WJH.js +8 -0
- package/dist/chunk-G62M5WJH.js.map +1 -0
- package/dist/chunk-GZRIZCRG.cjs +32 -0
- package/dist/chunk-GZRIZCRG.cjs.map +1 -0
- package/dist/chunk-HKIS52YX.js +22 -0
- package/dist/chunk-HKIS52YX.js.map +1 -0
- package/dist/chunk-ICPHL4AR.js +8 -0
- package/dist/chunk-ICPHL4AR.js.map +1 -0
- package/dist/chunk-IQF3SXQR.cjs +10 -0
- package/dist/chunk-IQF3SXQR.cjs.map +1 -0
- package/dist/chunk-JYHWIRFR.js +5 -0
- package/dist/chunk-JYHWIRFR.js.map +1 -0
- package/dist/chunk-MU2CRXVO.cjs +9 -0
- package/dist/chunk-MU2CRXVO.cjs.map +1 -0
- package/dist/chunk-PVAYQO5O.js +5 -0
- package/dist/chunk-PVAYQO5O.js.map +1 -0
- package/dist/chunk-Y36365SA.cjs +13 -0
- package/dist/chunk-Y36365SA.cjs.map +1 -0
- package/dist/chunk-YKHMQW6V.js +5 -0
- package/dist/chunk-YKHMQW6V.js.map +1 -0
- package/dist/index.browser.cjs +16 -0
- package/dist/index.browser.cjs.map +1 -0
- package/dist/index.browser.d.cts +11 -0
- package/dist/index.browser.d.ts +11 -0
- package/dist/index.browser.js +13 -0
- package/dist/index.browser.js.map +1 -0
- package/dist/index.server.cjs +28 -0
- package/dist/index.server.cjs.map +1 -0
- package/dist/index.server.d.cts +31 -0
- package/dist/index.server.d.ts +31 -0
- package/dist/index.server.js +20 -0
- package/dist/index.server.js.map +1 -0
- package/dist/pail.browser-DH-2bBhK.d.ts +59 -0
- package/dist/pail.browser-eQgV1vak.d.cts +59 -0
- package/dist/processor.browser.cjs +13 -0
- package/dist/processor.browser.cjs.map +1 -0
- package/dist/processor.browser.d.cts +16 -0
- package/dist/processor.browser.d.ts +16 -0
- package/dist/processor.browser.js +4 -0
- package/dist/processor.browser.js.map +1 -0
- package/dist/processor.server.cjs +14 -0
- package/dist/processor.server.cjs.map +1 -0
- package/dist/processor.server.d.cts +22 -0
- package/dist/processor.server.d.ts +22 -0
- package/dist/processor.server.js +8 -0
- package/dist/processor.server.js.map +1 -0
- package/dist/reporter.browser.cjs +28 -0
- package/dist/reporter.browser.cjs.map +1 -0
- package/dist/reporter.browser.d.cts +18 -0
- package/dist/reporter.browser.d.ts +18 -0
- package/dist/reporter.browser.js +18 -0
- package/dist/reporter.browser.js.map +1 -0
- package/dist/reporter.server.cjs +27 -0
- package/dist/reporter.server.cjs.map +1 -0
- package/dist/reporter.server.d.cts +58 -0
- package/dist/reporter.server.d.ts +58 -0
- package/dist/reporter.server.js +16 -0
- package/dist/reporter.server.js.map +1 -0
- package/dist/types.d-RNxsa9NR.d.cts +155 -0
- package/dist/types.d-RNxsa9NR.d.ts +155 -0
- package/package.json +256 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk32FAOPTJ_cjs = require('./chunk-32FAOPTJ.cjs');
|
|
4
|
+
var chunk4RK45K5E_cjs = require('./chunk-4RK45K5E.cjs');
|
|
5
|
+
require('./chunk-7OFJLC7L.cjs');
|
|
6
|
+
var chunk46NTLZF7_cjs = require('./chunk-46NTLZF7.cjs');
|
|
7
|
+
var chunkMU2CRXVO_cjs = require('./chunk-MU2CRXVO.cjs');
|
|
8
|
+
require('./chunk-6ATEEAVC.cjs');
|
|
9
|
+
var z = require('@visulima/colorize/browser');
|
|
10
|
+
var fmt = require('@visulima/fmt');
|
|
11
|
+
|
|
12
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
|
|
14
|
+
var z__default = /*#__PURE__*/_interopDefault(z);
|
|
15
|
+
|
|
16
|
+
var m=class extends chunk46NTLZF7_cjs.b{constructor(r={}){super({uppercase:{label:!0,...r.uppercase},...r});}log(r){let t=typeof window<"u"&&typeof window.document<"u",w=chunk4RK45K5E_cjs.a(r.type.level),{badge:b,context:L,date:x,error:_,groups:p,label:u,message:k,prefix:f,repeated:c,scope:g,suffix:h,type:D}=r,{color:S}=this._loggerTypes[D.name],T=S?z__default.default[S]:z.white,e=[];if(t&&p.length>0){let s=p.map(()=>" ").join(""),n=z.grey("["+p.at(-1)+"]");e.push(fmt.format(s+n[0],n.slice(1)));}if(x){let s=z.grey(this._styles.dateFormatter(new Date(x)));t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0]+" ",...s.slice(1)]);}if(b){let s=T(b);t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0]+" ",...s.slice(1)]);}else {let s=chunk46NTLZF7_cjs.a(this._loggerTypes);if(s.length>0){let n=z.grey(".".repeat(s.length));t?e.push(fmt.format(n[0]+" ",n.slice(1))):e.push([n[0]+" ",...n.slice(1)]);}}let v=chunkMU2CRXVO_cjs.c(this._loggerTypes),d;if(c){let s=z.white("["+c+"x]");d=t?fmt.format(s[0],s.slice(1)):[s[0],...s.slice(1)];}if(u){let s=T(this._formatLabel(u));t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]),d&&e.push(d);let n=v.length-u.length;if(c?n-=String(c).length+3:n+=1,n>0){let a=z.grey(".".repeat(n));t?e.push(fmt.format(a[0],a.slice(1))):e.push([" "+a[0],...a.slice(1)]);}}else {let s=z.grey(".".repeat(v.length+1));t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(Array.isArray(g)&&g.length>0){let s=z.grey("["+g.join(" > ")+"]");t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(f){let s=z.grey((Array.isArray(g)&&g.length>0?". ":" ")+"["+(this._styles.underline.prefix?z.underline(f):f)+"] ");t?e.push(fmt.format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(k&&(e.push(k),L&&e.push(...L)),_&&e.push(_,`
|
|
17
|
+
|
|
18
|
+
`),h){let s=z.grey(this._styles.underline.suffix?z.underline(h):h);t?e.push(fmt.format(`
|
|
19
|
+
`+s[0],s.slice(1))):e.push([`
|
|
20
|
+
`+s[0],...s.slice(1)]);}if(t)w(...e);else {let s="",n=[],a=[];for(let l of e)Array.isArray(l)&&l.length>1&&l[0].includes("%c")?(s+=l[0],n.push(...l.slice(1))):a.push(l);w(s+"%c",...n,"",...a);}}_formatLabel(r){let t=this._styles.uppercase.label?r.toUpperCase():r;return t=this._styles.underline.label?z.underline(t):t,this._styles.bold.label&&(t=z.bold(t)),t}};
|
|
21
|
+
|
|
22
|
+
Object.defineProperty(exports, 'JsonReporter', {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get: function () { return chunk32FAOPTJ_cjs.a; }
|
|
25
|
+
});
|
|
26
|
+
exports.PrettyReporter = m;
|
|
27
|
+
//# sourceMappingURL=out.js.map
|
|
28
|
+
//# sourceMappingURL=reporter.browser.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/reporter/pretty/pretty.browser.ts"],"names":["colorize","bold","grey","underline","white","format","PrettyReporter","AbstractPrettyReporter","options","meta","isNotBrowser","consoleLogFunction","writeConsoleLogBasedOnLevel","badge","context","date","error","groups","label","message","prefix","repeated","scope","suffix","type","color","colorized","items","groupSpaces","cGroup","cDate","cBadge","longestBadge","getLongestBadge","cBadgePlaceholder","longestLabel","getLongestLabel","repeatedMessage","cRepeated","cLabel","lengthDiff","cLabelSpacer","cSpacer","cScope","cPrefix","cSuffix","logMessage","css","arguments_","value","formattedLabel"],"mappings":"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","sourcesContent":["import colorize, { bold, grey, underline, white } from \"@visulima/colorize/browser\";\nimport { format } from \"@visulima/fmt\";\n\nimport type { ReadonlyMeta } from \"../../types\";\nimport { getLongestBadge } from \"../../util/get-longest-badge\";\nimport { getLongestLabel } from \"../../util/get-longest-label\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\nimport type { PrettyStyleOptions } from \"./abstract-pretty-reporter\";\nimport { AbstractPrettyReporter } from \"./abstract-pretty-reporter\";\n\nexport class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> {\n public constructor(options: Partial<PrettyStyleOptions> = {}) {\n super({\n uppercase: {\n label: true,\n ...options.uppercase,\n },\n ...options,\n });\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public log(meta: ReadonlyMeta<L>): void {\n // eslint-disable-next-line unicorn/no-typeof-undefined,@typescript-eslint/prefer-optional-chain\n const isNotBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n const consoleLogFunction = writeConsoleLogBasedOnLevel(meta.type.level);\n\n const { badge, context, date, error, groups, label, message, prefix, repeated, scope, suffix, type } = meta;\n\n const { color } = this._loggerTypes[type.name as keyof typeof this._loggerTypes];\n // eslint-disable-next-line security/detect-object-injection\n const colorized = color ? colorize[color] : white;\n\n const items = [];\n\n if (isNotBrowser && groups.length > 0) {\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n const cGroup = grey(\"[\" + (groups.at(-1) as string) + \"]\");\n\n items.push(format(groupSpaces + (cGroup[0] as string), cGroup.slice(1) as unknown as string[]));\n }\n\n if (date) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const cDate = grey(this._styles.dateFormatter(new Date(date)));\n\n if (isNotBrowser) {\n items.push(format(cDate[0] as string, cDate.slice(1) as unknown as string[]));\n } else {\n items.push([(cDate[0] as string) + \" \", ...cDate.slice(1)]);\n }\n }\n\n if (badge) {\n const cBadge = colorized(badge);\n\n if (isNotBrowser) {\n items.push(format(cBadge[0] as string, cBadge.slice(1) as unknown as string[]));\n } else {\n items.push([cBadge[0] + \" \", ...cBadge.slice(1)]);\n }\n } else {\n const longestBadge: string = getLongestBadge<L, T>(this._loggerTypes);\n\n if (longestBadge.length > 0) {\n const cBadgePlaceholder = grey(\".\".repeat(longestBadge.length));\n\n if (isNotBrowser) {\n items.push(format((cBadgePlaceholder[0] as string) + \" \", cBadgePlaceholder.slice(1) as unknown as string[]));\n } else {\n items.push([(cBadgePlaceholder[0] as string) + \" \", ...cBadgePlaceholder.slice(1)]);\n }\n }\n }\n\n const longestLabel = getLongestLabel<L, T>(this._loggerTypes);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let repeatedMessage: any[] | string | undefined;\n\n if (repeated) {\n const cRepeated = white(\"[\" + repeated + \"x]\");\n\n repeatedMessage = isNotBrowser\n ? (format(cRepeated[0] as string, cRepeated.slice(1) as unknown as string[]) as string)\n : [cRepeated[0], ...cRepeated.slice(1)];\n }\n\n if (label) {\n const cLabel = colorized(this._formatLabel(label as string));\n\n if (isNotBrowser) {\n items.push(format(cLabel[0] as string, cLabel.slice(1) as unknown as string[]));\n } else {\n items.push([cLabel[0], ...cLabel.slice(1)]);\n }\n\n if (repeatedMessage) {\n items.push(repeatedMessage);\n }\n\n let lengthDiff = (longestLabel as string).length - (label as string).length;\n\n if (repeated) {\n lengthDiff -= String(repeated).length + 3;\n } else {\n lengthDiff += 1;\n }\n\n if (lengthDiff > 0) {\n const cLabelSpacer = grey(\".\".repeat(lengthDiff));\n\n if (isNotBrowser) {\n items.push(format(cLabelSpacer[0] as string, cLabelSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([\" \" + cLabelSpacer[0], ...cLabelSpacer.slice(1)]);\n }\n }\n } else {\n const cSpacer = grey(\".\".repeat((longestLabel as string).length + 1));\n\n if (isNotBrowser) {\n items.push(format(cSpacer[0] as string, cSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([cSpacer[0], ...cSpacer.slice(1)]);\n }\n }\n\n if (Array.isArray(scope) && scope.length > 0) {\n const cScope = grey(\"[\" + scope.join(\" > \") + \"]\");\n\n if (isNotBrowser) {\n items.push(format(cScope[0] as string, cScope.slice(1) as unknown as string[]));\n } else {\n items.push([cScope[0], ...cScope.slice(1)]);\n }\n }\n\n if (prefix) {\n const cPrefix = grey(\n (Array.isArray(scope) && scope.length > 0 ? \". \" : \" \") + \"[\" + (this._styles.underline.prefix ? underline(prefix as string) : prefix) + \"] \",\n );\n\n if (isNotBrowser) {\n items.push(format(cPrefix[0] as string, cPrefix.slice(1) as unknown as string[]));\n } else {\n items.push([cPrefix[0] as string, ...cPrefix.slice(1)]);\n }\n }\n\n if (message) {\n items.push(message);\n\n if (context) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n items.push(...context);\n }\n }\n\n if (error) {\n items.push(error, \"\\n\\n\");\n }\n\n if (suffix) {\n const cSuffix = grey((this._styles.underline.suffix ? underline(suffix as string) : suffix) as string);\n\n if (isNotBrowser) {\n items.push(format((\"\\n\" + (cSuffix[0] as string)) as string, cSuffix.slice(1) as unknown as string[]));\n } else {\n items.push([(\"\\n\" + (cSuffix[0] as string)) as string, ...cSuffix.slice(1)]);\n }\n }\n\n if (isNotBrowser) {\n consoleLogFunction(...items);\n } else {\n let logMessage = \"\";\n\n const css = [];\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const arguments_ = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const value of items) {\n if (Array.isArray(value) && value.length > 1 && (value[0] as string).includes(\"%c\")) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n logMessage += value[0];\n css.push(...value.slice(1));\n } else {\n arguments_.push(value);\n }\n }\n\n consoleLogFunction(logMessage + \"%c\", ...css, \"\", ...arguments_);\n }\n }\n\n private _formatLabel(label: string): string {\n let formattedLabel = this._styles.uppercase.label ? label.toUpperCase() : label;\n\n formattedLabel = this._styles.underline.label ? underline(formattedLabel) : formattedLabel;\n\n if (this._styles.bold.label) {\n formattedLabel = bold(formattedLabel);\n }\n\n return formattedLabel;\n }\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LiteralUnion } from 'type-fest';
|
|
2
|
+
import { E as ExtendedRfc5424LogLevels, f as ReadonlyMeta } from './types.d-RNxsa9NR.cjs';
|
|
3
|
+
import { A as AbstractJsonReporter, a as AbstractPrettyReporter, P as PrettyStyleOptions } from './abstract-pretty-reporter-dDQbeuZX.cjs';
|
|
4
|
+
import '@visulima/colorize';
|
|
5
|
+
import 'safe-stable-stringify';
|
|
6
|
+
|
|
7
|
+
declare class JsonReporter<L extends string = never> extends AbstractJsonReporter<L> {
|
|
8
|
+
constructor();
|
|
9
|
+
protected _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> {
|
|
13
|
+
constructor(options?: Partial<PrettyStyleOptions>);
|
|
14
|
+
log(meta: ReadonlyMeta<L>): void;
|
|
15
|
+
private _formatLabel;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { JsonReporter, PrettyReporter };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LiteralUnion } from 'type-fest';
|
|
2
|
+
import { E as ExtendedRfc5424LogLevels, f as ReadonlyMeta } from './types.d-RNxsa9NR.js';
|
|
3
|
+
import { A as AbstractJsonReporter, a as AbstractPrettyReporter, P as PrettyStyleOptions } from './abstract-pretty-reporter-doXJ0wsq.js';
|
|
4
|
+
import '@visulima/colorize';
|
|
5
|
+
import 'safe-stable-stringify';
|
|
6
|
+
|
|
7
|
+
declare class JsonReporter<L extends string = never> extends AbstractJsonReporter<L> {
|
|
8
|
+
constructor();
|
|
9
|
+
protected _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> {
|
|
13
|
+
constructor(options?: Partial<PrettyStyleOptions>);
|
|
14
|
+
log(meta: ReadonlyMeta<L>): void;
|
|
15
|
+
private _formatLabel;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { JsonReporter, PrettyReporter };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { a as JsonReporter } from './chunk-G62M5WJH.js';
|
|
2
|
+
import { a } from './chunk-PVAYQO5O.js';
|
|
3
|
+
import './chunk-JYHWIRFR.js';
|
|
4
|
+
import { b, a as a$1 } from './chunk-57OYT2NC.js';
|
|
5
|
+
import { c } from './chunk-EBP7SMYV.js';
|
|
6
|
+
import './chunk-YKHMQW6V.js';
|
|
7
|
+
import C, { white, grey, underline, bold } from '@visulima/colorize/browser';
|
|
8
|
+
import { format } from '@visulima/fmt';
|
|
9
|
+
|
|
10
|
+
var m=class extends b{constructor(r={}){super({uppercase:{label:!0,...r.uppercase},...r});}log(r){let t=typeof window<"u"&&typeof window.document<"u",w=a(r.type.level),{badge:b,context:L,date:x,error:_,groups:p,label:u,message:k,prefix:f,repeated:c$1,scope:g,suffix:h,type:D}=r,{color:S}=this._loggerTypes[D.name],T=S?C[S]:white,e=[];if(t&&p.length>0){let s=p.map(()=>" ").join(""),n=grey("["+p.at(-1)+"]");e.push(format(s+n[0],n.slice(1)));}if(x){let s=grey(this._styles.dateFormatter(new Date(x)));t?e.push(format(s[0],s.slice(1))):e.push([s[0]+" ",...s.slice(1)]);}if(b){let s=T(b);t?e.push(format(s[0],s.slice(1))):e.push([s[0]+" ",...s.slice(1)]);}else {let s=a$1(this._loggerTypes);if(s.length>0){let n=grey(".".repeat(s.length));t?e.push(format(n[0]+" ",n.slice(1))):e.push([n[0]+" ",...n.slice(1)]);}}let v=c(this._loggerTypes),d;if(c$1){let s=white("["+c$1+"x]");d=t?format(s[0],s.slice(1)):[s[0],...s.slice(1)];}if(u){let s=T(this._formatLabel(u));t?e.push(format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]),d&&e.push(d);let n=v.length-u.length;if(c$1?n-=String(c$1).length+3:n+=1,n>0){let a=grey(".".repeat(n));t?e.push(format(a[0],a.slice(1))):e.push([" "+a[0],...a.slice(1)]);}}else {let s=grey(".".repeat(v.length+1));t?e.push(format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(Array.isArray(g)&&g.length>0){let s=grey("["+g.join(" > ")+"]");t?e.push(format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(f){let s=grey((Array.isArray(g)&&g.length>0?". ":" ")+"["+(this._styles.underline.prefix?underline(f):f)+"] ");t?e.push(format(s[0],s.slice(1))):e.push([s[0],...s.slice(1)]);}if(k&&(e.push(k),L&&e.push(...L)),_&&e.push(_,`
|
|
11
|
+
|
|
12
|
+
`),h){let s=grey(this._styles.underline.suffix?underline(h):h);t?e.push(format(`
|
|
13
|
+
`+s[0],s.slice(1))):e.push([`
|
|
14
|
+
`+s[0],...s.slice(1)]);}if(t)w(...e);else {let s="",n=[],a=[];for(let l of e)Array.isArray(l)&&l.length>1&&l[0].includes("%c")?(s+=l[0],n.push(...l.slice(1))):a.push(l);w(s+"%c",...n,"",...a);}}_formatLabel(r){let t=this._styles.uppercase.label?r.toUpperCase():r;return t=this._styles.underline.label?underline(t):t,this._styles.bold.label&&(t=bold(t)),t}};
|
|
15
|
+
|
|
16
|
+
export { m as PrettyReporter };
|
|
17
|
+
//# sourceMappingURL=out.js.map
|
|
18
|
+
//# sourceMappingURL=reporter.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/reporter/pretty/pretty.browser.ts"],"names":["colorize","bold","grey","underline","white","format","PrettyReporter","AbstractPrettyReporter","options","meta","isNotBrowser","consoleLogFunction","writeConsoleLogBasedOnLevel","badge","context","date","error","groups","label","message","prefix","repeated","scope","suffix","type","color","colorized","items","groupSpaces","cGroup","cDate","cBadge","longestBadge","getLongestBadge","cBadgePlaceholder","longestLabel","getLongestLabel","repeatedMessage","cRepeated","cLabel","lengthDiff","cLabelSpacer","cSpacer","cScope","cPrefix","cSuffix","logMessage","css","arguments_","value","formattedLabel"],"mappings":"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","sourcesContent":["import colorize, { bold, grey, underline, white } from \"@visulima/colorize/browser\";\nimport { format } from \"@visulima/fmt\";\n\nimport type { ReadonlyMeta } from \"../../types\";\nimport { getLongestBadge } from \"../../util/get-longest-badge\";\nimport { getLongestLabel } from \"../../util/get-longest-label\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\nimport type { PrettyStyleOptions } from \"./abstract-pretty-reporter\";\nimport { AbstractPrettyReporter } from \"./abstract-pretty-reporter\";\n\nexport class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> {\n public constructor(options: Partial<PrettyStyleOptions> = {}) {\n super({\n uppercase: {\n label: true,\n ...options.uppercase,\n },\n ...options,\n });\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public log(meta: ReadonlyMeta<L>): void {\n // eslint-disable-next-line unicorn/no-typeof-undefined,@typescript-eslint/prefer-optional-chain\n const isNotBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n const consoleLogFunction = writeConsoleLogBasedOnLevel(meta.type.level);\n\n const { badge, context, date, error, groups, label, message, prefix, repeated, scope, suffix, type } = meta;\n\n const { color } = this._loggerTypes[type.name as keyof typeof this._loggerTypes];\n // eslint-disable-next-line security/detect-object-injection\n const colorized = color ? colorize[color] : white;\n\n const items = [];\n\n if (isNotBrowser && groups.length > 0) {\n const groupSpaces: string = groups.map(() => \" \").join(\"\");\n const cGroup = grey(\"[\" + (groups.at(-1) as string) + \"]\");\n\n items.push(format(groupSpaces + (cGroup[0] as string), cGroup.slice(1) as unknown as string[]));\n }\n\n if (date) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const cDate = grey(this._styles.dateFormatter(new Date(date)));\n\n if (isNotBrowser) {\n items.push(format(cDate[0] as string, cDate.slice(1) as unknown as string[]));\n } else {\n items.push([(cDate[0] as string) + \" \", ...cDate.slice(1)]);\n }\n }\n\n if (badge) {\n const cBadge = colorized(badge);\n\n if (isNotBrowser) {\n items.push(format(cBadge[0] as string, cBadge.slice(1) as unknown as string[]));\n } else {\n items.push([cBadge[0] + \" \", ...cBadge.slice(1)]);\n }\n } else {\n const longestBadge: string = getLongestBadge<L, T>(this._loggerTypes);\n\n if (longestBadge.length > 0) {\n const cBadgePlaceholder = grey(\".\".repeat(longestBadge.length));\n\n if (isNotBrowser) {\n items.push(format((cBadgePlaceholder[0] as string) + \" \", cBadgePlaceholder.slice(1) as unknown as string[]));\n } else {\n items.push([(cBadgePlaceholder[0] as string) + \" \", ...cBadgePlaceholder.slice(1)]);\n }\n }\n }\n\n const longestLabel = getLongestLabel<L, T>(this._loggerTypes);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let repeatedMessage: any[] | string | undefined;\n\n if (repeated) {\n const cRepeated = white(\"[\" + repeated + \"x]\");\n\n repeatedMessage = isNotBrowser\n ? (format(cRepeated[0] as string, cRepeated.slice(1) as unknown as string[]) as string)\n : [cRepeated[0], ...cRepeated.slice(1)];\n }\n\n if (label) {\n const cLabel = colorized(this._formatLabel(label as string));\n\n if (isNotBrowser) {\n items.push(format(cLabel[0] as string, cLabel.slice(1) as unknown as string[]));\n } else {\n items.push([cLabel[0], ...cLabel.slice(1)]);\n }\n\n if (repeatedMessage) {\n items.push(repeatedMessage);\n }\n\n let lengthDiff = (longestLabel as string).length - (label as string).length;\n\n if (repeated) {\n lengthDiff -= String(repeated).length + 3;\n } else {\n lengthDiff += 1;\n }\n\n if (lengthDiff > 0) {\n const cLabelSpacer = grey(\".\".repeat(lengthDiff));\n\n if (isNotBrowser) {\n items.push(format(cLabelSpacer[0] as string, cLabelSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([\" \" + cLabelSpacer[0], ...cLabelSpacer.slice(1)]);\n }\n }\n } else {\n const cSpacer = grey(\".\".repeat((longestLabel as string).length + 1));\n\n if (isNotBrowser) {\n items.push(format(cSpacer[0] as string, cSpacer.slice(1) as unknown as string[]));\n } else {\n items.push([cSpacer[0], ...cSpacer.slice(1)]);\n }\n }\n\n if (Array.isArray(scope) && scope.length > 0) {\n const cScope = grey(\"[\" + scope.join(\" > \") + \"]\");\n\n if (isNotBrowser) {\n items.push(format(cScope[0] as string, cScope.slice(1) as unknown as string[]));\n } else {\n items.push([cScope[0], ...cScope.slice(1)]);\n }\n }\n\n if (prefix) {\n const cPrefix = grey(\n (Array.isArray(scope) && scope.length > 0 ? \". \" : \" \") + \"[\" + (this._styles.underline.prefix ? underline(prefix as string) : prefix) + \"] \",\n );\n\n if (isNotBrowser) {\n items.push(format(cPrefix[0] as string, cPrefix.slice(1) as unknown as string[]));\n } else {\n items.push([cPrefix[0] as string, ...cPrefix.slice(1)]);\n }\n }\n\n if (message) {\n items.push(message);\n\n if (context) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n items.push(...context);\n }\n }\n\n if (error) {\n items.push(error, \"\\n\\n\");\n }\n\n if (suffix) {\n const cSuffix = grey((this._styles.underline.suffix ? underline(suffix as string) : suffix) as string);\n\n if (isNotBrowser) {\n items.push(format((\"\\n\" + (cSuffix[0] as string)) as string, cSuffix.slice(1) as unknown as string[]));\n } else {\n items.push([(\"\\n\" + (cSuffix[0] as string)) as string, ...cSuffix.slice(1)]);\n }\n }\n\n if (isNotBrowser) {\n consoleLogFunction(...items);\n } else {\n let logMessage = \"\";\n\n const css = [];\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const arguments_ = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const value of items) {\n if (Array.isArray(value) && value.length > 1 && (value[0] as string).includes(\"%c\")) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n logMessage += value[0];\n css.push(...value.slice(1));\n } else {\n arguments_.push(value);\n }\n }\n\n consoleLogFunction(logMessage + \"%c\", ...css, \"\", ...arguments_);\n }\n }\n\n private _formatLabel(label: string): string {\n let formattedLabel = this._styles.uppercase.label ? label.toUpperCase() : label;\n\n formattedLabel = this._styles.underline.label ? underline(formattedLabel) : formattedLabel;\n\n if (this._styles.bold.label) {\n formattedLabel = bold(formattedLabel);\n }\n\n return formattedLabel;\n }\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkGZRIZCRG_cjs = require('./chunk-GZRIZCRG.cjs');
|
|
4
|
+
var chunk7OFJLC7L_cjs = require('./chunk-7OFJLC7L.cjs');
|
|
5
|
+
require('./chunk-46NTLZF7.cjs');
|
|
6
|
+
require('./chunk-MU2CRXVO.cjs');
|
|
7
|
+
var chunk6ATEEAVC_cjs = require('./chunk-6ATEEAVC.cjs');
|
|
8
|
+
var rotatingFileStream = require('rotating-file-stream');
|
|
9
|
+
var R = require('process');
|
|
10
|
+
|
|
11
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var R__default = /*#__PURE__*/_interopDefault(R);
|
|
14
|
+
|
|
15
|
+
var c=class{constructor(e,t){this._ready=!0;this._stream=e,this._name=t;}write(e){this.writeStream(e);}end(...e){this._stream.end(...e);}writeStream(e){if(!this._ready){console.warn("Stream busy: "+this._name+'. Write will be dropped: "'+e+'"');return}this._ready=!1,this._stream.on("error",t=>{throw t}),this._stream.on("drain",()=>{this._ready=!0;}),this._stream.on("finish",()=>{this._ready=!0;}),this._ready=this._stream.write(e,()=>{});}};var h=class{constructor(e,t=!1,i={}){this._filePath=e,this._immediate=t,this._options=i,this._immediate||(this._stream=rotatingFileStream.createStream(this._filePath,i));}write(e){let t=this._stream;this._immediate&&(t=rotatingFileStream.createStream(this._filePath,this._options));let i=new c(t,this._filePath);i.write(e),this._immediate&&i.end();}end(){this._stream!==void 0&&this._stream.end();}};var l=class{constructor(e){let{filePath:t,writeImmediately:i=!1,...r}=e;this._stream=new h(t,i,r);}log(e){this._stream.write(this._formatMessage(e)+`
|
|
16
|
+
`);}};var f,y=class extends l{constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});chunk6ATEEAVC_cjs.b(this,f,void 0);}setStringify(t){chunk6ATEEAVC_cjs.c(this,f,t);}_formatMessage(t){let{type:i,...r}=t;return r.label&&(r.label=r.label.trim()),r.file&&(r.file=r.file.name+":"+r.file.line+(r.file.column?":"+r.file.column:"")),chunk6ATEEAVC_cjs.a(this,f).call(this,r)}};f=new WeakMap;var o,a,_=class extends chunk7OFJLC7L_cjs.a{constructor(){super();chunk6ATEEAVC_cjs.b(this,o,void 0);chunk6ATEEAVC_cjs.b(this,a,void 0);chunk6ATEEAVC_cjs.c(this,o,R__default.default.stdout),chunk6ATEEAVC_cjs.c(this,a,R__default.default.stderr);}setStdout(t){chunk6ATEEAVC_cjs.c(this,o,t);}setStderr(t){chunk6ATEEAVC_cjs.c(this,a,t);}_log(t,i){let r=["error","warn"].includes(i)?chunk6ATEEAVC_cjs.a(this,a):chunk6ATEEAVC_cjs.a(this,o);chunkGZRIZCRG_cjs.a(t+`
|
|
17
|
+
`,r);}};o=new WeakMap,a=new WeakMap;
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(exports, 'PrettyReporter', {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return chunkGZRIZCRG_cjs.b; }
|
|
22
|
+
});
|
|
23
|
+
exports.AbstractFileReporter = l;
|
|
24
|
+
exports.JsonFileReporter = y;
|
|
25
|
+
exports.JsonReporter = _;
|
|
26
|
+
//# sourceMappingURL=out.js.map
|
|
27
|
+
//# sourceMappingURL=reporter.server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/util/rotating-file-stream.ts","../src/util/safe-stream-handler.ts","../src/reporter/file/abstract-file-reporter.ts","../src/reporter/file/json-file-reporter.ts","../src/reporter/json/json.server.ts"],"names":["createRfsStream","SafeStreamHandler","stream","name","message","arguments_","error","RotatingFileStream","filePath","writeImmediately","options","fileStream","AbstractFileReporter","rfsOptions","meta","_stringify","JsonFileReporter","__privateAdd","function_","__privateSet","type","rest","__privateGet","process","_stdout","_stderr","JsonReporter","AbstractJsonReporter","stdout","stderr","logLevel","writeStream"],"mappings":"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","sourcesContent":["import type { Writable } from \"node:stream\";\n\nimport type { Options as RfsOptions } from \"rotating-file-stream\";\nimport { createStream as createRfsStream } from \"rotating-file-stream\";\n\nimport { SafeStreamHandler } from \"./safe-stream-handler\";\n\n/**\n * A wrapper for the `rfs` module that will optionally write to disk immediately\n * by creating and closing a new stream on each write.\n */\nexport class RotatingFileStream {\n private readonly _filePath: string;\n\n private readonly _immediate: boolean;\n\n private readonly _stream: Writable | undefined;\n\n private readonly _options: RfsOptions;\n\n public constructor(filePath: string, writeImmediately = false, options: RfsOptions = {}) {\n this._filePath = filePath;\n this._immediate = writeImmediately;\n this._options = options;\n\n if (!this._immediate) {\n this._stream = createRfsStream(this._filePath, options);\n }\n }\n\n /**\n * Writes `message` to the instance's internal _stream\n * @param message Message to write\n */\n public write(message: string): void {\n let fileStream = this._stream;\n\n if (this._immediate) {\n fileStream = createRfsStream(this._filePath, this._options);\n }\n\n const stream = new SafeStreamHandler(fileStream as Writable, this._filePath);\n\n stream.write(message);\n\n if (this._immediate) {\n stream.end();\n }\n }\n\n /**\n * Ends the instance's internal _stream\n *\n * When `immediate` is not `true`, a call to `write` after calling this method\n * will throw an error.\n */\n public end(): void {\n if (this._stream !== undefined) {\n this._stream.end();\n }\n }\n}\n","import type { Writable } from \"node:stream\";\n\n/**\n * A handler for writable streams that only writes if the stream has finished\n * processing or draining\n */\nexport class SafeStreamHandler {\n public _ready = true;\n\n protected _stream: Writable;\n\n protected _name: string;\n\n public constructor(stream: Writable, name: string) {\n this._stream = stream;\n this._name = name;\n }\n\n /**\n * Writes `message` to the instance's internal stream\n * @param message Message to write\n */\n public write(message: string): void {\n this.writeStream(message);\n }\n\n /**\n * Calls `end` on this instance's internal stream\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public end(...arguments_: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this._stream.end(...arguments_);\n }\n\n protected writeStream(message: string): void {\n if (!this._ready) {\n // eslint-disable-next-line no-console\n console.warn(\"Stream busy: \" + this._name + '. Write will be dropped: \"' + message + '\"');\n return;\n }\n this._ready = false;\n\n this._stream.on(\"error\", (error) => {\n throw error;\n });\n this._stream.on(\"drain\", () => {\n this._ready = true;\n });\n this._stream.on(\"finish\", () => {\n this._ready = true;\n });\n this._ready = this._stream.write(message, () => {});\n }\n}\n","import type { Options as RfsOptions } from \"rotating-file-stream\";\n\nimport type { ReadonlyMeta, Reporter } from \"../../types\";\nimport { RotatingFileStream } from \"../../util/rotating-file-stream\";\n\nexport type Options = RfsOptions & {\n filePath: string;\n writeImmediately?: boolean;\n};\n\nexport abstract class AbstractFileReporter<L extends string = never> implements Reporter<L> {\n protected _stream: RotatingFileStream;\n\n protected constructor(options: Options) {\n const { filePath, writeImmediately = false, ...rfsOptions } = options;\n\n this._stream = new RotatingFileStream(filePath, writeImmediately, rfsOptions);\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n this._stream.write(this._formatMessage(meta as ReadonlyMeta<L>) + \"\\n\");\n }\n\n protected abstract _formatMessage(data: ReadonlyMeta<L>): string;\n}\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { Meta } from \"../../types\";\nimport type { Options as FileReporterOptions } from \"./abstract-file-reporter\";\nimport { AbstractFileReporter } from \"./abstract-file-reporter\";\n\nexport class JsonFileReporter<L extends string = never> extends AbstractFileReporter<L> {\n #stringify: typeof stringify | undefined;\n\n public constructor(options: FileReporterOptions) {\n super({\n compress: \"gzip\", // compress rotated files\n interval: \"1d\", // rotate daily\n size: \"10M\", // rotate every 10 MegaBytes written\n ...options,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n protected _formatMessage(meta: Meta<L>): string {\n const { type, ...rest } = meta;\n\n if (rest.label) {\n rest.label = rest.label.trim();\n }\n\n if (rest.file) {\n // This is a hack to make the file property a string\n (rest as unknown as Omit<Meta<L>, \"file\"> & { file: string }).file =\n rest.file.name + \":\" + rest.file.line + (rest.file.column ? \":\" + rest.file.column : \"\");\n }\n\n return (this.#stringify as typeof stringify)(rest) as string;\n }\n}\n","import process from \"node:process\";\n\nimport type { LiteralUnion } from \"type-fest\";\n\nimport type { ExtendedRfc5424LogLevels, StreamAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\nimport { AbstractJsonReporter } from \"./abstract-json-reporter\";\n\nexport class JsonReporter<L extends string = never> extends AbstractJsonReporter<L> implements StreamAwareReporter<L> {\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n public constructor() {\n super();\n\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStdout(stdout: NodeJS.WriteStream) {\n this.#stdout = stdout;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStderr(stderr: NodeJS.WriteStream) {\n this.#stderr = stderr;\n }\n\n protected override _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void {\n const stream = [\"error\", \"warn\"].includes(logLevel as string) ? this.#stderr : this.#stdout;\n\n writeStream(message + \"\\n\", stream);\n }\n}\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Options as Options$1 } from 'rotating-file-stream';
|
|
2
|
+
import { R as Reporter, f as ReadonlyMeta, M as Meta, S as StreamAwareReporter, E as ExtendedRfc5424LogLevels, h as InteractiveStreamReporter, I as InteractiveManager } from './types.d-RNxsa9NR.cjs';
|
|
3
|
+
import { LiteralUnion } from 'type-fest';
|
|
4
|
+
import { A as AbstractJsonReporter, a as AbstractPrettyReporter, P as PrettyStyleOptions } from './abstract-pretty-reporter-dDQbeuZX.cjs';
|
|
5
|
+
import '@visulima/colorize';
|
|
6
|
+
import 'safe-stable-stringify';
|
|
7
|
+
|
|
8
|
+
declare class RotatingFileStream {
|
|
9
|
+
private readonly _filePath;
|
|
10
|
+
private readonly _immediate;
|
|
11
|
+
private readonly _stream;
|
|
12
|
+
private readonly _options;
|
|
13
|
+
constructor(filePath: string, writeImmediately?: boolean, options?: Options$1);
|
|
14
|
+
write(message: string): void;
|
|
15
|
+
end(): void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
type Options = Options$1 & {
|
|
19
|
+
filePath: string;
|
|
20
|
+
writeImmediately?: boolean;
|
|
21
|
+
};
|
|
22
|
+
declare abstract class AbstractFileReporter<L extends string = never> implements Reporter<L> {
|
|
23
|
+
protected _stream: RotatingFileStream;
|
|
24
|
+
protected constructor(options: Options);
|
|
25
|
+
log(meta: ReadonlyMeta<L>): void;
|
|
26
|
+
protected abstract _formatMessage(data: ReadonlyMeta<L>): string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
declare class JsonFileReporter<L extends string = never> extends AbstractFileReporter<L> {
|
|
30
|
+
#private;
|
|
31
|
+
constructor(options: Options);
|
|
32
|
+
setStringify(function_: any): void;
|
|
33
|
+
protected _formatMessage(meta: Meta<L>): string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
declare class JsonReporter<L extends string = never> extends AbstractJsonReporter<L> implements StreamAwareReporter<L> {
|
|
37
|
+
#private;
|
|
38
|
+
constructor();
|
|
39
|
+
setStdout(stdout: NodeJS.WriteStream): void;
|
|
40
|
+
setStderr(stderr: NodeJS.WriteStream): void;
|
|
41
|
+
protected _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
declare class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> implements InteractiveStreamReporter<L> {
|
|
45
|
+
#private;
|
|
46
|
+
constructor(options?: Partial<PrettyStyleOptions>);
|
|
47
|
+
setStdout(stdout: NodeJS.WriteStream): void;
|
|
48
|
+
setStderr(stderr: NodeJS.WriteStream): void;
|
|
49
|
+
setInteractiveManager(manager?: InteractiveManager): void;
|
|
50
|
+
setIsInteractive(interactive: boolean): void;
|
|
51
|
+
log(meta: ReadonlyMeta<L>): void;
|
|
52
|
+
protected _formatMessage(data: ReadonlyMeta<L>): string;
|
|
53
|
+
protected _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void;
|
|
54
|
+
private _formatError;
|
|
55
|
+
private _formatLabel;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { AbstractFileReporter, type Options as AbstractFileReporterOptions, JsonFileReporter, JsonReporter, PrettyReporter };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Options as Options$1 } from 'rotating-file-stream';
|
|
2
|
+
import { R as Reporter, f as ReadonlyMeta, M as Meta, S as StreamAwareReporter, E as ExtendedRfc5424LogLevels, h as InteractiveStreamReporter, I as InteractiveManager } from './types.d-RNxsa9NR.js';
|
|
3
|
+
import { LiteralUnion } from 'type-fest';
|
|
4
|
+
import { A as AbstractJsonReporter, a as AbstractPrettyReporter, P as PrettyStyleOptions } from './abstract-pretty-reporter-doXJ0wsq.js';
|
|
5
|
+
import '@visulima/colorize';
|
|
6
|
+
import 'safe-stable-stringify';
|
|
7
|
+
|
|
8
|
+
declare class RotatingFileStream {
|
|
9
|
+
private readonly _filePath;
|
|
10
|
+
private readonly _immediate;
|
|
11
|
+
private readonly _stream;
|
|
12
|
+
private readonly _options;
|
|
13
|
+
constructor(filePath: string, writeImmediately?: boolean, options?: Options$1);
|
|
14
|
+
write(message: string): void;
|
|
15
|
+
end(): void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
type Options = Options$1 & {
|
|
19
|
+
filePath: string;
|
|
20
|
+
writeImmediately?: boolean;
|
|
21
|
+
};
|
|
22
|
+
declare abstract class AbstractFileReporter<L extends string = never> implements Reporter<L> {
|
|
23
|
+
protected _stream: RotatingFileStream;
|
|
24
|
+
protected constructor(options: Options);
|
|
25
|
+
log(meta: ReadonlyMeta<L>): void;
|
|
26
|
+
protected abstract _formatMessage(data: ReadonlyMeta<L>): string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
declare class JsonFileReporter<L extends string = never> extends AbstractFileReporter<L> {
|
|
30
|
+
#private;
|
|
31
|
+
constructor(options: Options);
|
|
32
|
+
setStringify(function_: any): void;
|
|
33
|
+
protected _formatMessage(meta: Meta<L>): string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
declare class JsonReporter<L extends string = never> extends AbstractJsonReporter<L> implements StreamAwareReporter<L> {
|
|
37
|
+
#private;
|
|
38
|
+
constructor();
|
|
39
|
+
setStdout(stdout: NodeJS.WriteStream): void;
|
|
40
|
+
setStderr(stderr: NodeJS.WriteStream): void;
|
|
41
|
+
protected _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
declare class PrettyReporter<T extends string = never, L extends string = never> extends AbstractPrettyReporter<T, L> implements InteractiveStreamReporter<L> {
|
|
45
|
+
#private;
|
|
46
|
+
constructor(options?: Partial<PrettyStyleOptions>);
|
|
47
|
+
setStdout(stdout: NodeJS.WriteStream): void;
|
|
48
|
+
setStderr(stderr: NodeJS.WriteStream): void;
|
|
49
|
+
setInteractiveManager(manager?: InteractiveManager): void;
|
|
50
|
+
setIsInteractive(interactive: boolean): void;
|
|
51
|
+
log(meta: ReadonlyMeta<L>): void;
|
|
52
|
+
protected _formatMessage(data: ReadonlyMeta<L>): string;
|
|
53
|
+
protected _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void;
|
|
54
|
+
private _formatError;
|
|
55
|
+
private _formatLabel;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { AbstractFileReporter, type Options as AbstractFileReporterOptions, JsonFileReporter, JsonReporter, PrettyReporter };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { a as a$3 } from './chunk-HKIS52YX.js';
|
|
2
|
+
export { b as PrettyReporter } from './chunk-HKIS52YX.js';
|
|
3
|
+
import { a as a$2 } from './chunk-JYHWIRFR.js';
|
|
4
|
+
import './chunk-57OYT2NC.js';
|
|
5
|
+
import './chunk-EBP7SMYV.js';
|
|
6
|
+
import { b, c, a as a$1 } from './chunk-YKHMQW6V.js';
|
|
7
|
+
import { createStream } from 'rotating-file-stream';
|
|
8
|
+
import S from 'process';
|
|
9
|
+
|
|
10
|
+
var h=class{constructor(e,t){this._ready=!0;this._stream=e,this._name=t;}write(e){this.writeStream(e);}end(...e){this._stream.end(...e);}writeStream(e){if(!this._ready){console.warn("Stream busy: "+this._name+'. Write will be dropped: "'+e+'"');return}this._ready=!1,this._stream.on("error",t=>{throw t}),this._stream.on("drain",()=>{this._ready=!0;}),this._stream.on("finish",()=>{this._ready=!0;}),this._ready=this._stream.write(e,()=>{});}};var y=class{constructor(e,t=!1,i={}){this._filePath=e,this._immediate=t,this._options=i,this._immediate||(this._stream=createStream(this._filePath,i));}write(e){let t=this._stream;this._immediate&&(t=createStream(this._filePath,this._options));let i=new h(t,this._filePath);i.write(e),this._immediate&&i.end();}end(){this._stream!==void 0&&this._stream.end();}};var f=class{constructor(e){let{filePath:t,writeImmediately:i=!1,...r}=e;this._stream=new y(t,i,r);}log(e){this._stream.write(this._formatMessage(e)+`
|
|
11
|
+
`);}};var d,_=class extends f{constructor(t){super({compress:"gzip",interval:"1d",size:"10M",...t});b(this,d,void 0);}setStringify(t){c(this,d,t);}_formatMessage(t){let{type:i,...r}=t;return r.label&&(r.label=r.label.trim()),r.file&&(r.file=r.file.name+":"+r.file.line+(r.file.column?":"+r.file.column:"")),a$1(this,d).call(this,r)}};d=new WeakMap;var o,a,u=class extends a$2{constructor(){super();b(this,o,void 0);b(this,a,void 0);c(this,o,S.stdout),c(this,a,S.stderr);}setStdout(t){c(this,o,t);}setStderr(t){c(this,a,t);}_log(t,i){let r=["error","warn"].includes(i)?a$1(this,a):a$1(this,o);a$3(t+`
|
|
12
|
+
`,r);}};o=new WeakMap,a=new WeakMap;
|
|
13
|
+
|
|
14
|
+
export { f as AbstractFileReporter, _ as JsonFileReporter, u as JsonReporter };
|
|
15
|
+
//# sourceMappingURL=out.js.map
|
|
16
|
+
//# sourceMappingURL=reporter.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/util/rotating-file-stream.ts","../src/util/safe-stream-handler.ts","../src/reporter/file/abstract-file-reporter.ts","../src/reporter/file/json-file-reporter.ts","../src/reporter/json/json.server.ts"],"names":["createRfsStream","SafeStreamHandler","stream","name","message","arguments_","error","RotatingFileStream","filePath","writeImmediately","options","fileStream","AbstractFileReporter","rfsOptions","meta","_stringify","JsonFileReporter","__privateAdd","function_","__privateSet","type","rest","__privateGet","process","_stdout","_stderr","JsonReporter","AbstractJsonReporter","stdout","stderr","logLevel","writeStream"],"mappings":"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","sourcesContent":["import type { Writable } from \"node:stream\";\n\nimport type { Options as RfsOptions } from \"rotating-file-stream\";\nimport { createStream as createRfsStream } from \"rotating-file-stream\";\n\nimport { SafeStreamHandler } from \"./safe-stream-handler\";\n\n/**\n * A wrapper for the `rfs` module that will optionally write to disk immediately\n * by creating and closing a new stream on each write.\n */\nexport class RotatingFileStream {\n private readonly _filePath: string;\n\n private readonly _immediate: boolean;\n\n private readonly _stream: Writable | undefined;\n\n private readonly _options: RfsOptions;\n\n public constructor(filePath: string, writeImmediately = false, options: RfsOptions = {}) {\n this._filePath = filePath;\n this._immediate = writeImmediately;\n this._options = options;\n\n if (!this._immediate) {\n this._stream = createRfsStream(this._filePath, options);\n }\n }\n\n /**\n * Writes `message` to the instance's internal _stream\n * @param message Message to write\n */\n public write(message: string): void {\n let fileStream = this._stream;\n\n if (this._immediate) {\n fileStream = createRfsStream(this._filePath, this._options);\n }\n\n const stream = new SafeStreamHandler(fileStream as Writable, this._filePath);\n\n stream.write(message);\n\n if (this._immediate) {\n stream.end();\n }\n }\n\n /**\n * Ends the instance's internal _stream\n *\n * When `immediate` is not `true`, a call to `write` after calling this method\n * will throw an error.\n */\n public end(): void {\n if (this._stream !== undefined) {\n this._stream.end();\n }\n }\n}\n","import type { Writable } from \"node:stream\";\n\n/**\n * A handler for writable streams that only writes if the stream has finished\n * processing or draining\n */\nexport class SafeStreamHandler {\n public _ready = true;\n\n protected _stream: Writable;\n\n protected _name: string;\n\n public constructor(stream: Writable, name: string) {\n this._stream = stream;\n this._name = name;\n }\n\n /**\n * Writes `message` to the instance's internal stream\n * @param message Message to write\n */\n public write(message: string): void {\n this.writeStream(message);\n }\n\n /**\n * Calls `end` on this instance's internal stream\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public end(...arguments_: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this._stream.end(...arguments_);\n }\n\n protected writeStream(message: string): void {\n if (!this._ready) {\n // eslint-disable-next-line no-console\n console.warn(\"Stream busy: \" + this._name + '. Write will be dropped: \"' + message + '\"');\n return;\n }\n this._ready = false;\n\n this._stream.on(\"error\", (error) => {\n throw error;\n });\n this._stream.on(\"drain\", () => {\n this._ready = true;\n });\n this._stream.on(\"finish\", () => {\n this._ready = true;\n });\n this._ready = this._stream.write(message, () => {});\n }\n}\n","import type { Options as RfsOptions } from \"rotating-file-stream\";\n\nimport type { ReadonlyMeta, Reporter } from \"../../types\";\nimport { RotatingFileStream } from \"../../util/rotating-file-stream\";\n\nexport type Options = RfsOptions & {\n filePath: string;\n writeImmediately?: boolean;\n};\n\nexport abstract class AbstractFileReporter<L extends string = never> implements Reporter<L> {\n protected _stream: RotatingFileStream;\n\n protected constructor(options: Options) {\n const { filePath, writeImmediately = false, ...rfsOptions } = options;\n\n this._stream = new RotatingFileStream(filePath, writeImmediately, rfsOptions);\n }\n\n public log(meta: ReadonlyMeta<L>): void {\n this._stream.write(this._formatMessage(meta as ReadonlyMeta<L>) + \"\\n\");\n }\n\n protected abstract _formatMessage(data: ReadonlyMeta<L>): string;\n}\n","import type { stringify } from \"safe-stable-stringify\";\n\nimport type { Meta } from \"../../types\";\nimport type { Options as FileReporterOptions } from \"./abstract-file-reporter\";\nimport { AbstractFileReporter } from \"./abstract-file-reporter\";\n\nexport class JsonFileReporter<L extends string = never> extends AbstractFileReporter<L> {\n #stringify: typeof stringify | undefined;\n\n public constructor(options: FileReporterOptions) {\n super({\n compress: \"gzip\", // compress rotated files\n interval: \"1d\", // rotate daily\n size: \"10M\", // rotate every 10 MegaBytes written\n ...options,\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n protected _formatMessage(meta: Meta<L>): string {\n const { type, ...rest } = meta;\n\n if (rest.label) {\n rest.label = rest.label.trim();\n }\n\n if (rest.file) {\n // This is a hack to make the file property a string\n (rest as unknown as Omit<Meta<L>, \"file\"> & { file: string }).file =\n rest.file.name + \":\" + rest.file.line + (rest.file.column ? \":\" + rest.file.column : \"\");\n }\n\n return (this.#stringify as typeof stringify)(rest) as string;\n }\n}\n","import process from \"node:process\";\n\nimport type { LiteralUnion } from \"type-fest\";\n\nimport type { ExtendedRfc5424LogLevels, StreamAwareReporter } from \"../../types\";\nimport { writeStream } from \"../../util/write-stream\";\nimport { AbstractJsonReporter } from \"./abstract-json-reporter\";\n\nexport class JsonReporter<L extends string = never> extends AbstractJsonReporter<L> implements StreamAwareReporter<L> {\n #stdout: NodeJS.WriteStream;\n\n #stderr: NodeJS.WriteStream;\n\n public constructor() {\n super();\n\n this.#stdout = process.stdout;\n this.#stderr = process.stderr;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStdout(stdout: NodeJS.WriteStream) {\n this.#stdout = stdout;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public setStderr(stderr: NodeJS.WriteStream) {\n this.#stderr = stderr;\n }\n\n protected override _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void {\n const stream = [\"error\", \"warn\"].includes(logLevel as string) ? this.#stderr : this.#stdout;\n\n writeStream(message + \"\\n\", stream);\n }\n}\n"]}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { AnsiColors } from '@visulima/colorize';
|
|
2
|
+
import { LiteralUnion, Primitive, UnknownArray, UnknownRecord } from 'type-fest';
|
|
3
|
+
|
|
4
|
+
declare class InteractiveStreamHook {
|
|
5
|
+
#private;
|
|
6
|
+
static readonly DRAIN = true;
|
|
7
|
+
constructor(stream: NodeJS.WriteStream);
|
|
8
|
+
active(): void;
|
|
9
|
+
erase(count: number): void;
|
|
10
|
+
inactive(separateHistory?: boolean): void;
|
|
11
|
+
renew(): void;
|
|
12
|
+
write(message: string): void;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
type StreamType = "stderr" | "stdout";
|
|
16
|
+
declare class InteractiveManager {
|
|
17
|
+
#private;
|
|
18
|
+
constructor(stdout: InteractiveStreamHook, stderr: InteractiveStreamHook);
|
|
19
|
+
get lastLength(): number;
|
|
20
|
+
get outside(): number;
|
|
21
|
+
get isHooked(): boolean;
|
|
22
|
+
get isSuspended(): boolean;
|
|
23
|
+
erase(stream: StreamType, count?: number): void;
|
|
24
|
+
hook(): boolean;
|
|
25
|
+
resume(stream: StreamType, eraseRowCount?: number): void;
|
|
26
|
+
suspend(stream: StreamType, erase?: boolean): void;
|
|
27
|
+
unhook(separateHistory?: boolean): boolean;
|
|
28
|
+
update(stream: StreamType, rows: string[], from?: number): void;
|
|
29
|
+
private _clear;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* * This is a special exported interface for other packages/app to declare additional metadata for the logger.
|
|
34
|
+
*/
|
|
35
|
+
declare global {
|
|
36
|
+
namespace VisulimaPail {
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface,@typescript-eslint/no-unused-vars
|
|
38
|
+
interface CustomMeta<L> {}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
interface Meta<L> extends VisulimaPail.CustomMeta<L> {
|
|
43
|
+
badge: string | undefined;
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
|
+
context: any[] | undefined;
|
|
46
|
+
date: Date | string;
|
|
47
|
+
error: Error | undefined;
|
|
48
|
+
groups: string[];
|
|
49
|
+
label: string | undefined;
|
|
50
|
+
message: Primitive | UnknownArray | UnknownRecord;
|
|
51
|
+
prefix: string | undefined;
|
|
52
|
+
repeated?: number | undefined;
|
|
53
|
+
scope: string[] | undefined;
|
|
54
|
+
suffix: string | undefined;
|
|
55
|
+
traceError: Error | undefined; // for internal use
|
|
56
|
+
type: {
|
|
57
|
+
level: ExtendedRfc5424LogLevels | L;
|
|
58
|
+
name: string;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
type ExtendedRfc5424LogLevels = "alert" | "critical" | "debug" | "emergency" | "error" | "informational" | "notice" | "trace" | "warning";
|
|
63
|
+
|
|
64
|
+
type DefaultLogTypes =
|
|
65
|
+
| "alert"
|
|
66
|
+
| "await"
|
|
67
|
+
| "complete"
|
|
68
|
+
| "critical"
|
|
69
|
+
| "debug"
|
|
70
|
+
| "emergency"
|
|
71
|
+
| "error"
|
|
72
|
+
| "info"
|
|
73
|
+
| "log"
|
|
74
|
+
| "notice"
|
|
75
|
+
| "pending"
|
|
76
|
+
| "start"
|
|
77
|
+
| "stop"
|
|
78
|
+
| "success"
|
|
79
|
+
| "trace"
|
|
80
|
+
| "wait"
|
|
81
|
+
| "warn"
|
|
82
|
+
| "watch";
|
|
83
|
+
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
85
|
+
type LoggerFunction = (...message: any[]) => void;
|
|
86
|
+
// alias for backward-compatibility
|
|
87
|
+
interface LoggerConfiguration<L extends string = never> {
|
|
88
|
+
badge?: string;
|
|
89
|
+
color?: AnsiColors | undefined;
|
|
90
|
+
label: string;
|
|
91
|
+
logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
type LoggerTypesConfig<T extends string, L extends string = never> = Record<T, Partial<LoggerConfiguration<L>>>;
|
|
95
|
+
type DefaultLoggerTypes<L extends string = never> = Record<DefaultLogTypes, LoggerConfiguration<L>>;
|
|
96
|
+
|
|
97
|
+
type ReadonlyMeta<L extends string = never> = Readonly<Meta<L>>;
|
|
98
|
+
|
|
99
|
+
interface Reporter<L extends string = never> {
|
|
100
|
+
log: (meta: ReadonlyMeta<L>) => void;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
interface StreamAwareReporter<L extends string = never> extends Reporter<L> {
|
|
104
|
+
setStderr: (stderr: NodeJS.WriteStream) => void;
|
|
105
|
+
setStdout: (stdout: NodeJS.WriteStream) => void;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
interface LoggerTypesAwareReporter<T extends string = never, L extends string = never> extends Reporter<L> {
|
|
109
|
+
setLoggerTypes: (types: LoggerTypesConfig<T, L> & Partial<LoggerTypesConfig<DefaultLogTypes, L>>) => void;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
interface StringifyAwareReporter<L extends string = never> extends Reporter<L> {
|
|
113
|
+
setStringify: (stringify: typeof JSON.stringify) => void;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
interface InteractiveStreamReporter<L extends string = never> extends StreamAwareReporter<L> {
|
|
117
|
+
setInteractiveManager: (manager?: InteractiveManager) => void;
|
|
118
|
+
setIsInteractive: (interactive: boolean) => void;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
interface Processor<L extends string = never> {
|
|
122
|
+
process: (meta: Meta<L>) => Meta<L>;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
interface StringifyAwareProcessor<L extends string = never> extends Processor<L> {
|
|
126
|
+
setStringify: (stringify: typeof JSON.stringify) => void;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
interface ConstructorOptions<T extends string = never, L extends string = never> {
|
|
130
|
+
disabled?: boolean;
|
|
131
|
+
logLevel?: LiteralUnion<ExtendedRfc5424LogLevels, L>;
|
|
132
|
+
logLevels?: Partial<Record<ExtendedRfc5424LogLevels, number>> & Record<L, number>;
|
|
133
|
+
messages?: {
|
|
134
|
+
timerEnd?: string;
|
|
135
|
+
timerStart?: string;
|
|
136
|
+
};
|
|
137
|
+
processors?: Processor<L>[];
|
|
138
|
+
rawReporter?: Reporter<L>;
|
|
139
|
+
reporters?: Reporter<L>[];
|
|
140
|
+
scope?: string[] | string;
|
|
141
|
+
throttle?: number;
|
|
142
|
+
throttleMin?: number;
|
|
143
|
+
// we can't negate DefaultLogTypes from string
|
|
144
|
+
// see https://github.com/microsoft/TypeScript/pull/29317 (not merged as for 31 march 2021)
|
|
145
|
+
// so we can't distinguish logger configuration between default log types and passed one
|
|
146
|
+
types?: LoggerTypesConfig<T, L> & Partial<LoggerTypesConfig<DefaultLogTypes, L>>;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
interface ServerConstructorOptions<T extends string = never, L extends string = never> extends ConstructorOptions<T, L> {
|
|
150
|
+
interactive?: boolean;
|
|
151
|
+
stderr?: NodeJS.WriteStream;
|
|
152
|
+
stdout?: NodeJS.WriteStream;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export { type ConstructorOptions as C, type DefaultLoggerTypes as D, type ExtendedRfc5424LogLevels as E, InteractiveManager as I, type LoggerConfiguration as L, type Meta as M, type Processor as P, type Reporter as R, type StreamAwareReporter as S, type DefaultLogTypes as a, type LoggerFunction as b, type LoggerTypesAwareReporter as c, type LoggerTypesConfig as d, type ServerConstructorOptions as e, type ReadonlyMeta as f, type StringifyAwareReporter as g, type InteractiveStreamReporter as h, type StringifyAwareProcessor as i };
|