@visulima/pail 1.1.13 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE.md +174 -0
  3. package/dist/index.browser.cjs +1 -16
  4. package/dist/index.browser.d.cts +3 -3
  5. package/dist/index.browser.d.mts +10 -0
  6. package/dist/index.browser.d.ts +3 -3
  7. package/dist/index.browser.mjs +1 -0
  8. package/dist/index.server.cjs +4 -20
  9. package/dist/index.server.d.cts +3 -3
  10. package/dist/index.server.d.mts +30 -0
  11. package/dist/index.server.d.ts +3 -3
  12. package/dist/index.server.mjs +5 -0
  13. package/dist/processor.browser.cjs +1 -12
  14. package/dist/processor.browser.d.cts +1 -1
  15. package/dist/processor.browser.d.mts +15 -0
  16. package/dist/processor.browser.d.ts +1 -1
  17. package/dist/processor.browser.mjs +1 -0
  18. package/dist/processor.server.cjs +1 -18
  19. package/dist/processor.server.d.cts +1 -1
  20. package/dist/processor.server.d.mts +47 -0
  21. package/dist/processor.server.d.ts +1 -1
  22. package/dist/processor.server.mjs +1 -0
  23. package/dist/reporter.browser.cjs +4 -26
  24. package/dist/reporter.browser.d.cts +2 -2
  25. package/dist/reporter.browser.d.mts +17 -0
  26. package/dist/reporter.browser.d.ts +2 -2
  27. package/dist/reporter.browser.mjs +5 -0
  28. package/dist/reporter.server.cjs +9 -24
  29. package/dist/reporter.server.d.cts +21 -14
  30. package/dist/reporter.server.d.mts +64 -0
  31. package/dist/reporter.server.d.ts +21 -14
  32. package/dist/reporter.server.mjs +11 -0
  33. package/dist/{abstract-pretty-reporter-B-VS5gYX.d.ts → shared/pail.B4CNQvGO.d.cts} +2 -2
  34. package/dist/shared/pail.B85Cx0UJ.cjs +1 -0
  35. package/dist/shared/pail.BDMlOMw8.cjs +21 -0
  36. package/dist/shared/pail.BP9NvmFd.mjs +1 -0
  37. package/dist/shared/pail.BU1VqUN1.cjs +1 -0
  38. package/dist/{abstract-pretty-reporter-DwzTRutd.d.cts → shared/pail.Bdbc3_zr.d.ts} +2 -2
  39. package/dist/shared/pail.Br_AAl-2.mjs +1 -0
  40. package/dist/shared/pail.BuhpbVGv.mjs +1 -0
  41. package/dist/shared/pail.C0epjAht.cjs +1 -0
  42. package/dist/{pail.browser-DuX9zHSz.d.ts → shared/pail.CHPrWCMI.d.ts} +1 -1
  43. package/dist/shared/pail.CNxJnpWG.mjs +1 -0
  44. package/dist/{pail.browser-pg1HpChf.d.cts → shared/pail.Cc48XFs7.d.mts} +1 -1
  45. package/dist/shared/pail.CzAicDBX.mjs +21 -0
  46. package/dist/shared/pail.D3wUM96H.mjs +1 -0
  47. package/dist/shared/pail.D9OQPGNq.cjs +1 -0
  48. package/dist/shared/pail.DF5wQ_KA.mjs +1 -0
  49. package/dist/shared/pail.DW7tr027.d.cts +58 -0
  50. package/dist/shared/pail.DrhFTME0.d.ts +123 -0
  51. package/dist/shared/pail.DvAyNJOC.mjs +1 -0
  52. package/dist/shared/pail.DwWkopDF.cjs +1 -0
  53. package/dist/shared/pail.boZRgdP1.cjs +1 -0
  54. package/dist/shared/pail.nEbRCLhY.mjs +1 -0
  55. package/dist/shared/pail.qb_TjNJQ.d.mts +36 -0
  56. package/dist/shared/pail.t5UYgSXE.cjs +1 -0
  57. package/dist/shared/pail.zBliJm8v.cjs +1 -0
  58. package/package.json +54 -36
  59. package/dist/chunk-2I5JHTDY.js +0 -9
  60. package/dist/chunk-2I5JHTDY.js.map +0 -1
  61. package/dist/chunk-5MNFJRLM.cjs +0 -10
  62. package/dist/chunk-5MNFJRLM.cjs.map +0 -1
  63. package/dist/chunk-AFMDCM5W.js +0 -5
  64. package/dist/chunk-AFMDCM5W.js.map +0 -1
  65. package/dist/chunk-F4FJCQ4L.cjs +0 -9
  66. package/dist/chunk-F4FJCQ4L.cjs.map +0 -1
  67. package/dist/chunk-KERJDMYV.js +0 -8
  68. package/dist/chunk-KERJDMYV.js.map +0 -1
  69. package/dist/chunk-N2UPJYJR.cjs +0 -7
  70. package/dist/chunk-N2UPJYJR.cjs.map +0 -1
  71. package/dist/chunk-NF47XQ47.js +0 -5
  72. package/dist/chunk-NF47XQ47.js.map +0 -1
  73. package/dist/chunk-QINSQ6TU.cjs +0 -9
  74. package/dist/chunk-QINSQ6TU.cjs.map +0 -1
  75. package/dist/chunk-R5F555RP.js +0 -5
  76. package/dist/chunk-R5F555RP.js.map +0 -1
  77. package/dist/chunk-S4PFPURC.cjs +0 -45
  78. package/dist/chunk-S4PFPURC.cjs.map +0 -1
  79. package/dist/chunk-SR3Q3EUO.js +0 -7
  80. package/dist/chunk-SR3Q3EUO.js.map +0 -1
  81. package/dist/chunk-TAH23BHM.js +0 -5
  82. package/dist/chunk-TAH23BHM.js.map +0 -1
  83. package/dist/chunk-VWAGNTLB.cjs +0 -7
  84. package/dist/chunk-VWAGNTLB.cjs.map +0 -1
  85. package/dist/chunk-WHEIXCFS.js +0 -33
  86. package/dist/chunk-WHEIXCFS.js.map +0 -1
  87. package/dist/chunk-YP3U3DTV.cjs +0 -10
  88. package/dist/chunk-YP3U3DTV.cjs.map +0 -1
  89. package/dist/chunk-ZB7IIFHO.js +0 -7
  90. package/dist/chunk-ZB7IIFHO.js.map +0 -1
  91. package/dist/chunk-ZHHJ42XL.cjs +0 -12
  92. package/dist/chunk-ZHHJ42XL.cjs.map +0 -1
  93. package/dist/chunk-ZJMTPHZR.cjs +0 -7
  94. package/dist/chunk-ZJMTPHZR.cjs.map +0 -1
  95. package/dist/index.browser.cjs.map +0 -1
  96. package/dist/index.browser.js +0 -13
  97. package/dist/index.browser.js.map +0 -1
  98. package/dist/index.server.cjs.map +0 -1
  99. package/dist/index.server.js +0 -18
  100. package/dist/index.server.js.map +0 -1
  101. package/dist/processor.browser.cjs.map +0 -1
  102. package/dist/processor.browser.js +0 -3
  103. package/dist/processor.browser.js.map +0 -1
  104. package/dist/processor.server.cjs.map +0 -1
  105. package/dist/processor.server.js +0 -8
  106. package/dist/processor.server.js.map +0 -1
  107. package/dist/reporter.browser.cjs.map +0 -1
  108. package/dist/reporter.browser.js +0 -17
  109. package/dist/reporter.browser.js.map +0 -1
  110. package/dist/reporter.server.cjs.map +0 -1
  111. package/dist/reporter.server.js +0 -15
  112. package/dist/reporter.server.js.map +0 -1
  113. /package/dist/{types-DrhFTME0.d.cts → shared/pail.DrhFTME0.d.cts} +0 -0
  114. /package/dist/{types-DrhFTME0.d.ts → shared/pail.DrhFTME0.d.mts} +0 -0
