feat(storage-fs): serialize errors recursively if "cause" is an Error instance

This commit is contained in:
Joakim Carlstein 2023-11-22 14:16:20 +01:00
parent d4d87036df
commit e79dd4bca9
2 changed files with 16 additions and 1 deletions

View file

@ -0,0 +1,5 @@
---
'@emigrate/storage-fs': minor
---
Serialize errors recursively if they have a "cause" set to an Error instance

View file

@ -11,6 +11,16 @@ type SerializedError = {
name: string; name: string;
message: string; message: string;
stack?: string; stack?: string;
cause?: unknown;
};
const serializeError = (error: Error): SerializedError => {
return {
name: error.name,
message: error.message,
stack: error.stack,
cause: error.cause instanceof Error ? serializeError(error.cause) : error.cause,
};
}; };
export default function storageFs({ filename }: StorageFsOptions): EmigrateStorage { export default function storageFs({ filename }: StorageFsOptions): EmigrateStorage {
@ -41,7 +51,7 @@ export default function storageFs({ filename }: StorageFsOptions): EmigrateStora
[migration]: { [migration]: {
status, status,
date: new Date().toISOString(), date: new Date().toISOString(),
error: error ? { name: error.name, message: error.message, stack: error.stack } : undefined, error: error ? serializeError(error) : undefined,
}, },
}; };