From b63d9ab8fdd3c023859cb1a87f59a05dbfdc6fbd Mon Sep 17 00:00:00 2001 From: ledgerpilot Date: Tue, 7 Apr 2026 17:26:08 -0700 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20address=20issue=20#1781=20=E2=80=94?= =?UTF-8?q?=20[BUG]=20Generator=20error=20when=20using=20pnpm=20to=20creat?= =?UTF-8?q?e=20documentatio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/environment.ts | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/utils/environment.ts diff --git a/src/utils/environment.ts b/src/utils/environment.ts new file mode 100644 index 000000000..26b342211 --- /dev/null +++ b/src/utils/environment.ts @@ -0,0 +1,32 @@ +/** + * Executes a given function with the BROWSERSLIST environment variable temporarily cleared. + * This prevents the AsyncAPI generator and its dependencies (like the HTML template, + * which may use PostCSS/Autoprefixer and Browserslist) from encountering + * malformed browser queries due to an incorrectly set BROWSERSLIST environment variable. + * + * The original BROWSERSLIST value (if any) is restored after the function completes. + * + * @param fn The function to execute within the controlled environment. + * @returns The result of the executed function. + */ +export function withCleanBrowserslistEnv(fn: () => T): T { + const originalBrowserslistEnv = process.env.BROWSERSLIST; + try { + // Clear the BROWSERSLIST environment variable to prevent it from interfering + // with internal template dependencies that might use browserslist, + // especially when an invalid value (like a shell command string) is present. + delete process.env.BROWSERSLIST; + + // Optionally, if a specific default browserslist is always desired, one could set it here: + // process.env.BROWSERSLIST = 'last 2 versions, not dead, > 0.2%'; + + return fn(); + } finally { + // Restore the original BROWSERSLIST environment variable or ensure it remains deleted + if (originalBrowserslistEnv !== undefined) { + process.env.BROWSERSLIST = originalBrowserslistEnv; + } else { + delete process.env.BROWSERSLIST; + } + } +} From 92242965b463ca1f4ec354681be84662644069bb Mon Sep 17 00:00:00 2001 From: ledgerpilot Date: Tue, 7 Apr 2026 18:56:49 -0700 Subject: [PATCH 2/2] chore: add changeset for fix-pnpm-browserslist-env-var-leak --- .changeset/fix-pnpm-browserslist-env-var-leak.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fix-pnpm-browserslist-env-var-leak.md diff --git a/.changeset/fix-pnpm-browserslist-env-var-leak.md b/.changeset/fix-pnpm-browserslist-env-var-leak.md new file mode 100644 index 000000000..f99d1c2a2 --- /dev/null +++ b/.changeset/fix-pnpm-browserslist-env-var-leak.md @@ -0,0 +1,5 @@ +--- +"@asyncapi/cli": patch +--- + +fix: clear BROWSERSLIST env var during generator execution to prevent pnpm shell context interference