@@ -0,0 +1,58 @@
1
+ import { stringify } from 'safe-stable-stringify';
2
+ import { a as DefaultLogTypes, b as LoggerFunction, C as ConstructorOptions, M as Meta, d as LoggerTypesConfig, e as LiteralUnion, P as Processor, E as ExtendedRfc5424LogLevels, R as Reporter } from './pail.DrhFTME0.cjs';
3
+
4
+ declare class PailBrowserImpl<T extends string = never, L extends string = never> {
5
+ protected timersMap: Map<string, number>;
6
+ protected countMap: Map<string, number>;
7
+ protected seqTimers: Set<string>;
8
+ protected readonly lastLog: {
9
+ count?: number;
10
+ object?: Meta<L>;
11
+ serialized?: string;
12
+ time?: Date;
13
+ timeout?: ReturnType<typeof setTimeout>;
14
+ };
15
+ protected readonly logLevels: Record<string, number>;
16
+ protected disabled: boolean;
17
+ protected scopeName: string[];
18
+ protected readonly types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;
19
+ protected readonly longestLabel: string;
20
+ protected readonly processors: Set<Processor<L>>;
21
+ protected readonly generalLogLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>;
22
+ protected reporters: Set<Reporter<L>>;
23
+ protected readonly throttle: number;
24
+ protected readonly throttleMin: number;
25
+ protected readonly stringify: typeof stringify;
26
+ protected groups: string[];
27
+ protected readonly startTimerMessage: string;
28
+ protected readonly endTimerMessage: string;
29
+ protected rawReporter: Reporter<L>;
30
+ constructor(options: ConstructorOptions<T, L>);
31
+ wrapConsole(): void;
32
+ restoreConsole(): void;
33
+ wrapException(): void;
34
+ disable(): void;
35
+ enable(): void;
36
+ isEnabled(): boolean;
37
+ scope<N extends string = T>(...name: string[]): PailBrowserType<N, L>;
38
+ unscope(): void;
39
+ time(label?: string): void;
40
+ timeLog(label?: string, ...data: unknown[]): void;
41
+ timeEnd(label?: string): void;
42
+ group(label?: string): void;
43
+ groupEnd(): void;
44
+ count(label?: string): void;
45
+ countReset(label?: string): void;
46
+ clear(): void;
47
+ raw(message: string, ...arguments_: unknown[]): void;
48
+ protected extendReporter(reporter: Reporter<L>): Reporter<L>;
49
+ protected registerReporters(reporters: Reporter<L>[]): void;
50
+ private _report;
51
+ private registerProcessors;
52
+ private _normalizeLogLevel;
53
+ private _buildMeta;
54
+ private _logger;
55
+ }
56
+ type PailBrowserType<T extends string = never, L extends string = never> = PailBrowserImpl<T, L> & Record<DefaultLogTypes, LoggerFunction> & Record<T, LoggerFunction> & (new <TC extends string = never, LC extends string = never>(options?: ConstructorOptions<TC, LC>) => PailBrowserType<TC, LC>);
57
+
58
+ export { type PailBrowserType as P, PailBrowserImpl as a };
@@ -0,0 +1,123 @@
1
+ import { AnsiColors } from '@visulima/colorize';
2
+
3
+ declare class InteractiveStreamHook {
4
+ #private;
5
+ static readonly DRAIN = true;
6
+ constructor(stream: NodeJS.WriteStream);
7
+ active(): void;
8
+ erase(count: number): void;
9
+ inactive(separateHistory?: boolean): void;
10
+ renew(): void;
11
+ write(message: string): void;
12
+ }
13
+
14
+ type StreamType = "stderr" | "stdout";
15
+ declare class InteractiveManager {
16
+ #private;
17
+ constructor(stdout: InteractiveStreamHook, stderr: InteractiveStreamHook);
18
+ get lastLength(): number;
19
+ get outside(): number;
20
+ get isHooked(): boolean;
21
+ get isSuspended(): boolean;
22
+ erase(stream: StreamType, count?: number): void;
23
+ hook(): boolean;
24
+ resume(stream: StreamType, eraseRowCount?: number): void;
25
+ suspend(stream: StreamType, erase?: boolean): void;
26
+ unhook(separateHistory?: boolean): boolean;
27
+ update(stream: StreamType, rows: string[], from?: number): void;
28
+ private _clear;
29
+ }
30
+
31
+ declare global {
32
+ namespace VisulimaPail {
33
+ interface CustomMeta<L> {
34
+ }
35
+ }
36
+ }
37
+ type Primitive = bigint | boolean | number | string | symbol | null | undefined;
38
+ type LiteralUnion<LiteralType, BaseType extends Primitive> = LiteralType | (BaseType & Record<never, never>);
39
+ interface Meta<L> extends VisulimaPail.CustomMeta<L> {
40
+ badge: string | undefined;
41
+ context: any[] | undefined;
42
+ date: Date | string;
43
+ error: Error | undefined;
44
+ groups: string[];
45
+ label: string | undefined;
46
+ message: Primitive | ReadonlyArray<unknown> | Record<PropertyKey, unknown>;
47
+ prefix: string | undefined;
48
+ repeated?: number | undefined;
49
+ scope: string[] | undefined;
50
+ suffix: string | undefined;
51
+ traceError: Error | undefined;
52
+ type: {
53
+ level: ExtendedRfc5424LogLevels | L;
54
+ name: string;
55
+ };
56
+ }
57
+ type ExtendedRfc5424LogLevels = "alert" | "critical" | "debug" | "emergency" | "error" | "informational" | "notice" | "trace" | "warning";
58
+ type DefaultLogTypes = "alert" | "await" | "complete" | "critical" | "debug" | "emergency" | "error" | "info" | "log" | "notice" | "pending" | "start" | "stop" | "success" | "trace" | "wait" | "warn" | "watch";
59
+ interface LoggerFunction {
60
+ (...message: any[]): void;
61
+ (message: Message): void;
62
+ }
63
+ interface LoggerConfiguration<L extends string = never> {
64
+ badge?: string;
65
+ color?: AnsiColors | undefined;
66
+ label: string;
67
+ logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>;
68
+ }
69
+ type LoggerTypesConfig<T extends string, L extends string = never> = Record<T, Partial<LoggerConfiguration<L>>>;
70
+ type DefaultLoggerTypes<L extends string = never> = Record<DefaultLogTypes, LoggerConfiguration<L>>;
71
+ type ReadonlyMeta<L extends string = never> = Readonly<Meta<L>>;
72
+ interface Reporter<L extends string = never> {
73
+ log: (meta: ReadonlyMeta<L>) => void;
74
+ }
75
+ interface StreamAwareReporter<L extends string = never> extends Reporter<L> {
76
+ setStderr: (stderr: NodeJS.WriteStream) => void;
77
+ setStdout: (stdout: NodeJS.WriteStream) => void;
78
+ }
79
+ interface LoggerTypesAwareReporter<T extends string = never, L extends string = never> extends Reporter<L> {
80
+ setLoggerTypes: (types: LoggerTypesConfig<T, L> & Partial<LoggerTypesConfig<DefaultLogTypes, L>>) => void;
81
+ }
82
+ interface StringifyAwareReporter<L extends string = never> extends Reporter<L> {
83
+ setStringify: (stringify: typeof JSON.stringify) => void;
84
+ }
85
+ interface InteractiveStreamReporter<L extends string = never> extends StreamAwareReporter<L> {
86
+ setInteractiveManager: (manager?: InteractiveManager) => void;
87
+ setIsInteractive: (interactive: boolean) => void;
88
+ }
89
+ interface Processor<L extends string = never> {
90
+ process: (meta: Meta<L>) => Meta<L>;
91
+ }
92
+ interface StringifyAwareProcessor<L extends string = never> extends Processor<L> {
93
+ setStringify: (stringify: typeof JSON.stringify) => void;
94
+ }
95
+ interface ConstructorOptions<T extends string = never, L extends string = never> {
96
+ disabled?: boolean;
97
+ logLevel?: LiteralUnion<ExtendedRfc5424LogLevels, L>;
98
+ logLevels?: Partial<Record<ExtendedRfc5424LogLevels, number>> & Record<L, number>;
99
+ messages?: {
100
+ timerEnd?: string;
101
+ timerStart?: string;
102
+ };
103
+ processors?: Processor<L>[];
104
+ rawReporter?: Reporter<L>;
105
+ reporters?: Reporter<L>[];
106
+ scope?: string[] | string;
107
+ throttle?: number;
108
+ throttleMin?: number;
109
+ types?: LoggerTypesConfig<T, L> & Partial<LoggerTypesConfig<DefaultLogTypes, L>>;
110
+ }
111
+ interface ServerConstructorOptions<T extends string = never, L extends string = never> extends ConstructorOptions<T, L> {
112
+ interactive?: boolean;
113
+ stderr?: NodeJS.WriteStream;
114
+ stdout?: NodeJS.WriteStream;
115
+ }
116
+ type Message = {
117
+ context?: any[] | undefined;
118
+ message: Primitive | ReadonlyArray<unknown> | undefined;
119
+ prefix?: string;
120
+ suffix?: string;
121
+ };
122
+
123
+ 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 LiteralUnion as e, type ServerConstructorOptions as f, type ReadonlyMeta as g, type StringifyAwareReporter as h, type InteractiveStreamReporter as i, type StringifyAwareProcessor as j };
@@ -0,0 +1 @@
1
+ var f=Object.defineProperty;var n=(r,e)=>f(r,"name",{value:e,configurable:!0});import{configure as m}from"safe-stable-stringify";import{L as d,o as u,E as L}from"./pail.BP9NvmFd.mjs";import{a as y}from"./pail.DF5wQ_KA.mjs";var b=Object.defineProperty,v=n((r,e)=>b(r,"name",{value:e,configurable:!0}),"t$1");let w=class{static{n(this,"a")}static{v(this,"RawReporter")}log(e){const{context:t=[],message:s,type:o}=e;y(o.level)(s,...t)}};var x=Object.defineProperty,_=n((r,e)=>x(r,"name",{value:e,configurable:!0}),"a");const M=_(r=>r===void 0?[]:Array.isArray(r)?r:[r],"arrayify");var T=Object.defineProperty,E=n((r,e)=>T(r,"name",{value:e,configurable:!0}),"t");const R=E((r,e)=>{const t={...r};return Object.keys(e).forEach(s=>{t[s]={...t[s],...e[s]}}),t},"mergeTypes");var j=Object.defineProperty,c=n((r,e)=>j(r,"name",{value:e,configurable:!0}),"l");const P={badge:void 0,context:void 0,error:void 0,label:void 0,message:void 0,prefix:void 0,repeated:void 0,scope:void 0,suffix:void 0};class S{static{n(this,"PailBrowserImpl")}static{c(this,"PailBrowserImpl")}timersMap;countMap;seqTimers;lastLog;logLevels;disabled;scopeName;types;longestLabel;processors;generalLogLevel;reporters;throttle;throttleMin;stringify;groups;startTimerMessage;endTimerMessage;rawReporter;constructor(e){this.throttle=e.throttle??1e3,this.throttleMin=e.throttleMin??5,this.stringify=m({strict:!0}),this.startTimerMessage=e.messages?.timerStart??"Initialized timer...",this.endTimerMessage=e.messages?.timerEnd??"Timer run for:",this.types=R(d,e.types??{}),this.longestLabel=u(this.types),this.logLevels={...L,...e.logLevels},this.generalLogLevel=this._normalizeLogLevel(e.logLevel),this.reporters=new Set,this.processors=new Set,this.disabled=e.disabled??!1,this.scopeName=M(e.scope).filter(Boolean),this.timersMap=new Map,this.countMap=new Map,this.groups=[],this.seqTimers=new Set;for(const t in this.types)this[t]=this._logger.bind(this,t,!1);this.lastLog={},Array.isArray(e.reporters)&&this.registerReporters(e.reporters),this.rawReporter=this.extendReporter(e.rawReporter??new w),Array.isArray(e.processors)&&this.registerProcessors(e.processors)}wrapConsole(){for(const e in this.types)console["__"+e]||(console["__"+e]=console[e]),console[e]=this[e]}restoreConsole(){for(const e in this.types)console["__"+e]&&(console[e]=console["__"+e],delete console["__"+e])}wrapException(){typeof process<"u"&&(process.on("uncaughtException",e=>{this.error(e)}),process.on("unhandledRejection",e=>{this.error(e)}))}disable(){this.disabled=!0}enable(){this.disabled=!1}isEnabled(){return!this.disabled}scope(...e){if(e.length===0)throw new Error("No scope name was defined.");return this.scopeName=e.flat(),this}unscope(){this.scopeName=[]}time(e="default"){this.seqTimers.has(e)?this._logger("warn",!1,{message:"Timer '"+e+"' already exists",prefix:e}):(this.seqTimers.add(e),this.timersMap.set(e,Date.now()),this._logger("start",!1,{message:this.startTimerMessage,prefix:e}))}timeLog(e,...t){if(!e&&this.seqTimers.size>0&&(e=[...this.seqTimers].pop()),e&&this.timersMap.has(e)){const s=Date.now()-this.timersMap.get(e);this._logger("info",!1,{context:t,message:s<1e3?s+" ms":(s/1e3).toFixed(2)+" s",prefix:e})}else this._logger("warn",!1,{context:t,message:"Timer not found",prefix:e})}timeEnd(e){if(!e&&this.seqTimers.size>0&&(e=[...this.seqTimers].pop()),e&&this.timersMap.has(e)){const t=Date.now()-this.timersMap.get(e);this.timersMap.delete(e),this._logger("stop",!1,{message:this.endTimerMessage+" "+(t<1e3?t+" ms":(t/1e3).toFixed(2)+" s"),prefix:e})}}group(e="console.group"){typeof window>"u"?console.group(e):this.groups.push(e)}groupEnd(){typeof window>"u"?console.groupEnd():this.groups.pop()}count(e="default"){const t=this.countMap.get(e)??0;this.countMap.set(e,t+1),this._logger("log",!1,{message:e+": "+(t+1),prefix:e})}countReset(e="default"){this.countMap.has(e)?this.countMap.delete(e):this._logger("warn",!1,{message:"Count for "+e+" does not exist",prefix:e})}clear(){console.clear()}raw(e,...t){this.disabled||this._logger("log",!0,{context:t,message:e})}extendReporter(e){return typeof e.setLoggerTypes=="function"&&e.setLoggerTypes(this.types),typeof e.setStringify=="function"&&e.setStringify(this.stringify),e}registerReporters(e){for(const t of e)this.reporters.add(this.extendReporter(t))}_report(e,t){if(t)this.rawReporter.log(Object.freeze(e));else for(const s of this.reporters)s.log(Object.freeze(e))}registerProcessors(e){for(const t of e)typeof t.setStringify=="function"&&t.setStringify(this.stringify),this.processors.add(t)}_normalizeLogLevel(e){return e&&this.logLevels[e]?e:"debug"}_buildMeta(e,t,...s){const o={...P};if(o.type={level:t.logLevel,name:e},o.groups=this.groups,o.scope=this.scopeName,o.date=new Date,s.length===1&&typeof s[0]=="object"&&s[0]!==null)if(s[0]instanceof Error)o.error=s[0];else if("message"in s[0]){const{context:i,message:g,prefix:h,suffix:a}=s[0];i&&(o.context=i),h&&(o.prefix=h),a&&(o.suffix=a),o.message=g}else o.message=s[0];else s.length>1&&typeof s[0]=="string"?(o.message=s[0],o.context=s.slice(1)):o.message=s[0];return t.logLevel==="trace"&&(o.traceError=new Error("Trace")),t.badge&&(o.badge=t.badge),t.label&&(o.label=t.label),o}_logger(e,t,...s){if(this.disabled)return;const o=this._normalizeLogLevel(this.types[e].logLevel);if(this.logLevels[o]>=this.logLevels[this.generalLogLevel]){let i=this._buildMeta(e,this.types[e],...s);const g=c((a=!1)=>{const l=(this.lastLog.count||0)-this.throttleMin;if(this.lastLog.object&&l>0){const p={...this.lastLog.object};l>1&&(p.repeated=l),this._report(p,t),this.lastLog.count=1}if(a){for(const p of this.processors)i={...p.process(i)};this.lastLog.object=i,this._report(i,t)}},"resolveLog");clearTimeout(this.lastLog.timeout);const h=this.lastLog.time&&i.date?new Date(i.date).getTime()-this.lastLog.time.getTime():0;if(this.lastLog.time=new Date(i.date),h<this.throttle)try{const a=JSON.stringify([i.label,i.scope,i.type,i.message,i.prefix,i.suffix,i.context]),l=this.lastLog.serialized===a;if(this.lastLog.serialized=a,l&&(this.lastLog.count=(this.lastLog.count||0)+1,this.lastLog.count>this.throttleMin)){this.lastLog.timeout=setTimeout(g,this.throttle);return}}catch{}g(!0)}}}const A=S;export{A as P,S as a};
@@ -0,0 +1 @@
1
+ "use strict";var t=Object.defineProperty;var a=(e,l)=>t(e,"name",{value:l,configurable:!0});const n={alert:7,critical:6,debug:1,emergency:8,error:5,informational:2,notice:3,trace:2,warning:4},i={alert:{color:"red",label:"alert",logLevel:"alert"},await:{color:"blue",label:"awaiting",logLevel:"informational"},complete:{color:"cyan",label:"complete",logLevel:"informational"},critical:{color:"redBright",label:"critical",logLevel:"critical"},debug:{color:"gray",label:"debug",logLevel:"debug"},emergency:{color:"redBright",label:"emergency",logLevel:"emergency"},error:{color:"red",label:"error",logLevel:"error"},info:{color:"blueBright",label:"info",logLevel:"informational"},log:{label:"",logLevel:"informational"},notice:{color:"magentaBright",label:"notice",logLevel:"notice"},pending:{color:"magenta",label:"pending",logLevel:"informational"},start:{color:"greenBright",label:"start",logLevel:"informational"},stop:{color:"red",label:"stop",logLevel:"informational"},success:{color:"green",label:"success",logLevel:"informational"},trace:{color:"cyanBright",label:"trace",logLevel:"trace"},wait:{color:"blue",label:"waiting",logLevel:"informational"},warn:{color:"yellow",label:"warning",logLevel:"warning"},watch:{color:"yellowBright",label:"watching",logLevel:"informational"}};var c=Object.defineProperty,g=a((e,l)=>c(e,"name",{value:l,configurable:!0}),"r");const b=g(e=>{const l=Object.keys(e).map(o=>e[o].label??"");return l.length===0?"":l.reduce((o,r)=>o.length>r.length?o:r)},"getLongestLabel");exports.EXTENDED_RFC_5424_LOG_LEVELS=n;exports.LOG_TYPES=i;exports.o=b;
@@ -0,0 +1 @@
1
+ "use strict";var m=Object.defineProperty;var n=(r,e)=>m(r,"name",{value:e,configurable:!0});const u=require("safe-stable-stringify"),p=require("./pail.DwWkopDF.cjs"),L=require("./pail.BU1VqUN1.cjs");var y=Object.defineProperty,b=n((r,e)=>y(r,"name",{value:e,configurable:!0}),"t$1");let v=class{static{n(this,"a")}static{b(this,"RawReporter")}log(e){const{context:t=[],message:s,type:o}=e;L.a(o.level)(s,...t)}};var w=Object.defineProperty,x=n((r,e)=>w(r,"name",{value:e,configurable:!0}),"a");const _=x(r=>r===void 0?[]:Array.isArray(r)?r:[r],"arrayify");var M=Object.defineProperty,T=n((r,e)=>M(r,"name",{value:e,configurable:!0}),"t");const E=T((r,e)=>{const t={...r};return Object.keys(e).forEach(s=>{t[s]={...t[s],...e[s]}}),t},"mergeTypes");var R=Object.defineProperty,f=n((r,e)=>R(r,"name",{value:e,configurable:!0}),"l");const S={badge:void 0,context:void 0,error:void 0,label:void 0,message:void 0,prefix:void 0,repeated:void 0,scope:void 0,suffix:void 0};class d{static{n(this,"PailBrowserImpl")}static{f(this,"PailBrowserImpl")}timersMap;countMap;seqTimers;lastLog;logLevels;disabled;scopeName;types;longestLabel;processors;generalLogLevel;reporters;throttle;throttleMin;stringify;groups;startTimerMessage;endTimerMessage;rawReporter;constructor(e){this.throttle=e.throttle??1e3,this.throttleMin=e.throttleMin??5,this.stringify=u.configure({strict:!0}),this.startTimerMessage=e.messages?.timerStart??"Initialized timer...",this.endTimerMessage=e.messages?.timerEnd??"Timer run for:",this.types=E(p.LOG_TYPES,e.types??{}),this.longestLabel=p.o(this.types),this.logLevels={...p.EXTENDED_RFC_5424_LOG_LEVELS,...e.logLevels},this.generalLogLevel=this._normalizeLogLevel(e.logLevel),this.reporters=new Set,this.processors=new Set,this.disabled=e.disabled??!1,this.scopeName=_(e.scope).filter(Boolean),this.timersMap=new Map,this.countMap=new Map,this.groups=[],this.seqTimers=new Set;for(const t in this.types)this[t]=this._logger.bind(this,t,!1);this.lastLog={},Array.isArray(e.reporters)&&this.registerReporters(e.reporters),this.rawReporter=this.extendReporter(e.rawReporter??new v),Array.isArray(e.processors)&&this.registerProcessors(e.processors)}wrapConsole(){for(const e in this.types)console["__"+e]||(console["__"+e]=console[e]),console[e]=this[e]}restoreConsole(){for(const e in this.types)console["__"+e]&&(console[e]=console["__"+e],delete console["__"+e])}wrapException(){typeof process<"u"&&(process.on("uncaughtException",e=>{this.error(e)}),process.on("unhandledRejection",e=>{this.error(e)}))}disable(){this.disabled=!0}enable(){this.disabled=!1}isEnabled(){return!this.disabled}scope(...e){if(e.length===0)throw new Error("No scope name was defined.");return this.scopeName=e.flat(),this}unscope(){this.scopeName=[]}time(e="default"){this.seqTimers.has(e)?this._logger("warn",!1,{message:"Timer '"+e+"' already exists",prefix:e}):(this.seqTimers.add(e),this.timersMap.set(e,Date.now()),this._logger("start",!1,{message:this.startTimerMessage,prefix:e}))}timeLog(e,...t){if(!e&&this.seqTimers.size>0&&(e=[...this.seqTimers].pop()),e&&this.timersMap.has(e)){const s=Date.now()-this.timersMap.get(e);this._logger("info",!1,{context:t,message:s<1e3?s+" ms":(s/1e3).toFixed(2)+" s",prefix:e})}else this._logger("warn",!1,{context:t,message:"Timer not found",prefix:e})}timeEnd(e){if(!e&&this.seqTimers.size>0&&(e=[...this.seqTimers].pop()),e&&this.timersMap.has(e)){const t=Date.now()-this.timersMap.get(e);this.timersMap.delete(e),this._logger("stop",!1,{message:this.endTimerMessage+" "+(t<1e3?t+" ms":(t/1e3).toFixed(2)+" s"),prefix:e})}}group(e="console.group"){typeof window>"u"?console.group(e):this.groups.push(e)}groupEnd(){typeof window>"u"?console.groupEnd():this.groups.pop()}count(e="default"){const t=this.countMap.get(e)??0;this.countMap.set(e,t+1),this._logger("log",!1,{message:e+": "+(t+1),prefix:e})}countReset(e="default"){this.countMap.has(e)?this.countMap.delete(e):this._logger("warn",!1,{message:"Count for "+e+" does not exist",prefix:e})}clear(){console.clear()}raw(e,...t){this.disabled||this._logger("log",!0,{context:t,message:e})}extendReporter(e){return typeof e.setLoggerTypes=="function"&&e.setLoggerTypes(this.types),typeof e.setStringify=="function"&&e.setStringify(this.stringify),e}registerReporters(e){for(const t of e)this.reporters.add(this.extendReporter(t))}_report(e,t){if(t)this.rawReporter.log(Object.freeze(e));else for(const s of this.reporters)s.log(Object.freeze(e))}registerProcessors(e){for(const t of e)typeof t.setStringify=="function"&&t.setStringify(this.stringify),this.processors.add(t)}_normalizeLogLevel(e){return e&&this.logLevels[e]?e:"debug"}_buildMeta(e,t,...s){const o={...S};if(o.type={level:t.logLevel,name:e},o.groups=this.groups,o.scope=this.scopeName,o.date=new Date,s.length===1&&typeof s[0]=="object"&&s[0]!==null)if(s[0]instanceof Error)o.error=s[0];else if("message"in s[0]){const{context:i,message:g,prefix:h,suffix:a}=s[0];i&&(o.context=i),h&&(o.prefix=h),a&&(o.suffix=a),o.message=g}else o.message=s[0];else s.length>1&&typeof s[0]=="string"?(o.message=s[0],o.context=s.slice(1)):o.message=s[0];return t.logLevel==="trace"&&(o.traceError=new Error("Trace")),t.badge&&(o.badge=t.badge),t.label&&(o.label=t.label),o}_logger(e,t,...s){if(this.disabled)return;const o=this._normalizeLogLevel(this.types[e].logLevel);if(this.logLevels[o]>=this.logLevels[this.generalLogLevel]){let i=this._buildMeta(e,this.types[e],...s);const g=f((a=!1)=>{const l=(this.lastLog.count||0)-this.throttleMin;if(this.lastLog.object&&l>0){const c={...this.lastLog.object};l>1&&(c.repeated=l),this._report(c,t),this.lastLog.count=1}if(a){for(const c of this.processors)i={...c.process(i)};this.lastLog.object=i,this._report(i,t)}},"resolveLog");clearTimeout(this.lastLog.timeout);const h=this.lastLog.time&&i.date?new Date(i.date).getTime()-this.lastLog.time.getTime():0;if(this.lastLog.time=new Date(i.date),h<this.throttle)try{const a=JSON.stringify([i.label,i.scope,i.type,i.message,i.prefix,i.suffix,i.context]),l=this.lastLog.serialized===a;if(this.lastLog.serialized=a,l&&(this.lastLog.count=(this.lastLog.count||0)+1,this.lastLog.count>this.throttleMin)){this.lastLog.timeout=setTimeout(g,this.throttle);return}}catch{}g(!0)}}}const j=d;exports.PailBrowser=j;exports.PailBrowserImpl=d;
@@ -0,0 +1 @@
1
+ var a=Object.defineProperty;var n=(r,t)=>a(r,"name",{value:t,configurable:!0});import{build as c}from"@visulima/fmt";var y=Object.defineProperty,f=n((r,t)=>y(r,"name",{value:t,configurable:!0}),"o");class g{static{n(this,"p")}static{f(this,"MessageFormatterProcessor")}#t;#e;constructor(t={}){this.#e=t.formatters}setStringify(t){this.#t=t}process(t){const e=c({formatters:this.#e,stringify:f(s=>{const o=this.#t(s);return o===void 0?(console.warn("Unable to stringify value of type "+typeof s,s),"undefined"):o},"stringify")});return t.message!==void 0&&(t.message=this._format(e,t.message,t.context??[])),t}_format(t,e,s=[]){if(typeof e=="string")return t(e,s);if(typeof e=="object"&&e!==null)for(const o in e){const i=e[o];(typeof i=="string"||Array.isArray(i)||typeof i=="object")&&(e[o]=this._format(t,i,s))}return e}}const u=g;export{u as g};
@@ -0,0 +1,36 @@
1
+ import { stringify } from 'safe-stable-stringify';
2
+ import { h as StringifyAwareReporter, g as ReadonlyMeta, e as LiteralUnion, E as ExtendedRfc5424LogLevels, c as LoggerTypesAwareReporter, d as LoggerTypesConfig, a as DefaultLogTypes } from './pail.DrhFTME0.mjs';
3
+
4
+ declare abstract class AbstractJsonReporter<L extends string = never> implements StringifyAwareReporter<L> {
5
+ protected stringify: typeof stringify | undefined;
6
+ setStringify(function_: any): void;
7
+ log(meta: ReadonlyMeta<L>): void;
8
+ protected abstract _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void;
9
+ }
10
+
11
+ declare abstract class AbstractPrettyReporter<T extends string = never, L extends string = never> implements LoggerTypesAwareReporter<T, L>, StringifyAwareReporter<L> {
12
+ protected readonly _styles: PrettyStyleOptions;
13
+ protected _loggerTypes: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;
14
+ protected _stringify: typeof stringify | undefined;
15
+ protected constructor(options: Partial<PrettyStyleOptions>);
16
+ setStringify(function_: any): void;
17
+ setLoggerTypes(types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>): void;
18
+ abstract log(meta: ReadonlyMeta<L>): void;
19
+ }
20
+ type PrettyStyleOptions = {
21
+ bold: {
22
+ label: boolean;
23
+ };
24
+ dateFormatter: (date: Date) => string;
25
+ messageLength: number | undefined;
26
+ underline: {
27
+ label: boolean;
28
+ prefix: boolean;
29
+ suffix: boolean;
30
+ };
31
+ uppercase: {
32
+ label: boolean;
33
+ };
34
+ };
35
+
36
+ export { AbstractJsonReporter as A, type PrettyStyleOptions as P, AbstractPrettyReporter as a };
@@ -0,0 +1 @@
1
+ "use strict";var g=Object.defineProperty;var s=(t,e)=>g(t,"name",{value:e,configurable:!0});const n=require("./pail.DwWkopDF.cjs");var i=Object.defineProperty,l=s((t,e)=>i(t,"name",{value:e,configurable:!0}),"r$1");const c=l(t=>{const e=Object.keys(t).map(r=>t[r].badge??"");return e.length===0?"":e.reduce((r,a)=>r.length>a.length?r:a)},"getLongestBadge");var p=Object.defineProperty,o=s((t,e)=>p(t,"name",{value:e,configurable:!0}),"r");const y=o(t=>[t.getHours(),t.getMinutes(),t.getSeconds()].map(e=>String(e).padStart(2,"0")).join(":"),"dateFormatter");class b{static{s(this,"AbstractPrettyReporter")}static{o(this,"AbstractPrettyReporter")}_styles;_loggerTypes;_stringify;constructor(e){this._styles={bold:{label:!1},dateFormatter:y,underline:{label:!1,message:!1,prefix:!1,suffix:!1},uppercase:{label:!1},...e},this._loggerTypes=n.LOG_TYPES}setStringify(e){this._stringify=e}setLoggerTypes(e){this._loggerTypes=e}}exports.AbstractPrettyReporter=b;exports.o=c;
@@ -0,0 +1 @@
1
+ "use strict";var s=Object.defineProperty;var t=(r,e)=>s(r,"name",{value:e,configurable:!0});const c=require("./pail.BU1VqUN1.cjs"),n=require("./pail.D9OQPGNq.cjs");var a=Object.defineProperty,i=t((r,e)=>a(r,"name",{value:e,configurable:!0}),"t");class u extends n.o{static{t(this,"c")}static{i(this,"JsonReporter")}constructor(){super()}_log(e,o){c.a(o)(e)}}const l=u;exports.i=l;
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@visulima/pail",
3
- "version": "1.1.13",
3
+ "version": "1.2.0",
4
4
  "description": "Find a file or directory by walking up parent directories.",
5
5
  "keywords": [
6
+ "ansi",
6
7
  "anolilab",
7
8
  "browser",
8
9
  "browser-logger",
@@ -36,6 +37,8 @@
36
37
  "logger",
37
38
  "logging",
38
39
  "node",
40
+ "stream",
41
+ "pretty",
39
42
  "node-logger",
40
43
  "pail",
41
44
  "pino",
@@ -47,6 +50,7 @@
47
50
  "rotating-log",
48
51
  "show error",
49
52
  "timer",
53
+ "universal",
50
54
  "visulima",
51
55
  "warning-logging",
52
56
  "winston"
@@ -77,14 +81,14 @@
77
81
  "type": "module",
78
82
  "exports": {
79
83
  ".": {
80
- "browser": "./dist/index.browser.js",
84
+ "browser": "./dist/index.browser.mjs",
81
85
  "require": {
82
86
  "types": "./dist/index.server.d.cts",
83
87
  "default": "./dist/index.server.cjs"
84
88
  },
85
89
  "import": {
86
- "types": "./dist/index.server.d.ts",
87
- "default": "./dist/index.server.js"
90
+ "types": "./dist/index.server.d.mts",
91
+ "default": "./dist/index.server.mjs"
88
92
  }
89
93
  },
90
94
  "./browser": {
@@ -93,8 +97,8 @@
93
97
  "default": "./dist/index.browser.cjs"
94
98
  },
95
99
  "import": {
96
- "types": "./dist/index.browser.d.ts",
97
- "default": "./dist/index.browser.js"
100
+ "types": "./dist/index.browser.d.mts",
101
+ "default": "./dist/index.browser.mjs"
98
102
  }
99
103
  },
100
104
  "./server": {
@@ -103,58 +107,79 @@
103
107
  "default": "./dist/index.server.cjs"
104
108
  },
105
109
  "import": {
106
- "types": "./dist/index.server.d.ts",
107
- "default": "./dist/index.server.js"
110
+ "types": "./dist/index.server.d.mts",
111
+ "default": "./dist/index.server.mjs"
108
112
  }
109
113
  },
110
114
  "./reporter": {
111
- "browser": "./dist/reporter.browser.js",
115
+ "browser": "./dist/reporter.browser.mjs",
112
116
  "require": {
113
117
  "types": "./dist/reporter.server.d.cts",
114
118
  "default": "./dist/reporter.server.cjs"
115
119
  },
116
120
  "import": {
117
- "types": "./dist/reporter.server.d.ts",
118
- "default": "./dist/reporter.server.js"
121
+ "types": "./dist/reporter.server.d.mts",
122
+ "default": "./dist/reporter.server.mjs"
123
+ }
124
+ },
125
+ "./server/reporter": {
126
+ "require": {
127
+ "types": "./dist/reporter.server.d.cts",
128
+ "default": "./dist/reporter.server.cjs"
129
+ },
130
+ "import": {
131
+ "types": "./dist/reporter.server.d.mts",
132
+ "default": "./dist/reporter.server.mjs"
119
133
  }
120
134
  },
121
135
  "./browser/reporter": {
136
+ "browser": "./dist/reporter.browser.mjs",
122
137
  "require": {
123
138
  "types": "./dist/reporter.browser.d.cts",
124
139
  "default": "./dist/reporter.browser.cjs"
125
140
  },
126
141
  "import": {
127
- "types": "./dist/reporter.browser.d.ts",
128
- "default": "./dist/reporter.browser.js"
142
+ "types": "./dist/reporter.browser.d.mts",
143
+ "default": "./dist/reporter.browser.mjs"
129
144
  }
130
145
  },
131
- "./server/reporter": {
132
- "browser": "./dist/reporter.browser.js",
146
+ "./processor": {
147
+ "browser": "./dist/processor.browser.mjs",
133
148
  "require": {
134
- "types": "./dist/reporter.server.d.cts",
135
- "default": "./dist/reporter.server.cjs"
149
+ "types": "./dist/processor.server.d.cts",
150
+ "default": "./dist/processor.server.cjs"
136
151
  },
137
152
  "import": {
138
- "types": "./dist/reporter.server.d.ts",
139
- "default": "./dist/reporter.server.js"
153
+ "types": "./dist/processor.server.d.mts",
154
+ "default": "./dist/processor.server.mjs"
140
155
  }
141
156
  },
142
- "./processor": {
143
- "browser": "./dist/processor.browser.js",
157
+ "./server/processor": {
144
158
  "require": {
145
159
  "types": "./dist/processor.server.d.cts",
146
160
  "default": "./dist/processor.server.cjs"
147
161
  },
148
162
  "import": {
149
- "types": "./dist/processor.server.d.ts",
150
- "default": "./dist/processor.server.js"
163
+ "types": "./dist/processor.server.d.mts",
164
+ "default": "./dist/processor.server.mjs"
165
+ }
166
+ },
167
+ "./browser/processor": {
168
+ "browser": "./dist/processor.browser.mjs",
169
+ "require": {
170
+ "types": "./dist/processor.browser.d.cts",
171
+ "default": "./dist/processor.browser.cjs"
172
+ },
173
+ "import": {
174
+ "types": "./dist/processor.browser.d.mts",
175
+ "default": "./dist/processor.browser.mjs"
151
176
  }
152
177
  },
153
178
  "./package.json": "./package.json"
154
179
  },
155
180
  "main": "dist/index.server.cjs",
156
- "module": "dist/index.server.js",
157
- "browser": "dist/index.browser.js",
181
+ "module": "dist/index.server.mjs",
182
+ "browser": "dist/index.browser.mjs",
158
183
  "types": "dist/index.server.d.ts",
159
184
  "files": [
160
185
  "dist/**",
@@ -177,10 +202,12 @@
177
202
  "@secretlint/secretlint-rule-preset-recommend": "^8.2.4",
178
203
  "@total-typescript/ts-reset": "^0.5.1",
179
204
  "@types/node": "18.19.15",
205
+ "@visulima/packem": "^1.0.0-alpha.41",
180
206
  "@vitest/coverage-v8": "^1.6.0",
181
207
  "@vitest/ui": "^1.6.0",
182
208
  "conventional-changelog-conventionalcommits": "8.0.0",
183
209
  "cross-env": "^7.0.3",
210
+ "esbuild": "^0.21.4",
184
211
  "eslint": "^8.57.0",
185
212
  "eslint-plugin-deprecation": "^3.0.0",
186
213
  "eslint-plugin-etc": "^2.0.3",
@@ -195,7 +222,6 @@
195
222
  "semantic-release": "24.0.0",
196
223
  "string-length": "^6.0.0",
197
224
  "terminal-size": "^4.0.0",
198
- "tsup": "^8.1.0",
199
225
  "typescript": "^5.4.5",
200
226
  "vitest": "^1.6.0",
201
227
  "wrap-ansi": "^9.0.0"
@@ -232,17 +258,9 @@
232
258
  "info_on_disabling_etc_no_deprecated": false
233
259
  }
234
260
  },
235
- "sources": [
236
- "src/index.browser.ts",
237
- "src/index.server.ts",
238
- "src/processor.browser.ts",
239
- "src/processor.server.ts",
240
- "src/reporter.browser.ts",
241
- "src/reporter.server.ts"
242
- ],
243
261
  "scripts": {
244
- "build": "cross-env NODE_ENV=development tsup",
245
- "build:prod": "node ./scripts/wait.js && cross-env NODE_ENV=production tsup",
262
+ "build": "cross-env NODE_ENV=development packem build",
263
+ "build:prod": "cross-env NODE_ENV=production packem build",
246
264
  "clean": "rimraf node_modules dist .eslintcache",
247
265
  "dev": "pnpm run build --watch",
248
266
  "lint:eslint": "eslint . --ext js,cjs,mjs,jsx,ts,tsx,json,yaml,yml,md,mdx --max-warnings=0 --config .eslintrc.cjs",
@@ -1,9 +0,0 @@
1
- import { a as a$1 } from './chunk-AFMDCM5W.js';
2
- import { b as b$1, c as c$1, a } from './chunk-NF47XQ47.js';
3
- import { configure } from 'safe-stable-stringify';
4
-
5
- var c=class{log(e){let{context:t=[],message:s,type:r}=e;a$1(r.level)(s,...t);}};var T=i=>i===void 0?[]:Array.isArray(i)?i:[i];var w=(i,e)=>{let t={...i};return Object.keys(e).forEach(s=>{t[s]={...t[s],...e[s]};}),t};var v=(i,e)=>i.length>=e?i:i.padEnd(e);var b={badge:void 0,context:void 0,error:void 0,label:void 0,message:void 0,prefix:void 0,repeated:void 0,scope:void 0,suffix:void 0},L=class{timersMap;countMap;seqTimers;lastLog;logLevels;disabled;scopeName;types;longestLabel;processors;generalLogLevel;reporters;throttle;throttleMin;stringify;groups;startTimerMessage;endTimerMessage;rawReporter;constructor(e){this.throttle=e.throttle??1e3,this.throttleMin=e.throttleMin??5,this.stringify=configure({strict:!0}),this.startTimerMessage=e.messages?.timerStart??"Initialized timer...",this.endTimerMessage=e.messages?.timerEnd??"Timer run for:",this.types=w(b$1,e.types??{}),this.longestLabel=c$1(this.types),this.logLevels={...a,...e.logLevels},this.generalLogLevel=this._normalizeLogLevel(e.logLevel),this.reporters=new Set,this.processors=new Set,this.disabled=e.disabled??!1,this.scopeName=T(e.scope).filter(Boolean),this.timersMap=new Map,this.countMap=new Map,this.groups=[],this.seqTimers=new Set;for(let t in this.types)this[t]=this._logger.bind(this,t,!1);this.lastLog={},Array.isArray(e.reporters)&&this.registerReporters(e.reporters),this.rawReporter=this.extendReporter(e.rawReporter??new c),Array.isArray(e.processors)&&this.registerProcessors(e.processors);}wrapConsole(){for(let e in this.types)console["__"+e]||(console["__"+e]=console[e]),console[e]=this[e];}restoreConsole(){for(let e in this.types)console["__"+e]&&(console[e]=console["__"+e],delete console["__"+e]);}wrapException(){process.on("uncaughtException",e=>{this.error(e);}),process.on("unhandledRejection",e=>{this.error(e);});}disable(){this.disabled=!0;}enable(){this.disabled=!1;}isEnabled(){return !this.disabled}scope(...e){if(e.length===0)throw new Error("No scope name was defined.");return this.scopeName=e.flat(),this}unscope(){this.scopeName=[];}time(e="default"){this.seqTimers.has(e)?this._logger("warn",!1,{message:"Timer '"+e+"' already exists",prefix:e}):(this.seqTimers.add(e),this.timersMap.set(e,Date.now()),this._logger("start",!1,{message:this.startTimerMessage,prefix:e}));}timeLog(e,...t){if(!e&&this.seqTimers.size>0&&(e=[...this.seqTimers].pop()),e&&this.timersMap.has(e)){let s=Date.now()-this.timersMap.get(e);this._logger("info",!1,{context:t,message:s<1e3?s+" ms":(s/1e3).toFixed(2)+" s",prefix:e});}else this._logger("warn",!1,{context:t,message:"Timer not found",prefix:e});}timeEnd(e){if(!e&&this.seqTimers.size>0&&(e=[...this.seqTimers].pop()),e&&this.timersMap.has(e)){let t=Date.now()-this.timersMap.get(e);this.timersMap.delete(e),this._logger("stop",!1,{message:this.endTimerMessage+" "+(t<1e3?t+" ms":(t/1e3).toFixed(2)+" s"),prefix:e});}}group(e="console.group"){typeof window>"u"?console.group(e):this.groups.push(e);}groupEnd(){typeof window>"u"?console.groupEnd():this.groups.pop();}count(e="default"){let t=this.countMap.get(e)??0;this.countMap.set(e,t+1),this._logger("log",!1,{message:e+": "+(t+1),prefix:e});}countReset(e="default"){this.countMap.has(e)?this.countMap.delete(e):this._logger("warn",!1,{message:"Count for "+e+" does not exist",prefix:e});}clear(){console.clear();}raw(e,...t){this.disabled||this._logger("log",!0,{context:t,message:e});}extendReporter(e){return typeof e.setLoggerTypes=="function"&&e.setLoggerTypes(this.types),typeof e.setStringify=="function"&&e.setStringify(this.stringify),e}registerReporters(e){for(let t of e)this.reporters.add(this.extendReporter(t));}_report(e,t){if(t)this.rawReporter.log(Object.freeze(e));else for(let s of this.reporters)s.log(Object.freeze(e));}registerProcessors(e){for(let t of e)typeof t.setStringify=="function"&&t.setStringify(this.stringify),this.processors.add(t);}_normalizeLogLevel(e){return e&&this.logLevels[e]?e:"debug"}_buildMeta(e,t,...s){let r={...b};if(r.type={level:t.logLevel,name:e},r.groups=this.groups,r.scope=this.scopeName,r.date=new Date,s.length===1&&typeof s[0]=="object"&&s[0]!==null)if(s[0]instanceof Error)r.error=s[0];else if("message"in s[0]){let{context:o,message:p,prefix:g,suffix:n}=s[0];o&&(r.context=o),g&&(r.prefix=g),n&&(r.suffix=n),r.message=p;}else r.message=s[0];else s.length>1&&typeof s[0]=="string"?(r.message=s[0],r.context=s.slice(1)):r.message=s[0];return t.logLevel==="trace"&&(r.traceError=new Error("Trace")),t.badge&&(r.badge=v(t.badge,t.badge.length+1)),t.label&&(r.label=t.label),r}_logger(e,t,...s){if(this.disabled)return;let r=this._normalizeLogLevel(this.types[e].logLevel);if(this.logLevels[r]>=this.logLevels[this.generalLogLevel]){let o=this._buildMeta(e,this.types[e],...s),p=(n=!1)=>{let a=(this.lastLog.count||0)-this.throttleMin;if(this.lastLog.object&&a>0){let l={...this.lastLog.object};a>1&&(l.repeated=a),this._report(l,t),this.lastLog.count=1;}if(n){for(let l of this.processors)o={...l.process(o)};this.lastLog.object=o,this._report(o,t);}};clearTimeout(this.lastLog.timeout);let g=this.lastLog.time&&o.date?new Date(o.date).getTime()-this.lastLog.time.getTime():0;if(this.lastLog.time=new Date(o.date),g<this.throttle)try{let n=JSON.stringify([o.label,o.scope,o.type,o.message,o.prefix,o.suffix,o.context]),a=this.lastLog.serialized===n;if(this.lastLog.serialized=n,a&&(this.lastLog.count=(this.lastLog.count||0)+1,this.lastLog.count>this.throttleMin)){this.lastLog.timeout=setTimeout(p,this.throttle);return}}catch{}p(!0);}}},q=L;
6
-
7
- export { L as a, q as b };
8
- //# sourceMappingURL=out.js.map
9
- //# sourceMappingURL=chunk-2I5JHTDY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pail.browser.ts","../src/reporter/raw/raw.browser.ts","../src/util/arrayify.ts","../src/util/merge-types.ts","../src/util/pad-end.ts"],"names":["stringifyConfigure","RawReporter","meta","context","message","type","writeConsoleLogBasedOnLevel","arrayify","x","mergeTypes","standard","custom","types","padEnd","string_","targetLength","EMPTY_META","PailBrowserImpl","options","LOG_TYPES","getLongestLabel","EXTENDED_RFC_5424_LOG_LEVELS","error","name","label","data","span","current","arguments_","reporter","reporters","raw","processors","processor","level","typeName","prefix","suffix","messageObject","logLevel","resolveLog","newLog","repeated","lastMeta","diffTime","serializedLog","isSameLog","PailBrowser"],"mappings":"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","sourcesContent":["import type { stringify } from \"safe-stable-stringify\";\nimport { configure as stringifyConfigure } from \"safe-stable-stringify\";\n\nimport { EXTENDED_RFC_5424_LOG_LEVELS, LOG_TYPES } from \"./constants\";\nimport { RawReporter } from \"./reporter/raw/raw.browser\";\nimport type {\n ConstructorOptions,\n DefaultLogTypes,\n ExtendedRfc5424LogLevels,\n LiteralUnion,\n LoggerConfiguration,\n LoggerFunction,\n LoggerTypesAwareReporter,\n LoggerTypesConfig,\n Message,\n Meta,\n Primitive,\n Processor,\n Reporter,\n StringifyAwareProcessor,\n StringifyAwareReporter,\n} from \"./types\";\nimport { arrayify } from \"./util/arrayify\";\nimport { getLongestLabel } from \"./util/get-longest-label\";\nimport { mergeTypes } from \"./util/merge-types\";\nimport { padEnd } from \"./util/pad-end\";\n\nconst EMPTY_META = {\n badge: undefined,\n context: undefined,\n error: undefined,\n label: undefined,\n message: undefined,\n prefix: undefined,\n repeated: undefined,\n scope: undefined,\n suffix: undefined,\n};\n\nexport class PailBrowserImpl<T extends string = never, L extends string = never> {\n protected timersMap: Map<string, number>;\n\n protected countMap: Map<string, number>;\n\n protected seqTimers: Set<string>;\n\n protected readonly lastLog: {\n count?: number;\n object?: Meta<L>;\n serialized?: string;\n time?: Date;\n timeout?: ReturnType<typeof setTimeout>;\n };\n\n protected readonly logLevels: Record<string, number>;\n\n protected disabled: boolean;\n\n protected scopeName: string[];\n\n protected readonly types: LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\n\n protected readonly longestLabel: string;\n\n protected readonly processors: Set<Processor<L>>;\n\n protected readonly generalLogLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>;\n\n protected reporters: Set<Reporter<L>>;\n\n protected readonly throttle: number;\n\n protected readonly throttleMin: number;\n\n protected readonly stringify: typeof stringify;\n\n protected groups: string[];\n\n protected readonly startTimerMessage: string;\n\n protected readonly endTimerMessage: string;\n\n protected rawReporter: Reporter<L>;\n\n public constructor(options: ConstructorOptions<T, L>) {\n this.throttle = options.throttle ?? 1000;\n this.throttleMin = options.throttleMin ?? 5;\n\n this.stringify = stringifyConfigure({\n strict: true,\n });\n\n this.startTimerMessage = options.messages?.timerStart ?? \"Initialized timer...\";\n this.endTimerMessage = options.messages?.timerEnd ?? \"Timer run for:\";\n this.types = mergeTypes<L, T>(LOG_TYPES, (options.types ?? {}) as LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>);\n this.longestLabel = getLongestLabel<L, T>(this.types);\n\n this.logLevels = { ...EXTENDED_RFC_5424_LOG_LEVELS, ...options.logLevels };\n this.generalLogLevel = this._normalizeLogLevel(options.logLevel);\n\n this.reporters = new Set();\n this.processors = new Set();\n\n this.disabled = options.disabled ?? false;\n\n this.scopeName = arrayify(options.scope).filter(Boolean) as string[];\n\n this.timersMap = new Map();\n this.countMap = new Map();\n\n this.groups = [];\n\n this.seqTimers = new Set();\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax,guard-for-in\n for (const type in this.types) {\n // @ts-expect-error - dynamic property\n // eslint-disable-next-line security/detect-object-injection\n this[type] = this._logger.bind(this, type as T, false);\n }\n\n // Track of last log\n this.lastLog = {};\n\n if (Array.isArray(options.reporters)) {\n this.registerReporters(options.reporters);\n }\n\n this.rawReporter = this.extendReporter(options.rawReporter ?? new RawReporter<L>());\n\n if (Array.isArray(options.processors)) {\n this.registerProcessors(options.processors);\n }\n }\n\n public wrapConsole(): void {\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const type in this.types) {\n // Backup original value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(console as any)[\"__\" + type]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[\"__\" + type] = (console as any)[type];\n }\n // Override\n // @TODO: Fix typings\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[type] = (this as unknown as PailBrowserImpl<T, L>)[type as keyof PailBrowserImpl<T, L>];\n }\n }\n\n public restoreConsole(): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const type in this.types) {\n // Restore if backup is available\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((console as any)[\"__\" + type]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,security/detect-object-injection\n (console as any)[type] = (console as any)[\"__\" + type];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-dynamic-delete\n delete (console as any)[\"__\" + type];\n }\n }\n }\n\n public wrapException(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.on(\"uncaughtException\", (error: any) => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n (this as unknown as PailBrowserImpl<T, L>).error(error);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.on(\"unhandledRejection\", (error: any) => {\n // @TODO: Fix typings\n // @ts-expect-error - dynamic property\n (this as unknown as PailBrowserImpl<T, L>).error(error);\n });\n }\n\n /**\n * Disables logging\n */\n public disable(): void {\n this.disabled = true;\n }\n\n /**\n * Enables logging\n */\n public enable(): void {\n this.disabled = false;\n }\n\n public isEnabled(): boolean {\n return !this.disabled;\n }\n\n public scope<N extends string = T>(...name: string[]): PailBrowserType<N, L> {\n if (name.length === 0) {\n throw new Error(\"No scope name was defined.\");\n }\n\n this.scopeName = name.flat();\n\n return this as unknown as PailBrowserType<N, L>;\n }\n\n public unscope(): void {\n this.scopeName = [];\n }\n\n public time(label = \"default\"): void {\n if (this.seqTimers.has(label)) {\n this._logger(\"warn\", false, {\n message: \"Timer '\" + label + \"' already exists\",\n prefix: label,\n });\n } else {\n this.seqTimers.add(label);\n this.timersMap.set(label, Date.now());\n\n this._logger(\"start\", false, {\n message: this.startTimerMessage,\n prefix: label,\n });\n }\n }\n\n public timeLog(label?: string, ...data: unknown[]): void {\n if (!label && this.seqTimers.size > 0) {\n // eslint-disable-next-line no-param-reassign\n label = [...this.seqTimers].pop();\n }\n\n if (label && this.timersMap.has(label)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const span = Date.now() - this.timersMap.get(label)!;\n\n this._logger(\"info\", false, {\n context: data,\n message: span < 1000 ? span + \" ms\" : (span / 1000).toFixed(2) + \" s\",\n prefix: label,\n });\n } else {\n this._logger(\"warn\", false, {\n context: data,\n message: \"Timer not found\",\n prefix: label,\n });\n }\n }\n\n public timeEnd(label?: string): void {\n if (!label && this.seqTimers.size > 0) {\n // eslint-disable-next-line no-param-reassign\n label = [...this.seqTimers].pop();\n }\n\n if (label && this.timersMap.has(label)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const span = Date.now() - this.timersMap.get(label)!;\n\n this.timersMap.delete(label);\n\n this._logger(\"stop\", false, {\n message: this.endTimerMessage + \" \" + (span < 1000 ? span + \" ms\" : (span / 1000).toFixed(2) + \" s\"),\n prefix: label,\n });\n }\n }\n\n public group(label = \"console.group\"): void {\n if (typeof window === \"undefined\") {\n // eslint-disable-next-line no-console\n console.group(label);\n } else {\n this.groups.push(label);\n }\n }\n\n public groupEnd(): void {\n if (typeof window === \"undefined\") {\n // eslint-disable-next-line no-console\n console.groupEnd();\n } else {\n this.groups.pop();\n }\n }\n\n public count(label = \"default\"): void {\n const current = this.countMap.get(label) ?? 0;\n\n this.countMap.set(label, current + 1);\n\n this._logger(\"log\", false, {\n message: label + \": \" + (current + 1),\n prefix: label,\n });\n }\n\n public countReset(label = \"default\"): void {\n if (this.countMap.has(label)) {\n this.countMap.delete(label);\n } else {\n this._logger(\"warn\", false, {\n message: \"Count for \" + label + \" does not exist\",\n prefix: label,\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n public clear(): void {\n // eslint-disable-next-line no-console\n console.clear();\n }\n\n public raw(message: string, ...arguments_: unknown[]): void {\n if (this.disabled) {\n return;\n }\n\n this._logger(\"log\", true, {\n context: arguments_,\n message,\n });\n }\n\n protected extendReporter(reporter: Reporter<L>): Reporter<L> {\n if (typeof (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes === \"function\") {\n (reporter as LoggerTypesAwareReporter<T, L>).setLoggerTypes(this.types);\n }\n\n if (typeof (reporter as StringifyAwareReporter<L>).setStringify === \"function\") {\n (reporter as StringifyAwareReporter<L>).setStringify(this.stringify);\n }\n\n return reporter;\n }\n\n protected registerReporters(reporters: Reporter<L>[]): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const reporter of reporters) {\n this.reporters.add(this.extendReporter(reporter));\n }\n }\n\n private _report(meta: Meta<L>, raw: boolean): void {\n if (raw) {\n this.rawReporter.log(Object.freeze(meta));\n } else {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const reporter of this.reporters) {\n reporter.log(Object.freeze(meta));\n }\n }\n }\n\n private registerProcessors(processors: Processor<L>[]): void {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const processor of processors) {\n if (typeof (processor as StringifyAwareProcessor<L>).setStringify === \"function\") {\n (processor as StringifyAwareProcessor<L>).setStringify(this.stringify);\n }\n\n this.processors.add(processor as Processor<L>);\n }\n }\n\n private _normalizeLogLevel(level: LiteralUnion<ExtendedRfc5424LogLevels, L> | undefined): LiteralUnion<ExtendedRfc5424LogLevels, L> {\n // eslint-disable-next-line security/detect-object-injection\n return level && this.logLevels[level] ? level : \"debug\";\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity,@typescript-eslint/no-explicit-any\n private _buildMeta(typeName: string, type: Partial<LoggerConfiguration<L>>, ...arguments_: any[]): Meta<L> {\n const meta = { ...EMPTY_META } as Meta<L>;\n\n meta.type = {\n level: type.logLevel as LiteralUnion<ExtendedRfc5424LogLevels, L>,\n name: typeName,\n };\n\n meta.groups = this.groups;\n meta.scope = this.scopeName;\n meta.date = new Date();\n\n if (arguments_.length === 1 && typeof arguments_[0] === \"object\" && arguments_[0] !== null) {\n if (arguments_[0] instanceof Error) {\n // eslint-disable-next-line prefer-destructuring\n meta.error = arguments_[0];\n } else if (\"message\" in arguments_[0]) {\n const { context, message, prefix, suffix } = arguments_[0] as Message;\n\n if (context) {\n meta.context = context;\n }\n\n if (prefix) {\n meta.prefix = prefix;\n }\n\n if (suffix) {\n meta.suffix = suffix;\n }\n\n meta.message = message;\n } else {\n meta.message = arguments_[0] as Primitive | ReadonlyArray<unknown> | Record<PropertyKey, unknown>;\n }\n } else if (arguments_.length > 1 && typeof arguments_[0] === \"string\") {\n meta.message = arguments_[0] as string;\n meta.context = arguments_.slice(1);\n } else {\n // eslint-disable-next-line prefer-destructuring\n meta.message = arguments_[0];\n }\n\n if (type.logLevel === \"trace\") {\n meta.traceError = new Error(\"Trace\");\n }\n\n if (type.badge) {\n meta.badge = padEnd(type.badge, type.badge.length + 1);\n }\n\n if (type.label) {\n meta.label = type.label;\n }\n\n return meta;\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity,@typescript-eslint/no-explicit-any\n private _logger(type: LiteralUnion<DefaultLogTypes, T>, raw: boolean, ...messageObject: any[]): void {\n if (this.disabled) {\n return;\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const logLevel = this._normalizeLogLevel(this.types[type].logLevel);\n\n // eslint-disable-next-line security/detect-object-injection\n if ((this.logLevels[logLevel] as number) >= (this.logLevels[this.generalLogLevel] as number)) {\n // eslint-disable-next-line security/detect-object-injection\n let meta = this._buildMeta(type, this.types[type], ...messageObject);\n\n /**\n * @param newLog false if the throttle expired and we don't want to log a duplicate\n */\n const resolveLog = (newLog = false) => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const repeated = (this.lastLog.count || 0) - this.throttleMin;\n\n if (this.lastLog.object && repeated > 0) {\n const lastMeta = { ...this.lastLog.object };\n\n if (repeated > 1) {\n lastMeta.repeated = repeated;\n }\n\n this._report(lastMeta, raw);\n\n this.lastLog.count = 1;\n }\n\n if (newLog) {\n // Apply global processors\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const processor of this.processors) {\n meta = { ...processor.process(meta) };\n }\n\n this.lastLog.object = meta;\n\n this._report(meta, raw);\n }\n };\n\n clearTimeout(this.lastLog.timeout);\n\n const diffTime = this.lastLog.time && meta.date ? new Date(meta.date as Date | string).getTime() - this.lastLog.time.getTime() : 0;\n\n this.lastLog.time = new Date(meta.date as Date | string);\n\n if (diffTime < this.throttle) {\n try {\n const serializedLog = JSON.stringify([meta.label, meta.scope, meta.type, meta.message, meta.prefix, meta.suffix, meta.context]);\n const isSameLog = this.lastLog.serialized === serializedLog;\n\n this.lastLog.serialized = serializedLog;\n\n if (isSameLog) {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.lastLog.count = (this.lastLog.count || 0) + 1;\n\n if (this.lastLog.count > this.throttleMin) {\n // Auto-resolve when throttle is timed out\n this.lastLog.timeout = setTimeout(resolveLog, this.throttle);\n\n return; // SPAM!\n }\n }\n } catch {\n // Circular References\n }\n }\n\n resolveLog(true);\n }\n }\n}\n\nexport type PailBrowserType<T extends string = never, L extends string = never> = PailBrowserImpl<T, L> &\n Record<DefaultLogTypes, LoggerFunction> &\n Record<T, LoggerFunction> &\n (new<TC extends string = never, LC extends string = never>(options?: ConstructorOptions<TC, LC>) => PailBrowserType<TC, LC>);\n\nexport type PailConstructor<T extends string = never, L extends string = never> = new (options?: ConstructorOptions<T, L>) => PailBrowserType<T, L>;\n\nexport const PailBrowser = PailBrowserImpl as unknown as PailBrowserType;\n","import type { ReadonlyMeta, Reporter } from \"../../types\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\n\nexport class RawReporter<L extends string = never> implements Reporter<L> {\n // eslint-disable-next-line class-methods-use-this\n public log(meta: ReadonlyMeta<L>): void {\n const { context = [], message, type } = meta;\n\n const consoleLogFunction = writeConsoleLogBasedOnLevel(type.level);\n\n consoleLogFunction(message, ...context);\n }\n}\n","export const arrayify = <T>(x: T | T[]): T[] => {\n if (x === undefined) {\n return [] as T[];\n }\n\n return Array.isArray(x) ? x : ([x] as T[]);\n};\n","import type { DefaultLoggerTypes, DefaultLogTypes, LiteralUnion, LoggerTypesConfig } from \"../types\";\n\nexport const mergeTypes = <L extends string, T extends string>(\n standard: DefaultLoggerTypes<L>,\n custom: LoggerTypesConfig<T, L>,\n): LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L> => {\n const types = { ...standard } as LoggerTypesConfig<LiteralUnion<DefaultLogTypes, T>, L>;\n\n Object.keys(custom).forEach((type) => {\n types[type as T] = { ...types[type as T], ...custom[type as T] };\n });\n\n return types;\n};\n","export const padEnd = (string_: string, targetLength: number): string => {\n if (string_.length >= targetLength) {\n return string_;\n }\n\n return string_.padEnd(targetLength);\n};\n"]}
@@ -1,10 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkN2UPJYJR_cjs = require('./chunk-N2UPJYJR.cjs');
4
- var chunkZJMTPHZR_cjs = require('./chunk-ZJMTPHZR.cjs');
5
-
6
- var t=class extends chunkZJMTPHZR_cjs.a{constructor(){super();}_log(n,r){chunkN2UPJYJR_cjs.a(r)(n);}};
7
-
8
- exports.a = t;
9
- //# sourceMappingURL=out.js.map
10
- //# sourceMappingURL=chunk-5MNFJRLM.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/reporter/json/json.browser.ts"],"names":["JsonReporter","AbstractJsonReporter","message","logLevel","writeConsoleLogBasedOnLevel"],"mappings":"kFAIO,IAAMA,EAAN,cAAqDC,CAAwB,CACzE,aAAc,CACjB,MAAM,CACV,CAGmB,KAAKC,EAAiBC,EAA2D,CACrEC,EAA4BD,CAAQ,EAE5CD,CAAO,CAC9B,CACJ","sourcesContent":["import type { ExtendedRfc5424LogLevels, LiteralUnion } from \"../../types\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\nimport { AbstractJsonReporter } from \"./abstract-json-reporter\";\n\nexport class JsonReporter<L extends string = never> extends AbstractJsonReporter<L> {\n public constructor() {\n super();\n }\n\n // eslint-disable-next-line class-methods-use-this\n protected override _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void {\n const consoleLogFunction = writeConsoleLogBasedOnLevel(logLevel);\n\n consoleLogFunction(message);\n }\n}\n"]}
@@ -1,5 +0,0 @@
1
- var r=e=>e==="error"?console.__error??console.error:e==="warn"?console.__warn??console.warn:e==="trace"?console.__trace??console.trace:console.__log??console.log;
2
-
3
- export { r as a };
4
- //# sourceMappingURL=out.js.map
5
- //# sourceMappingURL=chunk-AFMDCM5W.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/util/write-console-log.ts"],"names":["writeConsoleLogBasedOnLevel","level"],"mappings":"AAGO,IAAMA,EAAyDC,GAC9DA,IAAU,QAEF,QAAgB,SAAW,QAAQ,MAG3CA,IAAU,OAEF,QAAgB,QAAU,QAAQ,KAG1CA,IAAU,QAEF,QAAgB,SAAW,QAAQ,MAIvC,QAAgB,OAAS,QAAQ","sourcesContent":["import type { ExtendedRfc5424LogLevels, LiteralUnion } from \"../types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const writeConsoleLogBasedOnLevel = <L extends string = never>(level: LiteralUnion<ExtendedRfc5424LogLevels, L>): ((...data: any[]) => void) => {\n if (level === \"error\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-console\n return (console as any).__error ?? console.error;\n }\n\n if (level === \"warn\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-console\n return (console as any).__warn ?? console.warn;\n }\n\n if (level === \"trace\") {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-console\n return (console as any).__trace ?? console.trace;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,no-console\n return (console as any).__log ?? console.log;\n};\n"]}
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- var fmt = require('@visulima/fmt');
4
-
5
- var o=class{#t;#n;constructor(t={}){this.#n=t.formatters;}setStringify(t){this.#t=t;}process(t){let n=fmt.build({formatters:this.#n,stringify:r=>{let i=this.#t(r);return i===void 0?(console.warn("Unable to stringify value of type "+typeof r,r),"undefined"):i}});return t.message!==void 0&&(t.message=this._format(n,t.message,t.context??[])),t}_format(t,n,r=[]){if(typeof n=="string")return t(n,r);if(typeof n=="object"&&n!==null)for(let i in n){let e=n[i];(typeof e=="string"||Array.isArray(e)||typeof e=="object")&&(n[i]=this._format(t,e,r));}return n}};
6
-
7
- exports.a = o;
8
- //# sourceMappingURL=out.js.map
9
- //# sourceMappingURL=chunk-F4FJCQ4L.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/processor/message-formatter-processor.ts"],"names":["build","MessageFormatterProcessor","#stringify","#formatters","options","function_","meta","formatter","value","stringified","data","arguments_","index"],"mappings":"AACA,OAAS,SAAAA,MAAa,gBAKf,IAAMC,EAAN,KAAiG,CAEpGC,GAESC,GAEF,YAAYC,EAA8D,CAAC,EAAG,CACjF,KAAKD,GAAcC,EAAQ,UAC/B,CAGO,aAAaC,EAAsB,CACtC,KAAKH,GAAaG,CACtB,CAEO,QAAQC,EAAwB,CACnC,IAAMC,EAAYP,EAAM,CACpB,WAAY,KAAKG,GACjB,UAAYK,GAAmB,CAC3B,IAAMC,EAAe,KAAKP,GAAgCM,CAAK,EAE/D,OAAIC,IAAgB,QAEhB,QAAQ,KAAK,qCAAuC,OAAOD,EAAOA,CAAK,EAEhE,aAGJC,CACX,CACJ,CAAY,EAEZ,OAAIH,EAAK,UAAY,SAEjBA,EAAK,QAAU,KAAK,QAAQC,EAAWD,EAAK,QAASA,EAAK,SAAW,CAAC,CAAC,GAGpEA,CACX,CAGQ,QAAQC,EAA0BG,EAAWC,EAAwB,CAAC,EAAQ,CAClF,GAAI,OAAOD,GAAS,SAChB,OAAOH,EAAUG,EAAgBC,CAAU,EAG/C,GAAI,OAAOD,GAAS,UAAYA,IAAS,KAErC,QAAWE,KAASF,EAAuD,CAEvE,IAAMF,EAASE,EAAaE,CAAK,GAE7B,OAAOJ,GAAU,UAAY,MAAM,QAAQA,CAAK,GAAK,OAAOA,GAAU,YAEtEE,EAAKE,CAAK,EAAI,KAAK,QAAQL,EAAWC,EAAOG,CAAU,EAE/D,CAGJ,OAAOD,CACX,CACJ","sourcesContent":["import type { format, FormatterFunction, Options } from \"@visulima/fmt\";\nimport { build } from \"@visulima/fmt\";\nimport type { stringify } from \"safe-stable-stringify\";\n\nimport type { Meta, StringifyAwareProcessor } from \"../types\";\n\nexport class MessageFormatterProcessor<L extends string = string> implements StringifyAwareProcessor<L> {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n #stringify: typeof stringify | undefined;\n\n readonly #formatters: Record<string, FormatterFunction> | undefined;\n\n public constructor(options: { formatters?: Record<string, FormatterFunction> } = {}) {\n this.#formatters = options.formatters;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n public setStringify(function_: any): void {\n this.#stringify = function_;\n }\n\n public process(meta: Meta<L>): Meta<L> {\n const formatter = build({\n formatters: this.#formatters,\n stringify: (value: unknown) => {\n const stringified = (this.#stringify as typeof stringify)(value);\n\n if (stringified === undefined) {\n // eslint-disable-next-line no-console\n console.warn(\"Unable to stringify value of type \" + typeof value, value);\n\n return \"undefined\";\n }\n\n return stringified;\n },\n } as Options);\n\n if (meta.message !== undefined) {\n // eslint-disable-next-line no-param-reassign\n meta.message = this._format(formatter, meta.message, meta.context ?? []);\n }\n\n return meta;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _format(formatter: typeof format, data: any, arguments_: unknown[] = []): any {\n if (typeof data === \"string\") {\n return formatter(data as string, arguments_);\n }\n\n if (typeof data === \"object\" && data !== null) {\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const index in data as Record<string, unknown> | [string, unknown[]]) {\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-explicit-any\n const value = (data as any)[index];\n\n if (typeof value === \"string\" || Array.isArray(value) || typeof value === \"object\") {\n // eslint-disable-next-line no-param-reassign,security/detect-object-injection\n data[index] = this._format(formatter, value, arguments_);\n }\n }\n }\n\n return data;\n }\n}\n"]}
@@ -1,8 +0,0 @@
1
- import { a as a$1 } from './chunk-AFMDCM5W.js';
2
- import { a } from './chunk-TAH23BHM.js';
3
-
4
- var t=class extends a{constructor(){super();}_log(n,r){a$1(r)(n);}};
5
-
6
- export { t as a };
7
- //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-KERJDMYV.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/reporter/json/json.browser.ts"],"names":["JsonReporter","AbstractJsonReporter","message","logLevel","writeConsoleLogBasedOnLevel"],"mappings":"gFAIO,IAAMA,EAAN,cAAqDC,CAAwB,CACzE,aAAc,CACjB,MAAM,CACV,CAGmB,KAAKC,EAAiBC,EAA2D,CACrEC,EAA4BD,CAAQ,EAE5CD,CAAO,CAC9B,CACJ","sourcesContent":["import type { ExtendedRfc5424LogLevels, LiteralUnion } from \"../../types\";\nimport { writeConsoleLogBasedOnLevel } from \"../../util/write-console-log\";\nimport { AbstractJsonReporter } from \"./abstract-json-reporter\";\n\nexport class JsonReporter<L extends string = never> extends AbstractJsonReporter<L> {\n public constructor() {\n super();\n }\n\n // eslint-disable-next-line class-methods-use-this\n protected override _log(message: string, logLevel: LiteralUnion<ExtendedRfc5424LogLevels, L>): void {\n const consoleLogFunction = writeConsoleLogBasedOnLevel(logLevel);\n\n consoleLogFunction(message);\n }\n}\n"]}