fix: remaining starred-project issues, plus better Error logging and user verbiage
This commit is contained in:
@@ -353,6 +353,14 @@ export const PlatformServiceMixin = {
|
||||
? JSON.stringify(settings.searchBoxes)
|
||||
: String(settings.searchBoxes);
|
||||
}
|
||||
if (settings.starredPlanHandleIds !== undefined) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
(converted as any).starredPlanHandleIds = Array.isArray(
|
||||
settings.starredPlanHandleIds,
|
||||
)
|
||||
? JSON.stringify(settings.starredPlanHandleIds)
|
||||
: String(settings.starredPlanHandleIds);
|
||||
}
|
||||
|
||||
return converted;
|
||||
},
|
||||
@@ -555,6 +563,12 @@ export const PlatformServiceMixin = {
|
||||
if (settings.searchBoxes) {
|
||||
settings.searchBoxes = this._parseJsonField(settings.searchBoxes, []);
|
||||
}
|
||||
if (settings.starredPlanHandleIds) {
|
||||
settings.starredPlanHandleIds = this._parseJsonField(
|
||||
settings.starredPlanHandleIds,
|
||||
[],
|
||||
);
|
||||
}
|
||||
|
||||
return settings;
|
||||
} catch (error) {
|
||||
@@ -621,6 +635,12 @@ export const PlatformServiceMixin = {
|
||||
[],
|
||||
);
|
||||
}
|
||||
if (mergedSettings.starredPlanHandleIds) {
|
||||
mergedSettings.starredPlanHandleIds = this._parseJsonField(
|
||||
mergedSettings.starredPlanHandleIds,
|
||||
[],
|
||||
);
|
||||
}
|
||||
|
||||
return mergedSettings;
|
||||
} catch (error) {
|
||||
|
||||
@@ -24,10 +24,28 @@ export function getMemoryLogs(): string[] {
|
||||
return [..._memoryLogs];
|
||||
}
|
||||
|
||||
/**
|
||||
* Stringify an object with proper handling of circular references and functions
|
||||
*
|
||||
* Don't use for arrays; map with this over the array.
|
||||
*
|
||||
* @param obj - The object to stringify
|
||||
* @returns The stringified object, plus 'message' and 'stack' for Error objects
|
||||
*/
|
||||
export function safeStringify(obj: unknown) {
|
||||
const seen = new WeakSet();
|
||||
|
||||
return JSON.stringify(obj, (_key, value) => {
|
||||
// since 'message' & 'stack' are not enumerable for errors, let's add those
|
||||
let objToStringify = obj;
|
||||
if (obj instanceof Error) {
|
||||
objToStringify = {
|
||||
...obj,
|
||||
message: obj.message,
|
||||
stack: obj.stack,
|
||||
};
|
||||
}
|
||||
|
||||
return JSON.stringify(objToStringify, (_key, value) => {
|
||||
if (typeof value === "object" && value !== null) {
|
||||
if (seen.has(value)) {
|
||||
return "[Circular]";
|
||||
@@ -178,7 +196,8 @@ export const logger = {
|
||||
}
|
||||
|
||||
// Database logging
|
||||
const argsString = args.length > 0 ? " - " + safeStringify(args) : "";
|
||||
const argsString =
|
||||
args.length > 0 ? " - " + args.map(safeStringify).join(", ") : "";
|
||||
logToDatabase(message + argsString, "info");
|
||||
},
|
||||
|
||||
@@ -189,7 +208,8 @@ export const logger = {
|
||||
}
|
||||
|
||||
// Database logging
|
||||
const argsString = args.length > 0 ? " - " + safeStringify(args) : "";
|
||||
const argsString =
|
||||
args.length > 0 ? " - " + args.map(safeStringify).join(", ") : "";
|
||||
logToDatabase(message + argsString, "info");
|
||||
},
|
||||
|
||||
@@ -200,7 +220,8 @@ export const logger = {
|
||||
}
|
||||
|
||||
// Database logging
|
||||
const argsString = args.length > 0 ? " - " + safeStringify(args) : "";
|
||||
const argsString =
|
||||
args.length > 0 ? " - " + args.map(safeStringify).join(", ") : "";
|
||||
logToDatabase(message + argsString, "warn");
|
||||
},
|
||||
|
||||
@@ -211,9 +232,9 @@ export const logger = {
|
||||
}
|
||||
|
||||
// Database logging
|
||||
const messageString = safeStringify(message);
|
||||
const argsString = args.length > 0 ? safeStringify(args) : "";
|
||||
logToDatabase(messageString + argsString, "error");
|
||||
const argsString =
|
||||
args.length > 0 ? " - " + args.map(safeStringify).join(", ") : "";
|
||||
logToDatabase(message + argsString, "error");
|
||||
},
|
||||
|
||||
// New database-focused methods (self-contained)
|
||||
|
||||
Reference in New Issue
Block a user