@hkdigital/lib-sveltekit 0.1.70 → 0.1.72

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 (31) hide show
  1. package/dist/classes/cache/IndexedDbCache.d.ts +212 -0
  2. package/dist/classes/cache/IndexedDbCache.js +673 -0
  3. package/dist/classes/cache/MemoryResponseCache.d.ts +101 -14
  4. package/dist/classes/cache/MemoryResponseCache.js +97 -12
  5. package/dist/classes/cache/index.d.ts +1 -1
  6. package/dist/classes/cache/index.js +2 -1
  7. package/dist/classes/events/EventEmitter.d.ts +142 -0
  8. package/dist/classes/events/EventEmitter.js +275 -0
  9. package/dist/classes/events/index.d.ts +1 -0
  10. package/dist/classes/events/index.js +2 -0
  11. package/dist/classes/logging/Logger.d.ts +74 -0
  12. package/dist/classes/logging/Logger.js +158 -0
  13. package/dist/classes/logging/constants.d.ts +14 -0
  14. package/dist/classes/logging/constants.js +18 -0
  15. package/dist/classes/logging/index.d.ts +2 -0
  16. package/dist/classes/logging/index.js +4 -0
  17. package/dist/classes/services/ServiceBase.d.ts +153 -0
  18. package/dist/classes/services/ServiceBase.js +409 -0
  19. package/dist/classes/services/ServiceManager.d.ts +350 -0
  20. package/dist/classes/services/ServiceManager.js +1114 -0
  21. package/dist/classes/services/constants.d.ts +11 -0
  22. package/dist/classes/services/constants.js +12 -0
  23. package/dist/classes/services/index.d.ts +3 -0
  24. package/dist/classes/services/index.js +5 -0
  25. package/dist/util/env/index.d.ts +1 -0
  26. package/dist/util/env/index.js +9 -0
  27. package/dist/util/http/caching.js +24 -12
  28. package/dist/util/http/http-request.js +12 -7
  29. package/package.json +2 -1
  30. package/dist/classes/cache/PersistentResponseCache.d.ts +0 -46
  31. /package/dist/classes/cache/{PersistentResponseCache.js → PersistentResponseCache.js__} +0 -0
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Logger class for consistent logging across services
3
+ * @extends EventEmitter
4
+ */
5
+ export default class Logger extends EventEmitter {
6
+ /**
7
+ * Create a new Logger instance
8
+ *
9
+ * @param {string} name - Name of the service/component for this logger
10
+ * @param {string} [defaultLevel=INFO] - Initial log level threshold
11
+ */
12
+ constructor(name: string, defaultLevel?: string);
13
+ name: string;
14
+ level: string;
15
+ /**
16
+ * Set the minimum log level threshold
17
+ *
18
+ * @param {string} level - New log level (DEBUG, INFO, WARN, ERROR, FATAL,
19
+ * or NONE)
20
+ * @returns {boolean} True if level was valid and set, false otherwise
21
+ */
22
+ setLevel(level: string): boolean;
23
+ /**
24
+ * Internal logging method
25
+ *
26
+ * @param {string} level - Log level
27
+ * @param {string} message - Log message
28
+ * @param {*} [details] - Additional details to include in the log
29
+ * @returns {boolean} True if the log was emitted, false if filtered
30
+ * @private
31
+ */
32
+ private _log;
33
+ /**
34
+ * Log a debug message
35
+ *
36
+ * @param {string} message - Log message
37
+ * @param {*} [details] - Additional details
38
+ * @returns {boolean} True if the log was emitted
39
+ */
40
+ debug(message: string, details?: any): boolean;
41
+ /**
42
+ * Log an info message
43
+ *
44
+ * @param {string} message - Log message
45
+ * @param {*} [details] - Additional details
46
+ * @returns {boolean} True if the log was emitted
47
+ */
48
+ info(message: string, details?: any): boolean;
49
+ /**
50
+ * Log a warning message
51
+ *
52
+ * @param {string} message - Log message
53
+ * @param {*} [details] - Additional details
54
+ * @returns {boolean} True if the log was emitted
55
+ */
56
+ warn(message: string, details?: any): boolean;
57
+ /**
58
+ * Log an error message
59
+ *
60
+ * @param {string} message - Log message
61
+ * @param {*} [details] - Additional details
62
+ * @returns {boolean} True if the log was emitted
63
+ */
64
+ error(message: string, details?: any): boolean;
65
+ /**
66
+ * Log a fatal error message
67
+ *
68
+ * @param {string} message - Log message
69
+ * @param {*} [details] - Additional details
70
+ * @returns {boolean} True if the log was emitted
71
+ */
72
+ fatal(message: string, details?: any): boolean;
73
+ }
74
+ import { EventEmitter } from '../events';
@@ -0,0 +1,158 @@
1
+ /**
2
+ * @fileoverview Logger implementation based on EventEmitter e.g.
3
+ * for service logging.
4
+ *
5
+ * This Logger provides consistent log level filtering and event-based
6
+ * distribution of log messages. It integrates with the service architecture
7
+ * to provide controlled, consistent logging across all services.
8
+ *
9
+ * @example
10
+ * // Basic usage
11
+ * import { Logger, INFO, DEBUG } from './Logger.js';
12
+ *
13
+ * const logger = new Logger('myService', INFO);
14
+ *
15
+ * // Log at different levels
16
+ * logger.debug('Detailed information', { value: 42 }); // Filtered out at INFO
17
+ * logger.info('Operation completed', { items: 27 }); // Will be logged
18
+ * logger.warn('Unusual condition detected'); // Will be logged
19
+ *
20
+ * // Listen to log events
21
+ * logger.on('log', (logEvent) => {
22
+ * // Process all log events
23
+ * saveToLogFile(logEvent);
24
+ * });
25
+ *
26
+ * logger.on(ERROR, (logEvent) => {
27
+ * // Process only error events
28
+ * sendAlertEmail(logEvent);
29
+ * });
30
+ *
31
+ * // Change log level at runtime
32
+ * logger.setLevel(DEBUG); // Now debug messages will also be logged
33
+ */
34
+
35
+ import { EventEmitter } from '../events';
36
+
37
+ import { DEBUG, INFO, WARN, ERROR, FATAL, NONE, LEVELS } from './constants.js';
38
+
39
+ /**
40
+ * Logger class for consistent logging across services
41
+ * @extends EventEmitter
42
+ */
43
+ export default class Logger extends EventEmitter {
44
+ /**
45
+ * Create a new Logger instance
46
+ *
47
+ * @param {string} name - Name of the service/component for this logger
48
+ * @param {string} [defaultLevel=INFO] - Initial log level threshold
49
+ */
50
+ constructor(name, defaultLevel = INFO) {
51
+ super();
52
+ this.name = name;
53
+ this.level = defaultLevel;
54
+ }
55
+
56
+ /**
57
+ * Set the minimum log level threshold
58
+ *
59
+ * @param {string} level - New log level (DEBUG, INFO, WARN, ERROR, FATAL,
60
+ * or NONE)
61
+ * @returns {boolean} True if level was valid and set, false otherwise
62
+ */
63
+ setLevel(level) {
64
+ if (LEVELS[level] !== undefined) {
65
+ this.level = level;
66
+ return true;
67
+ }
68
+
69
+ console.warn(`Invalid log level: ${level}`);
70
+ return false;
71
+ }
72
+
73
+ /**
74
+ * Internal logging method
75
+ *
76
+ * @param {string} level - Log level
77
+ * @param {string} message - Log message
78
+ * @param {*} [details] - Additional details to include in the log
79
+ * @returns {boolean} True if the log was emitted, false if filtered
80
+ * @private
81
+ */
82
+ _log(level, message, details) {
83
+ // Check if this log level should be filtered
84
+ if (LEVELS[level] < LEVELS[this.level]) {
85
+ return false; // Below threshold, don't emit
86
+ }
87
+
88
+ const timestamp = new Date();
89
+ const logEvent = {
90
+ timestamp,
91
+ service: this.name,
92
+ level,
93
+ message,
94
+ details
95
+ };
96
+
97
+ // Emit as both specific level event and generic 'log' event
98
+ this.emit(level, logEvent);
99
+ this.emit('log', logEvent);
100
+
101
+ return true;
102
+ }
103
+
104
+ /**
105
+ * Log a debug message
106
+ *
107
+ * @param {string} message - Log message
108
+ * @param {*} [details] - Additional details
109
+ * @returns {boolean} True if the log was emitted
110
+ */
111
+ debug(message, details) {
112
+ return this._log(DEBUG, message, details);
113
+ }
114
+
115
+ /**
116
+ * Log an info message
117
+ *
118
+ * @param {string} message - Log message
119
+ * @param {*} [details] - Additional details
120
+ * @returns {boolean} True if the log was emitted
121
+ */
122
+ info(message, details) {
123
+ return this._log(INFO, message, details);
124
+ }
125
+
126
+ /**
127
+ * Log a warning message
128
+ *
129
+ * @param {string} message - Log message
130
+ * @param {*} [details] - Additional details
131
+ * @returns {boolean} True if the log was emitted
132
+ */
133
+ warn(message, details) {
134
+ return this._log(WARN, message, details);
135
+ }
136
+
137
+ /**
138
+ * Log an error message
139
+ *
140
+ * @param {string} message - Log message
141
+ * @param {*} [details] - Additional details
142
+ * @returns {boolean} True if the log was emitted
143
+ */
144
+ error(message, details) {
145
+ return this._log(ERROR, message, details);
146
+ }
147
+
148
+ /**
149
+ * Log a fatal error message
150
+ *
151
+ * @param {string} message - Log message
152
+ * @param {*} [details] - Additional details
153
+ * @returns {boolean} True if the log was emitted
154
+ */
155
+ fatal(message, details) {
156
+ return this._log(FATAL, message, details);
157
+ }
158
+ }
@@ -0,0 +1,14 @@
1
+ export const DEBUG: "debug";
2
+ export const INFO: "info";
3
+ export const WARN: "warn";
4
+ export const ERROR: "error";
5
+ export const FATAL: "fatal";
6
+ export const NONE: "none";
7
+ export namespace LEVELS {
8
+ let debug: number;
9
+ let info: number;
10
+ let warn: number;
11
+ let error: number;
12
+ let fatal: number;
13
+ let none: number;
14
+ }
@@ -0,0 +1,18 @@
1
+
2
+ // Log level names
3
+ export const DEBUG = 'debug';
4
+ export const INFO = 'info';
5
+ export const WARN = 'warn';
6
+ export const ERROR = 'error';
7
+ export const FATAL = 'fatal';
8
+ export const NONE = 'none';
9
+
10
+ // Level values for filtering (higher = more important)
11
+ export const LEVELS = {
12
+ [DEBUG]: 1,
13
+ [INFO]: 2,
14
+ [WARN]: 3,
15
+ [ERROR]: 4,
16
+ [FATAL]: 5,
17
+ [NONE]: 6
18
+ };
@@ -0,0 +1,2 @@
1
+ export { default as Logger } from "./Logger.js";
2
+ export * from "./constants.js";
@@ -0,0 +1,4 @@
1
+
2
+ export { default as Logger } from './Logger.js';
3
+
4
+ export * from './constants.js';
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Base class for all services
3
+ */
4
+ export default class ServiceBase {
5
+ /**
6
+ * Create a new service
7
+ *
8
+ * @param {string} name - Service name
9
+ * @param {Object} [options] - Service options
10
+ * @param {string} [options.logLevel=INFO] - Initial log level
11
+ */
12
+ constructor(name: string, options?: {
13
+ logLevel?: string;
14
+ });
15
+ /**
16
+ * Service name
17
+ * @type {string}
18
+ */
19
+ name: string;
20
+ /**
21
+ * Event emitter for service events
22
+ * @type {EventEmitter}
23
+ */
24
+ events: EventEmitter;
25
+ /**
26
+ * Current service state
27
+ * @type {string}
28
+ */
29
+ state: string;
30
+ /**
31
+ * Last error that occurred
32
+ * @type {Error|null}
33
+ */
34
+ error: Error | null;
35
+ /**
36
+ * Last stable state before error
37
+ * @type {string|null}
38
+ * @private
39
+ */
40
+ private _preErrorState;
41
+ /**
42
+ * Service logger
43
+ * @type {Logger}
44
+ */
45
+ logger: Logger;
46
+ /**
47
+ * Set the service log level
48
+ *
49
+ * @param {string} level - New log level
50
+ * @returns {boolean} True if level was set, false if invalid
51
+ */
52
+ setLogLevel(level: string): boolean;
53
+ /**
54
+ * Initialize the service
55
+ *
56
+ * @param {Object} [config] - Service configuration
57
+ * @returns {Promise<boolean>} True if initialized successfully
58
+ */
59
+ initialize(config?: any): Promise<boolean>;
60
+ /**
61
+ * Start the service
62
+ *
63
+ * @returns {Promise<boolean>} True if started successfully
64
+ */
65
+ start(): Promise<boolean>;
66
+ /**
67
+ * Stop the service
68
+ *
69
+ * @returns {Promise<boolean>} True if stopped successfully
70
+ */
71
+ stop(): Promise<boolean>;
72
+ /**
73
+ * Recover the service
74
+ *
75
+ * @returns {Promise<boolean>} True if stopped successfully
76
+ */
77
+ recover(): Promise<boolean>;
78
+ /**
79
+ * Destroy the service
80
+ *
81
+ * @returns {Promise<boolean>} True if destroyed successfully
82
+ */
83
+ destroy(): Promise<boolean>;
84
+ /**
85
+ * Add an event listener
86
+ *
87
+ * @param {string} eventName - Event name
88
+ * @param {Function} handler - Event handler
89
+ * @returns {Function} Unsubscribe function
90
+ */
91
+ on(eventName: string, handler: Function): Function;
92
+ /**
93
+ * Emit an event
94
+ *
95
+ * @param {string} eventName - Event name
96
+ * @param {*} data - Event data
97
+ * @returns {boolean} True if event had listeners
98
+ */
99
+ emit(eventName: string, data: any): boolean;
100
+ /**
101
+ * Initialize the service (to be overridden)
102
+ *
103
+ * @protected
104
+ * @param {Object} config - Service configuration
105
+ * @returns {Promise<void>}
106
+ */
107
+ protected _init(config: any): Promise<void>;
108
+ /**
109
+ * Start the service (to be overridden)
110
+ *
111
+ * @protected
112
+ * @returns {Promise<void>}
113
+ */
114
+ protected _start(): Promise<void>;
115
+ /**
116
+ * Stop the service (to be overridden)
117
+ *
118
+ * @protected
119
+ * @returns {Promise<void>}
120
+ */
121
+ protected _stop(): Promise<void>;
122
+ /**
123
+ * Destroy the service (to be overridden)
124
+ *
125
+ * @protected
126
+ * @returns {Promise<void>}
127
+ */
128
+ protected _destroy(): Promise<void>;
129
+ /**
130
+ * Recover the service from an error (to be overridden)
131
+ *
132
+ * @protected
133
+ * @returns {Promise<void>}
134
+ */
135
+ protected _recover(): Promise<void>;
136
+ /**
137
+ * Set the service state
138
+ *
139
+ * @private
140
+ * @param {string} state - New state
141
+ */
142
+ private _setState;
143
+ /**
144
+ * Set an error state
145
+ *
146
+ * @private
147
+ * @param {string} operation - Operation that failed
148
+ * @param {Error} error - Error that occurred
149
+ */
150
+ private _setError;
151
+ }
152
+ import { EventEmitter } from '../events';
153
+ import { Logger } from '../logging';