@quvel-kit/core 1.3.18 → 1.3.20

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.
@@ -15,7 +15,7 @@ import type { AuthMeta } from '../types/auth-meta';
15
15
  * meta: {
16
16
  * auth: createAuthMeta({
17
17
  * guestOnly: true,
18
- * redirectTo: '/dashboard'
18
+ * redirectTo: '/dadshboard'
19
19
  * })
20
20
  * }
21
21
  * ```
@@ -14,7 +14,7 @@
14
14
  * meta: {
15
15
  * auth: createAuthMeta({
16
16
  * guestOnly: true,
17
- * redirectTo: '/dashboard'
17
+ * redirectTo: '/dadshboard'
18
18
  * })
19
19
  * }
20
20
  * ```
@@ -10,6 +10,7 @@ import { type Ref } from 'vue';
10
10
  *
11
11
  * @param key - Unique key for this data (used for serialization)
12
12
  * @param fetcher - Async function that fetches the data
13
+ * @param factory - Optional factory function to reconstruct class instances from plain objects on client hydration
13
14
  * @returns Reactive data ref and error state
14
15
  *
15
16
  * @example
@@ -18,9 +19,16 @@ import { type Ref } from 'vue';
18
19
  * `household-${route.params.id}`,
19
20
  * () => householdService.get(route.params.id)
20
21
  * );
22
+ *
23
+ * // With factory for class instances:
24
+ * const { data: bill, error } = useSSRData(
25
+ * `bill-${route.params.id}`,
26
+ * () => billService.get(route.params.id),
27
+ * (plainObj) => new Bill(plainObj)
28
+ * );
21
29
  * ```
22
30
  */
23
- export declare function useSSRData<T>(key: string, fetcher: () => Promise<T>): {
31
+ export declare function useSSRData<T>(key: string, fetcher: () => Promise<T>, factory?: (data: any) => T): {
24
32
  data: Ref<T | null>;
25
33
  error: Ref<Error | null>;
26
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useSSRData.d.ts","sourceRoot":"","sources":["../../src/composables/useSSRData.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAoC,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAMjE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACxB;IACD,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;CAC1B,CAkDA"}
1
+ {"version":3,"file":"useSSRData.d.ts","sourceRoot":"","sources":["../../src/composables/useSSRData.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAoC,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAMjE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GACzB;IACD,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;CAC1B,CAkDA"}
@@ -13,6 +13,7 @@ const SSR_ERROR_PREFIX = '__SSR_ERROR_';
13
13
  *
14
14
  * @param key - Unique key for this data (used for serialization)
15
15
  * @param fetcher - Async function that fetches the data
16
+ * @param factory - Optional factory function to reconstruct class instances from plain objects on client hydration
16
17
  * @returns Reactive data ref and error state
17
18
  *
18
19
  * @example
@@ -21,9 +22,16 @@ const SSR_ERROR_PREFIX = '__SSR_ERROR_';
21
22
  * `household-${route.params.id}`,
22
23
  * () => householdService.get(route.params.id)
23
24
  * );
25
+ *
26
+ * // With factory for class instances:
27
+ * const { data: bill, error } = useSSRData(
28
+ * `bill-${route.params.id}`,
29
+ * () => billService.get(route.params.id),
30
+ * (plainObj) => new Bill(plainObj)
31
+ * );
24
32
  * ```
25
33
  */
