@contractspec/lib.logger 1.56.1 → 1.58.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 (108) hide show
  1. package/dist/context.browser.d.ts +44 -0
  2. package/dist/context.browser.d.ts.map +1 -0
  3. package/dist/context.browser.js +77 -0
  4. package/dist/context.d.ts +22 -0
  5. package/dist/context.d.ts.map +1 -0
  6. package/dist/context.js +1 -0
  7. package/dist/context.node.d.ts +43 -0
  8. package/dist/context.node.d.ts.map +1 -0
  9. package/dist/context.node.js +62 -0
  10. package/dist/elysia-plugin.d.ts +58 -0
  11. package/dist/elysia-plugin.d.ts.map +1 -0
  12. package/dist/elysia-plugin.js +793 -0
  13. package/dist/formatters.d.ts +25 -0
  14. package/dist/formatters.d.ts.map +1 -0
  15. package/dist/formatters.js +232 -0
  16. package/dist/index.browser.d.ts +8 -0
  17. package/dist/index.browser.d.ts.map +1 -0
  18. package/dist/index.browser.js +728 -0
  19. package/dist/index.d.ts +9 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +800 -0
  22. package/dist/logger.browser.d.ts +48 -0
  23. package/dist/logger.browser.d.ts.map +1 -0
  24. package/dist/logger.browser.js +722 -0
  25. package/dist/logger.d.ts +2 -0
  26. package/dist/logger.d.ts.map +1 -0
  27. package/dist/logger.js +707 -0
  28. package/dist/logger.node.d.ts +48 -0
  29. package/dist/logger.node.d.ts.map +1 -0
  30. package/dist/logger.node.js +707 -0
  31. package/dist/node/context.js +0 -0
  32. package/dist/node/context.node.js +61 -0
  33. package/dist/node/elysia-plugin.js +792 -0
  34. package/dist/node/formatters.js +231 -0
  35. package/dist/node/index.js +799 -0
  36. package/dist/node/logger.js +706 -0
  37. package/dist/node/logger.node.js +706 -0
  38. package/dist/node/timer.js +122 -0
  39. package/dist/node/tracer.js +274 -0
  40. package/dist/node/tracer.node.js +274 -0
  41. package/dist/node/types.js +13 -0
  42. package/dist/timer.d.ts +99 -0
  43. package/dist/timer.d.ts.map +1 -0
  44. package/dist/timer.js +123 -0
  45. package/dist/tracer.browser.d.ts +47 -0
  46. package/dist/tracer.browser.d.ts.map +1 -0
  47. package/dist/tracer.browser.js +290 -0
  48. package/dist/tracer.d.ts +2 -0
  49. package/dist/tracer.d.ts.map +1 -0
  50. package/dist/tracer.js +275 -0
  51. package/dist/tracer.node.d.ts +47 -0
  52. package/dist/tracer.node.d.ts.map +1 -0
  53. package/dist/tracer.node.js +275 -0
  54. package/dist/types.d.ts +68 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +14 -0
  57. package/package.json +112 -42
  58. package/dist/context.browser.d.mts +0 -49
  59. package/dist/context.browser.d.mts.map +0 -1
  60. package/dist/context.browser.mjs +0 -89
  61. package/dist/context.browser.mjs.map +0 -1
  62. package/dist/context.d.mts +0 -17
  63. package/dist/context.d.mts.map +0 -1
  64. package/dist/context.mjs +0 -1
  65. package/dist/context.node.d.mts +0 -48
  66. package/dist/context.node.d.mts.map +0 -1
  67. package/dist/context.node.mjs +0 -79
  68. package/dist/context.node.mjs.map +0 -1
  69. package/dist/elysia-plugin.d.mts +0 -63
  70. package/dist/elysia-plugin.d.mts.map +0 -1
  71. package/dist/elysia-plugin.mjs +0 -84
  72. package/dist/elysia-plugin.mjs.map +0 -1
  73. package/dist/formatters.d.mts +0 -29
  74. package/dist/formatters.d.mts.map +0 -1
  75. package/dist/formatters.mjs +0 -180
  76. package/dist/formatters.mjs.map +0 -1
  77. package/dist/index.browser.d.mts +0 -7
  78. package/dist/index.browser.mjs +0 -8
  79. package/dist/index.d.mts +0 -8
  80. package/dist/index.mjs +0 -9
  81. package/dist/logger.browser.d.mts +0 -51
  82. package/dist/logger.browser.d.mts.map +0 -1
  83. package/dist/logger.browser.mjs +0 -190
  84. package/dist/logger.browser.mjs.map +0 -1
  85. package/dist/logger.d.mts +0 -2
  86. package/dist/logger.mjs +0 -3
  87. package/dist/logger.node.d.mts +0 -51
  88. package/dist/logger.node.d.mts.map +0 -1
  89. package/dist/logger.node.mjs +0 -190
  90. package/dist/logger.node.mjs.map +0 -1
  91. package/dist/timer.d.mts +0 -103
  92. package/dist/timer.d.mts.map +0 -1
  93. package/dist/timer.mjs +0 -165
  94. package/dist/timer.mjs.map +0 -1
  95. package/dist/tracer.browser.d.mts +0 -51
  96. package/dist/tracer.browser.d.mts.map +0 -1
  97. package/dist/tracer.browser.mjs +0 -116
  98. package/dist/tracer.browser.mjs.map +0 -1
  99. package/dist/tracer.d.mts +0 -2
  100. package/dist/tracer.mjs +0 -3
  101. package/dist/tracer.node.d.mts +0 -51
  102. package/dist/tracer.node.d.mts.map +0 -1
  103. package/dist/tracer.node.mjs +0 -116
  104. package/dist/tracer.node.mjs.map +0 -1
  105. package/dist/types.d.mts +0 -71
  106. package/dist/types.d.mts.map +0 -1
  107. package/dist/types.mjs +0 -14
  108. package/dist/types.mjs.map +0 -1
