diff --git a/packages/util-invariant/package.json b/packages/util-invariant/package.json index a4d02b79c..da9d420e0 100644 --- a/packages/util-invariant/package.json +++ b/packages/util-invariant/package.json @@ -36,6 +36,7 @@ "start": "fcl-bundle --watch" }, "dependencies": { - "@babel/runtime": "^7.25.7" + "@babel/runtime": "^7.25.7", + "@onflow/util-logger": "^1.3.3" } } diff --git a/packages/util-invariant/src/index.ts b/packages/util-invariant/src/index.ts index 414748b99..309fa6d80 100644 --- a/packages/util-invariant/src/index.ts +++ b/packages/util-invariant/src/index.ts @@ -1,8 +1,11 @@ +import * as logger from "@onflow/util-logger" + /** - * Asserts fact is true, otherwise throw an error with invariant message - * @param fact - * @param msg - * @param rest + * Asserts fact is true, otherwise logs error and optionally throws + * @param fact - The condition to assert + * @param msg - The message to log if assertion fails + * @param loggerLevel - Optional logger level (defaults to error which will throw) + * @param rest - Additional arguments to log */ export function invariant( fact: boolean, @@ -15,7 +18,15 @@ export function invariant( ?.split("\n") ?.filter(d => !/at invariant/.test(d)) ?.join("\n") - console.error("\n\n---\n\n", error, "\n\n", ...rest, "\n\n---\n\n") - throw error + + logger.log({ + title: "Invariant Violation", + message: `${error.message}\n${rest.length ? "\nDetails:" + JSON.stringify(rest, null, 2) : ""}`, + level: loggerLevel + }) + + if (loggerLevel === logger.LEVELS.error) { + throw error + } } }