26
- export function useSSRData(key, fetcher) {
34
+ export function useSSRData(key, fetcher, factory) {
27
35
  const isSSR = typeof window === 'undefined';
28
36
  const container = useQuvel();
29
37
  const dataKey = `${SSR_DATA_PREFIX}${key}`;
@@ -40,7 +48,7 @@ export function useSSRData(key, fetcher) {
40
48
  delete win[errorKey];
41
49
  }
42
50
  else if (ssrData !== undefined) {
43
- initialData = ssrData;
51
+ initialData = factory ? factory(ssrData) : ssrData;
44
52
  delete win[dataKey];
45
53
  }
46
54
  }
@@ -0,0 +1,29 @@
1
+ import { LogLevel } from '../../types/logging.types.js';
2
+ import type { TraceInfo } from '../../types/logging.types.js';
3
+ import { BaseLogger } from './BaseLogger.js';
4
+ /**
5
+ * BetterStack logger implementation
6
+ * Sends logs to BetterStack (Logtail) for distributed tracing and monitoring
7
+ *
8
+ * @see https://betterstack.com/docs/logs/logging-start/
9
+ */
10
+ export declare class BetterStackLogger extends BaseLogger {
11
+ private readonly apiKey;
12
+ private readonly minLevel;
13
+ private readonly endpoint;
14
+ constructor(traceInfo: TraceInfo, apiKey: string, minLevel?: LogLevel);
15
+ /**
16
+ * Log level priority mapping (higher number = higher priority)
17
+ */
18
+ private static readonly LOG_LEVEL_PRIORITY;
19
+ /**
20
+ * Check if a log level should be sent
21
+ */
22
+ private shouldLog;
23
+ protected writeLog(level: LogLevel, message: string, context?: Record<string, unknown>): void;
24
+ /**
25
+ * Send log to BetterStack
26
+ */
27
+ private sendLog;
28
+ }
29
+ //# sourceMappingURL=BetterStackLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BetterStackLogger.d.ts","sourceRoot":"","sources":["../../../src/services/logger/BetterStackLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;gBAG5D,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,QAAwB;IAOpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CASxC;IAEF;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA0B7F;;OAEG;YACW,OAAO;CActB"}
@@ -0,0 +1,77 @@
1
+ import { LogLevel } from '../../types/logging.types.js';
2
+ import { BaseLogger } from './BaseLogger.js';
3
+ /**
4
+ * BetterStack logger implementation
5
+ * Sends logs to BetterStack (Logtail) for distributed tracing and monitoring
6
+ *
7
+ * @see https://betterstack.com/docs/logs/logging-start/
8
+ */
9
+ export class BetterStackLogger extends BaseLogger {
10
+ apiKey;
11
+ minLevel;
12
+ endpoint = 'https://in.logs.betterstack.com';
13
+ constructor(traceInfo, apiKey, minLevel = LogLevel.INFO) {
14
+ super(traceInfo);
15
+ this.apiKey = apiKey;
16
+ this.minLevel = minLevel;
17
+ }
18
+ /**
19
+ * Log level priority mapping (higher number = higher priority)
20
+ */
21
+ static LOG_LEVEL_PRIORITY = {
22
+ [LogLevel.EMERGENCY]: 8,
23
+ [LogLevel.ALERT]: 7,
24
+ [LogLevel.CRITICAL]: 6,
25
+ [LogLevel.ERROR]: 5,
26
+ [LogLevel.WARNING]: 4,
27
+ [LogLevel.NOTICE]: 3,
28
+ [LogLevel.INFO]: 2,
29
+ [LogLevel.DEBUG]: 1,
30
+ };
31
+ /**
32
+ * Check if a log level should be sent
33
+ */
34
+ shouldLog(level) {
35
+ return (BetterStackLogger.LOG_LEVEL_PRIORITY[level] >=
36
+ BetterStackLogger.LOG_LEVEL_PRIORITY[this.minLevel]);
37
+ }
38
+ writeLog(level, message, context) {
39
+ if (!this.shouldLog(level)) {
40
+ return;
41
+ }
42
+ // Build the log payload
43
+ const payload = {
44
+ dt: this.traceInfo.timestamp,
45
+ level: level,
46
+ message: message,
47
+ trace_id: this.traceInfo.id,
48
+ environment: this.traceInfo.environment,
49
+ runtime: this.traceInfo.runtime,
50
+ tenant: this.traceInfo.tenant,
51
+ ...context,
52
+ };
53
+ // Send to BetterStack asynchronously (fire and forget)
54
+ this.sendLog(payload).catch(error => {
55
+ // Fail silently - don't break app if logging fails
56
+ if (process.env.NODE_ENV === 'development') {
57
+ console.error('[BetterStackLogger] Failed to send log:', error);
58
+ }
59
+ });
60
+ }
61
+ /**
62
+ * Send log to BetterStack
63
+ */
64
+ async sendLog(payload) {
65
+ const response = await fetch(this.endpoint, {
66
+ method: 'POST',
67
+ headers: {
68
+ 'Content-Type': 'application/json',
69
+ 'Authorization': `Bearer ${this.apiKey}`,
70
+ },
71
+ body: JSON.stringify(payload),
72
+ });
73
+ if (!response.ok) {
74
+ throw new Error(`BetterStack API error: ${response.status} ${response.statusText}`);
75
+ }
76
+ }
77
+ }
@@ -0,0 +1,28 @@
1
+ import { LogLevel } from '../../types/logging.types.js';
2
+ import type { LoggerInterface, TraceInfo } from '../../types/logging.types.js';
3
+ import { BaseLogger } from './BaseLogger.js';
4
+ /**
5
+ * Multi-logger implementation (Composite pattern)
6
+ * Dispatches log messages to multiple logger instances
7
+ *
8
+ * Use this to log to multiple destinations simultaneously (e.g., console + BetterStack)
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const logger = new MultiLogger(traceInfo, [
13
+ * new ConsoleLogger(traceInfo, LogLevel.DEBUG),
14
+ * new BetterStackLogger(traceInfo, apiKey)
15
+ * ]);
16
+ *
17
+ * logger.info('This goes to both console and BetterStack');
18
+ * ```
19
+ */
20
+ export declare class MultiLogger extends BaseLogger {
21
+ private readonly loggers;
22
+ constructor(traceInfo: TraceInfo, loggers: LoggerInterface[]);
23
+ /**
24
+ * Dispatch log to all configured loggers
25
+ */
26
+ protected writeLog(level: LogLevel, message: string, context?: Record<string, unknown>): void;
27
+ }
28
+ //# sourceMappingURL=MultiLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiLogger.d.ts","sourceRoot":"","sources":["../../../src/services/logger/MultiLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,WAAY,SAAQ,UAAU;IAGvC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADxB,SAAS,EAAE,SAAS,EACH,OAAO,EAAE,eAAe,EAAE;IAK7C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAK9F"}
@@ -0,0 +1,32 @@
1
+ import { BaseLogger } from './BaseLogger.js';
2
+ /**
3
+ * Multi-logger implementation (Composite pattern)
4
+ * Dispatches log messages to multiple logger instances
5
+ *
6
+ * Use this to log to multiple destinations simultaneously (e.g., console + BetterStack)
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const logger = new MultiLogger(traceInfo, [
11
+ * new ConsoleLogger(traceInfo, LogLevel.DEBUG),
12
+ * new BetterStackLogger(traceInfo, apiKey)
13
+ * ]);
14
+ *
15
+ * logger.info('This goes to both console and BetterStack');
16
+ * ```
17
+ */
18
+ export class MultiLogger extends BaseLogger {
19
+ loggers;
20
+ constructor(traceInfo, loggers) {
21
+ super(traceInfo);
22
+ this.loggers = loggers;
23
+ }
24
+ /**
25
+ * Dispatch log to all configured loggers
26
+ */
27
+ writeLog(level, message, context) {
28
+ this.loggers.forEach(logger => {
29
+ logger.log(level, message, context);
30
+ });
31
+ }
32
+ }
@@ -16,7 +16,9 @@ export declare enum LogLevel {
16
16
  */
17
17
  export declare enum LoggerType {
18
18
  CONSOLE = "console",
19
- NULL = "null"
19
+ NULL = "null",
20
+ BETTERSTACK = "betterstack",
21
+ MULTI = "multi"
20
22
  }
21
23
  /**
22
24
  * Trace information for request/response tracking
@@ -1 +1 @@
1
- {"version":3,"file":"logging.types.d.ts","sourceRoot":"","sources":["../../src/types/logging.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,QAAQ;IAClB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,sBAAsB;IACtB,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,YAAY,IAAI,SAAS,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEpE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEhE;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEnE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEhE;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAElE;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEjE;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAE/D;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEhE;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9E"}
1
+ {"version":3,"file":"logging.types.d.ts","sourceRoot":"","sources":["../../src/types/logging.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,QAAQ;IAClB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,sBAAsB;IACtB,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,YAAY,IAAI,SAAS,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEpE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEhE;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEnE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEhE;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAElE;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEjE;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAE/D;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEhE;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9E"}
@@ -19,4 +19,6 @@ export var LoggerType;
19
19
  (function (LoggerType) {
20
20
  LoggerType["CONSOLE"] = "console";
21
21
  LoggerType["NULL"] = "null";
22
+ LoggerType["BETTERSTACK"] = "betterstack";
23
+ LoggerType["MULTI"] = "multi";
22
24
  })(LoggerType || (LoggerType = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAyB,MAAM,2BAA2B,CAAC;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMvD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,GAC3B,eAAe,CAmBjB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CASvD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAQtC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,GAAE,QAAwB,GAAG,OAAO,CAE7F"}
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAyB,MAAM,2BAA2B,CAAC;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQvD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,GAC3B,eAAe,CA6CjB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CASvD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAQtC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,GAAE,QAAwB,GAAG,OAAO,CAE7F"}
@@ -1,5 +1,7 @@
1
1
  import { ConsoleLogger } from '../services/logger/ConsoleLogger.js';
2
2
  import { NullLogger } from '../services/logger/NullLogger.js';
3
+ import { BetterStackLogger } from '../services/logger/BetterStackLogger.js';
4
+ import { MultiLogger } from '../services/logger/MultiLogger.js';
3
5
  import { LogLevel as LogLevelEnum, LoggerType as LoggerTypeEnum } from '../types/logging.types.js';
4
6
  import { getEnv } from './env.js';
5
7
  /**
@@ -18,6 +20,28 @@ export function createLogger(config) {
18
20
  switch (loggerType.toLowerCase()) {
19
21
  case LoggerTypeEnum.CONSOLE:
20
22
  return new ConsoleLogger(traceInfo, logLevel);
23
+ case LoggerTypeEnum.BETTERSTACK: {
24
+ const apiKey = getEnv('VITE_BETTERSTACK_API_KEY');
25
+ if (!apiKey) {
26
+ console.warn('[Logger] BETTERSTACK logger requires VITE_BETTERSTACK_API_KEY, falling back to NULL');
27
+ return new NullLogger(traceInfo);
28
+ }
29
+ return new BetterStackLogger(traceInfo, apiKey, logLevel);
30
+ }
31
+ case LoggerTypeEnum.MULTI: {
32
+ const loggers = [
33
+ new ConsoleLogger(traceInfo, logLevel),
34
+ ];
35
+ // Add BetterStack if API key is available
36
+ const apiKey = getEnv('VITE_BETTERSTACK_API_KEY');
37
+ if (apiKey) {
38
+ loggers.push(new BetterStackLogger(traceInfo, apiKey, logLevel));
39
+ }
40
+ else {
41
+ console.warn('[Logger] VITE_BETTERSTACK_API_KEY not set, only console logging will be used');
42
+ }
43
+ return new MultiLogger(traceInfo, loggers);
44
+ }
21
45
  case LoggerTypeEnum.NULL:
22
46
  default:
23
47
  return new NullLogger(traceInfo);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quvel-kit/core",
3
- "version": "1.3.18",
3
+ "version": "1.3.20",
4
4
  "description": "Core utilities for Quvel UI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",