From 4f871ed0470def2a34955695d46dab966fd430bc Mon Sep 17 00:00:00 2001 From: alexander-akait Date: Fri, 11 Jul 2025 13:24:48 +0300 Subject: [PATCH] fix: handle NodeJS prefix in union types --- generate-types/index.js | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/generate-types/index.js b/generate-types/index.js index f211043..ac15a61 100644 --- a/generate-types/index.js +++ b/generate-types/index.js @@ -917,10 +917,42 @@ const printError = (diagnostic) => { } if (type.isUnion()) { + let types = type.types; + + const origin = + /** @type {ts.UnionType & { origin: ts.UnionType } | undefined} */ + (type).origin; + const nodeJSOriginTypes = + origin && + origin.types && + origin.types.filter((item) => { + if (!item.aliasSymbol) { + return false; + } + + const fullEscapedName = getFullEscapedName(item.aliasSymbol); + + if (fullEscapedName.includes("NodeJS.")) { + return true; + } + }); + + if (nodeJSOriginTypes && nodeJSOriginTypes.length > 0) { + types = types.filter((item) => { + if (!item.symbol) { + return true; + } + + return !isArrayBufferLike(getFullEscapedName(item.symbol)); + }); + + types.push(...nodeJSOriginTypes); + } + return { type: "union", symbolName: parseName(type), - types: type.types, + types, typeParameters: type.aliasTypeArguments && type.aliasTypeArguments.length > 0 ? type.aliasTypeArguments