Skip to content
This repository was archived by the owner on May 19, 2023. It is now read-only.

Commit 9b5e019

Browse files
committed
feat: logging utility
1 parent a503eef commit 9b5e019

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

src/core/reactive.ts

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { KV } from '@models/generics';
22
import { State, Watchers } from '@models/structs';
3+
import { error } from '@utils/log';
34

45
export const arrayEquals = (firstArray: unknown[], secondArray: unknown[]): boolean => {
56
// Deep Array equality check
@@ -16,13 +17,19 @@ export const reactive = (
1617
render: (props: string[]) => void,
1718
watchers: Watchers = {}
1819
): State => {
20+
const supportedObjectTypes = ['Object', 'Array'].map((type: string) => `[object ${type}]`);
1921
const handler = {
2022
get(target: KV<unknown>, key: string): unknown {
2123
const ret = target[key];
22-
2324
if (typeof ret === 'object' && ret !== null) {
24-
// Deep proxy - if there is an object in an object, need to proxify that.
25-
return new Proxy(ret, handler);
25+
const objectType = Object.prototype.toString.call(ret);
26+
if (supportedObjectTypes.includes(objectType)) {
27+
// Deep proxy - if there is an object in an object, need to proxify that.
28+
return new Proxy(ret as KV<unknown>, handler);
29+
} else {
30+
error(`Data type ${objectType} is not supported`);
31+
return ret;
32+
}
2633
} else {
2734
return ret;
2835
}

src/core/utils/computeExpression.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { KV } from '@models/generics';
22
import { Refs } from '@models/structs';
3+
import { error } from '@utils/log';
34

45
export const computeExpression = (
56
expression: string,
@@ -48,7 +49,7 @@ export const computeExpression = (
4849
);
4950
}
5051
} catch (err) {
51-
console.warn(`Lucia Error: "${err}"\n\nExpression: "${expression}"\nElement:`, el);
52+
error(err, expression, el);
5253
}
5354
};
5455
};

src/core/utils/log.ts

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export const error = (err: string, expression?: string, el?: HTMLElement): void => {
2+
let message = `Lucia Error: "${err}"`;
3+
if (expression) message += `\n\nExpression: "${expression}"`;
4+
if (el) message += `\nElement:`;
5+
console.warn(message, el);
6+
};

0 commit comments

Comments
 (0)