From 0bdbc766f26764ccf24a47b00941dfb89897b4b0 Mon Sep 17 00:00:00 2001 From: Lance Herman Date: Sat, 10 May 2025 02:54:35 -0500 Subject: [PATCH 1/2] Enhance `invariant` function to log errors using `@onflow/util-logger` and add optional logger level parameter. Update package dependencies to include `@onflow/util-logger`. --- packages/util-invariant/package.json | 3 ++- packages/util-invariant/src/index.ts | 24 ++++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) 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..1900b9c50 100644 --- a/packages/util-invariant/src/index.ts +++ b/packages/util-invariant/src/index.ts @@ -1,12 +1,16 @@ +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, msg: string, + loggerLevel: number = logger.LEVELS.error, ...rest: any[] ): asserts fact { if (!fact) { @@ -15,7 +19,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 + } } } From aed11026f246152dc9dfecfb585a54ee6bf96765 Mon Sep 17 00:00:00 2001 From: Lance Herman Date: Mon, 26 May 2025 21:51:35 -0500 Subject: [PATCH 2/2] Update packages/util-invariant/src/index.ts Co-authored-by: Jordan Ribbink <17958158+jribbink@users.noreply.github.com> --- packages/util-invariant/src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/util-invariant/src/index.ts b/packages/util-invariant/src/index.ts index 1900b9c50..309fa6d80 100644 --- a/packages/util-invariant/src/index.ts +++ b/packages/util-invariant/src/index.ts @@ -10,7 +10,6 @@ import * as logger from "@onflow/util-logger" export function invariant( fact: boolean, msg: string, - loggerLevel: number = logger.LEVELS.error, ...rest: any[] ): asserts fact { if (!fact) {