@@ -0,0 +1,25 @@
1
+ import type { Formatter, LogEntry } from './types';
2
+ export declare class DevFormatter implements Formatter {
3
+ private enableColors;
4
+ constructor(enableColors?: boolean);
5
+ format(entry: LogEntry): string;
6
+ private formatTimestamp;
7
+ private formatTraceInfo;
8
+ private formatDuration;
9
+ private formatContext;
10
+ private formatMetadata;
11
+ private formatError;
12
+ private formatObject;
13
+ private formatValue;
14
+ private colorize;
15
+ }
16
+ export declare class ProductionFormatter implements Formatter {
17
+ format(entry: LogEntry): string;
18
+ }
19
+ export declare class CustomFormatter implements Formatter {
20
+ private template;
21
+ private dateFormat;
22
+ constructor(template?: string, dateFormat?: (date: Date) => string);
23
+ format(entry: LogEntry): string;
24
+ }
25
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAkCnD,qBAAa,YAAa,YAAW,SAAS;IAC5C,OAAO,CAAC,YAAY,CAAU;gBAElB,YAAY,UAAO;IAI/B,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAoD/B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,QAAQ;CAIjB;AAED,qBAAa,mBAAoB,YAAW,SAAS;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;CA+ChC;AAED,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAyB;gBAGzC,QAAQ,SAAoC,EAC5C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM;IAMrC,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;CAyBhC"}
@@ -0,0 +1,232 @@
1
+ // @bun
2
+ // src/types.ts
3
+ var LogLevel;
4
+ ((LogLevel2) => {
5
+ LogLevel2[LogLevel2["TRACE"] = 0] = "TRACE";
6
+ LogLevel2[LogLevel2["DEBUG"] = 1] = "DEBUG";
7
+ LogLevel2[LogLevel2["INFO"] = 2] = "INFO";
8
+ LogLevel2[LogLevel2["WARN"] = 3] = "WARN";
9
+ LogLevel2[LogLevel2["ERROR"] = 4] = "ERROR";
10
+ LogLevel2[LogLevel2["FATAL"] = 5] = "FATAL";
11
+ })(LogLevel ||= {});
12
+
13
+ // src/formatters.ts
14
+ var colors = {
15
+ reset: "\x1B[0m",
16
+ bright: "\x1B[1m",
17
+ dim: "\x1B[2m",
18
+ red: "\x1B[31m",
19
+ green: "\x1B[32m",
20
+ yellow: "\x1B[33m",
21
+ blue: "\x1B[34m",
22
+ magenta: "\x1B[35m",
23
+ cyan: "\x1B[36m",
24
+ white: "\x1B[37m",
25
+ gray: "\x1B[90m",
26
+ bgRed: "\x1B[41m",
27
+ bgYellow: "\x1B[43m"
28
+ };
29
+ var levelConfig = {
30
+ [0 /* TRACE */]: { color: colors.gray, symbol: "\u25CB", name: "TRACE" },
31
+ [1 /* DEBUG */]: { color: colors.blue, symbol: "\u25CF", name: "DEBUG" },
32
+ [2 /* INFO */]: { color: colors.green, symbol: "\u25CF", name: "INFO " },
33
+ [3 /* WARN */]: { color: colors.yellow, symbol: "\u25B2", name: "WARN " },
34
+ [4 /* ERROR */]: { color: colors.red, symbol: "\u2716", name: "ERROR" },
35
+ [5 /* FATAL */]: {
36
+ color: colors.bgRed + colors.white,
37
+ symbol: "\uD83D\uDC80",
38
+ name: "FATAL"
39
+ }
40
+ };
41
+
42
+ class DevFormatter {
43
+ enableColors;
44
+ constructor(enableColors = true) {
45
+ this.enableColors = enableColors;
46
+ }
47
+ format(entry) {
48
+ const parts = [];
49
+ const config = levelConfig[entry.level];
50
+ const timestamp = this.formatTimestamp(entry.timestamp);
51
+ parts.push(this.colorize(timestamp, colors.gray));
52
+ const levelText = `${config.symbol} ${config.name}`;
53
+ parts.push(this.colorize(levelText, config.color));
54
+ if (entry.traceId) {
55
+ const traceInfo = this.formatTraceInfo(entry);
56
+ parts.push(this.colorize(traceInfo, colors.cyan));
57
+ }
58
+ parts.push(this.colorize(entry.message, colors.white));
59
+ if (entry.duration !== undefined) {
60
+ const durationText = `(${this.formatDuration(entry.duration)})`;
61
+ parts.push(this.colorize(durationText, colors.magenta));
62
+ }
63
+ let output = parts.join(" ");
64
+ if (entry.context && Object.keys(entry.context).length > 0) {
65
+ output += `
66
+ ` + this.formatContext(entry.context);
67
+ }
68
+ if (entry.metadata && Object.keys(entry.metadata).length > 0) {
69
+ output += `
70
+ ` + this.formatMetadata(entry.metadata);
71
+ }
72
+ if (entry.error) {
73
+ output += `
74
+ ` + this.formatError(entry.error);
75
+ }
76
+ if (entry.tags && entry.tags.length > 0) {
77
+ const tagsText = entry.tags.map((tag) => `#${tag}`).join(" ");
78
+ output += `
79
+ ` + this.colorize(`Tags: ${tagsText}`, colors.blue);
80
+ }
81
+ return output;
82
+ }
83
+ formatTimestamp(timestamp) {
84
+ return timestamp.toISOString().substring(11, 23);
85
+ }
86
+ formatTraceInfo(entry) {
87
+ const parts = [`trace:${entry.traceId?.substring(0, 8) || "unknown"}`];
88
+ if (entry.spanId && entry.spanId.length >= 8) {
89
+ parts.push(`span:${entry.spanId.substring(0, 8)}`);
90
+ }
91
+ if (entry.parentId && entry.parentId.length >= 8) {
92
+ parts.push(`parent:${entry.parentId.substring(0, 8)}`);
93
+ }
94
+ return `[${parts.join("|")}]`;
95
+ }
96
+ formatDuration(duration) {
97
+ if (duration < 1) {
98
+ return `${(duration * 1000).toFixed(0)}\u03BCs`;
99
+ } else if (duration < 1000) {
100
+ return `${duration.toFixed(2)}ms`;
101
+ } else {
102
+ return `${(duration / 1000).toFixed(2)}s`;
103
+ }
104
+ }
105
+ formatContext(context) {
106
+ const formatted = this.formatObject(context, 2);
107
+ return this.colorize(`Context: ${formatted}`, colors.cyan);
108
+ }
109
+ formatMetadata(metadata) {
110
+ const formatted = this.formatObject(metadata, 2);
111
+ return this.colorize(`Metadata: ${formatted}`, colors.blue);
112
+ }
113
+ formatError(error) {
114
+ let output = this.colorize(`Error: ${error.name}: ${error.message}`, colors.red);
115
+ if (error.stack) {
116
+ const stackLines = error.stack.split(`
117
+ `).slice(1, 6);
118
+ const indentedStack = stackLines.map((line) => ` ${line}`).join(`
119
+ `);
120
+ output += `
121
+ ` + this.colorize(indentedStack, colors.gray);
122
+ }
123
+ return output;
124
+ }
125
+ formatObject(obj, indent = 0) {
126
+ const spaces = " ".repeat(indent);
127
+ const entries = Object.entries(obj);
128
+ if (entries.length === 0)
129
+ return "{}";
130
+ if (entries[0] && typeof entries[0][1] !== "object") {
131
+ return `{ ${entries[0][0]}: ${this.formatValue(entries[0][1])} }`;
132
+ }
133
+ const formatted = entries.map(([key, value]) => {
134
+ return `${spaces} ${key}: ${this.formatValue(value, indent + 2)}`;
135
+ }).join(`
136
+ `);
137
+ return `{
138
+ ${formatted}
139
+ ${spaces}}`;
140
+ }
141
+ formatValue(value, indent = 0) {
142
+ if (value === null)
143
+ return "null";
144
+ if (value === undefined)
145
+ return "undefined";
146
+ if (typeof value === "string")
147
+ return `"${value}"`;
148
+ if (typeof value === "boolean" || typeof value === "number")
149
+ return String(value);
150
+ if (value instanceof Date)
151
+ return value.toISOString();
152
+ if (Array.isArray(value)) {
153
+ if (value.length === 0)
154
+ return "[]";
155
+ return `[${value.map((v) => this.formatValue(v)).join(", ")}]`;
156
+ }
157
+ if (typeof value === "object") {
158
+ return this.formatObject(value, indent);
159
+ }
160
+ return String(value);
161
+ }
162
+ colorize(text, color) {
163
+ if (!this.enableColors)
164
+ return text;
165
+ return `${color}${text}${colors.reset}`;
166
+ }
167
+ }
168
+
169
+ class ProductionFormatter {
170
+ format(entry) {
171
+ const logObject = {
172
+ timestamp: entry.timestamp,
173
+ level: entry.level,
174
+ message: entry.message
175
+ };
176
+ if (entry.traceId) {
177
+ logObject.traceId = entry.traceId;
178
+ }
179
+ if (entry.spanId) {
180
+ logObject.spanId = entry.spanId;
181
+ }
182
+ if (entry.parentId) {
183
+ logObject.parentId = entry.parentId;
184
+ }
185
+ if (entry.duration !== undefined) {
186
+ logObject.duration = entry.duration;
187
+ }
188
+ if (entry.context && Object.keys(entry.context).length > 0) {
189
+ logObject.context = entry.context;
190
+ }
191
+ if (entry.metadata && Object.keys(entry.metadata).length > 0) {
192
+ logObject.metadata = entry.metadata;
193
+ }
194
+ if (entry.error) {
195
+ logObject.error = {
196
+ name: entry.error.name,
197
+ message: entry.error.message,
198
+ stack: entry.error.stack
199
+ };
200
+ }
201
+ if (entry.tags && entry.tags.length > 0) {
202
+ logObject.tags = entry.tags;
203
+ }
204
+ return JSON.stringify(logObject);
205
+ }
206
+ }
207
+
208
+ class CustomFormatter {
209
+ template;
210
+ dateFormat;
211
+ constructor(template = "{timestamp} [{level}] {message}", dateFormat) {
212
+ this.template = template;
213
+ this.dateFormat = dateFormat || ((date) => date.toISOString());
214
+ }
215
+ format(entry) {
216
+ const levelName = LogLevel[entry.level];
217
+ const timestamp = this.dateFormat(entry.timestamp);
218
+ let formatted = this.template.replace("{timestamp}", timestamp).replace("{level}", levelName).replace("{message}", entry.message).replace("{traceId}", entry.traceId || "").replace("{spanId}", entry.spanId || "").replace("{duration}", entry.duration?.toString() || "");
219
+ if (entry.context) {
220
+ formatted = formatted.replace("{context}", JSON.stringify(entry.context));
221
+ }
222
+ if (entry.metadata) {
223
+ formatted = formatted.replace("{metadata}", JSON.stringify(entry.metadata));
224
+ }
225
+ return formatted;
226
+ }
227
+ }
228
+ export {
229
+ ProductionFormatter,
230
+ DevFormatter,
231
+ CustomFormatter
232
+ };
@@ -0,0 +1,8 @@
1
+ export { Logger } from './logger.browser';
2
+ export { LogContext } from './context.browser';
3
+ export { Tracer } from './tracer.browser';
4
+ export { Timer } from './timer';
5
+ export type { LogEntry, TraceContext, TracingOptions } from './types';
6
+ export { LogLevel } from './types';
7
+ export { DevFormatter, ProductionFormatter } from './formatters';
8
+ //# sourceMappingURL=index.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}