feat(storage-fs): serialize errors recursively if "cause" is an Error instance
This commit is contained in:
parent
d4d87036df
commit
e79dd4bca9
2 changed files with 16 additions and 1 deletions
5
.changeset/shiny-penguins-kneel.md
Normal file
5
.changeset/shiny-penguins-kneel.md
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
'@emigrate/storage-fs': minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Serialize errors recursively if they have a "cause" set to an Error instance
|
||||||
|
|
@ -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,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue