@hkdigital/lib-core 0.4.44 → 0.4.46

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.
@@ -2,9 +2,13 @@
2
2
  * Create a client-side logger with console adapter
3
3
  *
4
4
  * @param {string} name
5
- * @param {string} [level=INFO] - Initial log level
5
+ *
6
+ * @param {import('../../typedef.js').LogLevel} level
7
+ * Initial log level
8
+ *
6
9
  * @param {Object} [consoleOptions] - Additional console options
10
+ *
7
11
  * @returns {Logger} Configured logger instance
8
12
  */
9
- export function createClientLogger(name: string, level?: string, consoleOptions?: Object): Logger;
13
+ export function createClientLogger(name: string, level: import("../../typedef.js").LogLevel, consoleOptions?: Object): Logger;
10
14
  import { Logger } from '../logger/index.js';
@@ -1,20 +1,30 @@
1
1
  import { Logger } from '../logger/index.js';
2
2
  import { ConsoleAdapter } from '../adapters/console.js';
3
- import { INFO, LOG } from '../../levels.js';
3
+ import { DEBUG, LOG, LEVELS } from '../../levels.js';
4
4
 
5
5
  /**
6
6
  * Create a client-side logger with console adapter
7
7
  *
8
8
  * @param {string} name
9
- * @param {string} [level=INFO] - Initial log level
9
+ *
10
+ * @param {import('../../typedef.js').LogLevel} level
11
+ * Initial log level
12
+ *
10
13
  * @param {Object} [consoleOptions] - Additional console options
14
+ *
11
15
  * @returns {Logger} Configured logger instance
12
16
  */
13
- export function createClientLogger(name, level = INFO, consoleOptions = {}) {
17
+ export function createClientLogger(name, level, consoleOptions = {}) {
18
+
19
+ if( !level || !LEVELS[level] ) {
20
+ throw new Error('Missing or invalid parameter [level]');
21
+ }
22
+
14
23
  const logger = new Logger(name, level);
15
24
  const adapter = new ConsoleAdapter({ ...consoleOptions, level });
16
25
 
17
26
  // Connect adapter to logger events
27
+ // @ts-ignore (just accept logEvent)
18
28
  logger.on(LOG, (logEvent) => adapter.handleLog(logEvent));
19
29
 
20
30
  return logger;
@@ -2,9 +2,13 @@
2
2
  * Create a server-side logger with pino adapter
3
3
  *
4
4
  * @param {string} name
5
- * @param {string} [level=INFO] - Initial log level
5
+ *
6
+ * @param {import('../../typedef.js').LogLevel} level
7
+ * Initial log level
8
+ *
6
9
  * @param {Object} [pinoOptions] - Additional pino options
10
+ *
7
11
  * @returns {Logger} Configured logger instance
8
12
  */
9
- export function createServerLogger(name: string, level?: string, pinoOptions?: Object): Logger;
13
+ export function createServerLogger(name: string, level: import("../../typedef.js").LogLevel, pinoOptions?: Object): Logger;
10
14
  import { Logger } from '../logger/index.js';
@@ -1,31 +1,30 @@
1
1
  import { Logger } from '../logger/index.js';
2
2
  import { PinoAdapter } from '../adapters/pino.js';
3
- import { INFO, LOG } from '../../levels.js';
4
- // import { expectNoSSRContext } from '../../../util/ssr/index.js';
3
+ import { LOG, LEVELS } from '../../levels.js';
5
4
 
6
5
  /**
7
6
  * Create a server-side logger with pino adapter
8
7
  *
9
8
  * @param {string} name
10
- * @param {string} [level=INFO] - Initial log level
9
+ *
10
+ * @param {import('../../typedef.js').LogLevel} level
11
+ * Initial log level
12
+ *
11
13
  * @param {Object} [pinoOptions] - Additional pino options
14
+ *
12
15
  * @returns {Logger} Configured logger instance
13
16
  */
14
- export function createServerLogger(name, level = INFO, pinoOptions = {}) {
15
- // Guard against SSR serialization issues
16
- // expectNoSSRContext();
17
+ export function createServerLogger(name, level, pinoOptions = {}) {
18
+
19
+ if( !level || !LEVELS[level] ) {
20
+ throw new Error('Missing or invalid parameter [level]');
21
+ }
17
22
 
18
23
  const logger = new Logger(name, level);
19
24
  const adapter = new PinoAdapter(pinoOptions);
20
25
 
21
26
  // Connect adapter to logger events
22
- //
23
- // @note pino might fail if:
24
- // pino tries to create a worker thread for pino-pretty before the
25
- // development environment is fully ready, causing the transport target
26
- // determination to fail
27
- // -> Stop and start the dev server
28
- //
27
+ // @ts-ignore (just accept logEvent)
29
28
  logger.on(LOG, (logEvent) => adapter.handleLog(logEvent));
30
29
 
31
30
  return logger;
@@ -10,7 +10,8 @@ import {
10
10
  LOAD,
11
11
  LOADED,
12
12
  ABORT,
13
- ABORTED
13
+ ABORTED,
14
+ ERROR
14
15
  } from '../../../state/machines.js';
15
16
 
16
17
  import { waitForState } from '../../../util/svelte.js';
@@ -108,6 +109,20 @@ export default class SceneBase {
108
109
  }
109
110
  });
110
111
 
112
+ $effect(() => {
113
+ if (this.#state.current === STATE_LOADING) {
114
+ // Check if any source failed during loading
115
+ const sources = this.sources;
116
+ for (const source of sources) {
117
+ const loader = this.getLoaderFromSource(source);
118
+ if (loader.state === STATE_ERROR) {
119
+ this.#state.send(ERROR, loader.error || new Error('Source loading failed'));
120
+ break;
121
+ }
122
+ }
123
+ }
124
+ });
125
+
111
126
  state.onenter = (currentState) => {
112
127
  if (currentState === STATE_LOADING) {
113
128
  this.#startLoading();
@@ -253,7 +268,7 @@ export default class SceneBase {
253
268
  if (isAborted || this.state === STATE_ABORTED) {
254
269
  reject(new Error('Preload was aborted'));
255
270
  } else if (this.state === STATE_ERROR) {
256
- reject(new Error('Preload failed due to error'));
271
+ reject(this.#state.error);
257
272
  } else if (this.loaded) {
258
273
  resolve(this);
259
274
  } else {
@@ -65,6 +65,7 @@ export default class LoadingStateMachine extends FiniteStateMachine {
65
65
  },
66
66
  [STATE_ABORTED]: {
67
67
  [LOAD]: STATE_LOADING,
68
+ [LOADED]: STATE_LOADED,
68
69
  [UNLOAD]: STATE_UNLOADING
69
70
  },
70
71
  [STATE_TIMEOUT]: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hkdigital/lib-core",
3
- "version": "0.4.44",
3
+ "version": "0.4.46",
4
4
  "author": {
5
5
  "name": "HKdigital",
6
6
  "url": "https://hkdigital.nl"