From e8092865900608c4df7a6b7991b1c13cc1e4ca2d Mon Sep 17 00:00:00 2001 From: Sebastian Lorenz Date: Thu, 29 Aug 2024 04:10:14 +0200 Subject: [PATCH] Detect environment in Logger.pretty using process.stdout (#3510) Co-authored-by: Tim --- .changeset/wild-hounds-approve.md | 5 +++++ packages/effect/src/internal/logger.ts | 13 +++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) create mode 100644 .changeset/wild-hounds-approve.md diff --git a/.changeset/wild-hounds-approve.md b/.changeset/wild-hounds-approve.md new file mode 100644 index 0000000000..a6fa84f629 --- /dev/null +++ b/.changeset/wild-hounds-approve.md @@ -0,0 +1,5 @@ +--- +"effect": patch +--- + +Detect environment in Logger.pretty using process.stdout diff --git a/packages/effect/src/internal/logger.ts b/packages/effect/src/internal/logger.ts index 6571e1c603..5fc774c961 100644 --- a/packages/effect/src/internal/logger.ts +++ b/packages/effect/src/internal/logger.ts @@ -416,16 +416,13 @@ const defaultDateFormat = (date: Date): string => date.getSeconds().toString().padStart(2, "0") }.${date.getMilliseconds().toString().padStart(3, "0")}` -const processStdoutIsTTY = typeof process === "object" && +const hasProcessStdout = typeof process === "object" && process !== null && typeof process.stdout === "object" && - process.stdout !== null && + process.stdout !== null +const processStdoutIsTTY = hasProcessStdout && process.stdout.isTTY === true -const hasWindow = typeof window === "object" -const isWorker = typeof self === "object" && - self !== null && - typeof self.constructor === "function" && - self.constructor.name.includes("Worker") +const hasProcessStdoutOrDeno = hasProcessStdout || "Deno" in globalThis /** @internal */ export const prettyLogger = (options?: { @@ -435,7 +432,7 @@ export const prettyLogger = (options?: { readonly mode?: "browser" | "tty" | "auto" | undefined }) => { const mode_ = options?.mode ?? "auto" - const mode = mode_ === "auto" ? (hasWindow || isWorker ? "browser" : "tty") : mode_ + const mode = mode_ === "auto" ? (hasProcessStdoutOrDeno ? "tty" : "browser") : mode_ const isBrowser = mode === "browser" const showColors = typeof options?.colors === "boolean" ? options.colors : processStdoutIsTTY || isBrowser const formatDate = options?.formatDate ?? defaultDateFormat