@contractspec/lib.logger 1.57.0 → 1.59.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 -48
  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 -16
  63. package/dist/context.d.mts.map +0 -1
  64. package/dist/context.mjs +0 -1
  65. package/dist/context.node.d.mts +0 -47
  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,44 @@
1
+ import 'zone.js';
2
+ import type { ContextData, TraceContext } from './types';
3
+ /**
4
+ * Browser implementation of LogContext using Zone.js for async context
5
+ * propagation (similar to AsyncLocalStorage in Node).
6
+ */
7
+ export declare class LogContext {
8
+ private static instance;
9
+ private static fallbackCounter;
10
+ static getInstance(): LogContext;
11
+ /**
12
+ * Run a function with a new context
13
+ */
14
+ run<T>(context: ContextData, fn: () => T): T;
15
+ /**
16
+ * Run a function with an extended context (merges with current)
17
+ */
18
+ extend<T>(additionalContext: Partial<ContextData>, fn: () => T): T;
19
+ /**
20
+ * Set context data for the current execution context
21
+ */
22
+ set(key: string, value: unknown): void;
23
+ /**
24
+ * Get a specific context value
25
+ */
26
+ get<T>(key: string): T | undefined;
27
+ /**
28
+ * Get all context data
29
+ */
30
+ getContext(): ContextData;
31
+ /**
32
+ * Set trace context
33
+ */
34
+ setTrace(trace: TraceContext): void;
35
+ /**
36
+ * Get current trace context
37
+ */
38
+ getCurrentTrace(): TraceContext | undefined;
39
+ /**
40
+ * Generate a unique ID for requests/operations
41
+ */
42
+ generateId(): string;
43
+ }
44
+ //# sourceMappingURL=context.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.browser.d.ts","sourceRoot":"","sources":["../src/context.browser.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA8BzD;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAK;IAEnC,MAAM,CAAC,WAAW,IAAI,UAAU;IAOhC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAkB5C;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IASlE;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAOtC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAKlC;;OAEG;IACH,UAAU,IAAI,WAAW;IAKzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAOnC;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,SAAS;IAK3C;;OAEG;IACH,UAAU,IAAI,MAAM;CAYrB"}
@@ -0,0 +1,77 @@
1
+ // @bun
2
+ // src/context.browser.ts
3
+ import"zone.js";
4
+ var ZONE = globalThis.Zone;
5
+ var STORE_KEY = "__lssm_log_context_data__";
6
+ function getStore() {
7
+ if (!ZONE)
8
+ return;
9
+ return ZONE.current.get(STORE_KEY);
10
+ }
11
+
12
+ class LogContext {
13
+ static instance;
14
+ static fallbackCounter = 0;
15
+ static getInstance() {
16
+ if (!LogContext.instance) {
17
+ LogContext.instance = new LogContext;
18
+ }
19
+ return LogContext.instance;
20
+ }
21
+ run(context, fn) {
22
+ const contextData = {
23
+ context: { ...context },
24
+ trace: this.getCurrentTrace()
25
+ };
26
+ if (!ZONE) {
27
+ return fn();
28
+ }
29
+ const zone = ZONE.current.fork({
30
+ name: "log-context",
31
+ properties: { [STORE_KEY]: contextData }
32
+ });
33
+ return zone.run(fn);
34
+ }
35
+ extend(additionalContext, fn) {
36
+ const currentContext = this.getContext();
37
+ const mergedContext = {
38
+ ...currentContext,
39
+ ...additionalContext
40
+ };
41
+ return this.run(mergedContext, fn);
42
+ }
43
+ set(key, value) {
44
+ const current = getStore();
45
+ if (current) {
46
+ current.context[key] = value;
47
+ }
48
+ }
49
+ get(key) {
50
+ const current = getStore();
51
+ return current?.context?.[key];
52
+ }
53
+ getContext() {
54
+ const current = getStore();
55
+ return current?.context || {};
56
+ }
57
+ setTrace(trace) {
58
+ const current = getStore();
59
+ if (current) {
60
+ current.trace = trace;
61
+ }
62
+ }
63
+ getCurrentTrace() {
64
+ const current = getStore();
65
+ return current?.trace;
66
+ }
67
+ generateId() {
68
+ if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
69
+ return crypto.randomUUID();
70
+ }
71
+ LogContext.fallbackCounter += 1;
72
+ return `log-${LogContext.fallbackCounter}`;
73
+ }
74
+ }
75
+ export {
76
+ LogContext
77
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Shared context types / interface.
3
+ *
4
+ * Runtime-specific implementations live in:
5
+ * - `./context.node.ts` (Node.js / Bun)
6
+ * - `./context.browser.ts` (Browser, via Zone.js)
7
+ *
8
+ * This file must remain free of runtime-specific imports so it can be safely
9
+ * referenced in any compilation context.
10
+ */
11
+ export type { ContextData, TraceContext } from './types';
12
+ export interface LogContextApi {
13
+ run<T>(context: import('./types').ContextData, fn: () => T): T;
14
+ extend<T>(additionalContext: Partial<import('./types').ContextData>, fn: () => T): T;
15
+ set(key: string, value: unknown): void;
16
+ get<T>(key: string): T | undefined;
17
+ getContext(): import('./types').ContextData;
18
+ setTrace(trace: import('./types').TraceContext): void;
19
+ getCurrentTrace(): import('./types').TraceContext | undefined;
20
+ generateId(): string;
21
+ }
22
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,CAAC,CAAC,EACN,iBAAiB,EAAE,OAAO,CAAC,OAAO,SAAS,EAAE,WAAW,CAAC,EACzD,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAAC;IACL,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IACnC,UAAU,IAAI,OAAO,SAAS,EAAE,WAAW,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,OAAO,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;IACtD,eAAe,IAAI,OAAO,SAAS,EAAE,YAAY,GAAG,SAAS,CAAC;IAC9D,UAAU,IAAI,MAAM,CAAC;CACtB"}
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,43 @@
1
+ import type { ContextData, TraceContext } from './types';
2
+ /**
3
+ * Node.js implementation of LogContext using AsyncLocalStorage.
4
+ */
5
+ export declare class LogContext {
6
+ private static instance;
7
+ private storage;
8
+ constructor();
9
+ static getInstance(): LogContext;
10
+ /**
11
+ * Run a function with a new context
12
+ */
13
+ run<T>(context: ContextData, fn: () => T): T;
14
+ /**
15
+ * Run a function with an extended context (merges with current)
16
+ */
17
+ extend<T>(additionalContext: Partial<ContextData>, fn: () => T): T;
18
+ /**
19
+ * Set context data for the current execution context
20
+ */
21
+ set(key: string, value: unknown): void;
22
+ /**
23
+ * Get a specific context value
24
+ */
25
+ get<T>(key: string): T | undefined;
26
+ /**
27
+ * Get all context data
28
+ */
29
+ getContext(): ContextData;
30
+ /**
31
+ * Set trace context
32
+ */
33
+ setTrace(trace: TraceContext): void;
34
+ /**
35
+ * Get current trace context
36
+ */
37
+ getCurrentTrace(): TraceContext | undefined;
38
+ /**
39
+ * Generate a unique ID for requests/operations
40
+ */
41
+ generateId(): string;
42
+ }
43
+ //# sourceMappingURL=context.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.node.d.ts","sourceRoot":"","sources":["../src/context.node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAOzD;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,OAAO,CAAoC;;IAMnD,MAAM,CAAC,WAAW,IAAI,UAAU;IAOhC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAQ5C;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IASlE;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAOtC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAKlC;;OAEG;IACH,UAAU,IAAI,WAAW;IAKzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAOnC;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,SAAS;IAK3C;;OAEG;IACH,UAAU,IAAI,MAAM;CAGrB"}
@@ -0,0 +1,62 @@
1
+ // @bun
2
+ // src/context.node.ts
3
+ import { AsyncLocalStorage } from "async_hooks";
4
+
5
+ class LogContext {
6
+ static instance;
7
+ storage;
8
+ constructor() {
9
+ this.storage = new AsyncLocalStorage;
10
+ }
11
+ static getInstance() {
12
+ if (!LogContext.instance) {
13
+ LogContext.instance = new LogContext;
14
+ }
15
+ return LogContext.instance;
16
+ }
17
+ run(context, fn) {
18
+ const contextData = {
19
+ context: { ...context },
20
+ trace: this.getCurrentTrace()
21
+ };
22
+ return this.storage.run(contextData, fn);
23
+ }
24
+ extend(additionalContext, fn) {
25
+ const currentContext = this.getContext();
26
+ const mergedContext = {
27
+ ...currentContext,
28
+ ...additionalContext
29
+ };
30
+ return this.run(mergedContext, fn);
31
+ }
32
+ set(key, value) {
33
+ const current = this.storage.getStore();
34
+ if (current) {
35
+ current.context[key] = value;
36
+ }
37
+ }
38
+ get(key) {
39
+ const current = this.storage.getStore();
40
+ return current?.context?.[key];
41
+ }
42
+ getContext() {
43
+ const current = this.storage.getStore();
44
+ return current?.context || {};
45
+ }
46
+ setTrace(trace) {
47
+ const current = this.storage.getStore();
48
+ if (current) {
49
+ current.trace = trace;
50
+ }
51
+ }
52
+ getCurrentTrace() {
53
+ const current = this.storage.getStore();
54
+ return current?.trace;
55
+ }
56
+ generateId() {
57
+ return crypto.randomUUID();
58
+ }
59
+ }
60
+ export {
61
+ LogContext
62
+ };
@@ -0,0 +1,58 @@
1
+ import { Logger } from './logger.node';
2
+ import type { ContextData } from './types';
3
+ import { Elysia } from 'elysia';
4
+ export interface ElysiaLoggerConfig {
5
+ logger?: Logger;
6
+ logRequests?: boolean;
7
+ logResponses?: boolean;
8
+ excludePaths?: string[];
9
+ }
10
+ /**
11
+ * Simple ElysiaJS Logger Plugin
12
+ * Provides automatic request logging and tracing
13
+ */
14
+ export declare function elysiaLogger<T extends Elysia>(config?: ElysiaLoggerConfig): (app: T) => Elysia<"", {
15
+ decorator: {};
16
+ store: {};
17
+ derive: {};
18
+ resolve: {};
19
+ }, {
20
+ typebox: {};
21
+ error: {};
22
+ }, {
23
+ schema: {};
24
+ standaloneSchema: {};
25
+ macro: {};
26
+ macroFn: {};
27
+ parser: {};
28
+ response: {};
29
+ }, {}, {
30
+ derive: {};
31
+ resolve: {};
32
+ schema: {};
33
+ standaloneSchema: {};
34
+ response: {};
35
+ }, {
36
+ derive: ({
37
+ readonly logger: Logger;
38
+ readonly requestContext?: undefined;
39
+ readonly startTime?: undefined;
40
+ } | {
41
+ readonly logger: Logger;
42
+ readonly requestContext: ContextData;
43
+ readonly startTime: number;
44
+ }) & {
45
+ readonly logInfo: (message: string, metadata?: Record<string, any>) => void;
46
+ readonly logError: (message: string, error?: Error, metadata?: Record<string, any>) => void;
47
+ readonly traceOperation: <T_1>(operationName: string, operation: () => T_1 | Promise<T_1>) => Promise<T_1>;
48
+ };
49
+ resolve: {};
50
+ schema: {};
51
+ standaloneSchema: {};
52
+ response: import("elysia").ExtractErrorFromHandle<{
53
+ readonly logInfo: (message: string, metadata?: Record<string, any>) => void;
54
+ readonly logError: (message: string, error?: Error, metadata?: Record<string, any>) => void;
55
+ readonly traceOperation: <T_1>(operationName: string, operation: () => T_1 | Promise<T_1>) => Promise<T_1>;
56
+ }>;
57
+ }>;
58
+ //# sourceMappingURL=elysia-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elysia-plugin.d.ts","sourceRoot":"","sources":["../src/elysia-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,MAAM,GAAE,kBAAuB,IAYd,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA+EE,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qCAI9C,MAAM,UACP,KAAK,aAEF,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;sDAKf,MAAM,aACV,MAAM,GAAC,GAAG,OAAO,CAAC,GAAC,CAAC,KAC9B,OAAO,CAAC,GAAC,CAAC;;;;;;oCAdM,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qCAI9C,MAAM,UACP,KAAK,aAEF,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;sDAKf,MAAM,aACV,MAAM,GAAC,GAAG,OAAO,CAAC,GAAC,CAAC,KAC9B,OAAO,CAAC,GAAC,CAAC;;GAYpB"}