From fe1109a1aa9141934544154c211a7b94e65aee85 Mon Sep 17 00:00:00 2001 From: Bashamega Date: Fri, 7 Nov 2025 09:10:20 +0200 Subject: [PATCH 1/2] Support more options for typeParameters --- inputfiles/overridingTypes.jsonc | 18 ------------------ inputfiles/patches/underlying.kdl | 5 +++++ src/build/patches.ts | 21 +++++++++++++++++++-- 3 files changed, 24 insertions(+), 20 deletions(-) create mode 100644 inputfiles/patches/underlying.kdl diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index 725751894..12482efc1 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -3663,24 +3663,6 @@ } } }, - "UnderlyingSource": { - "typeParameters": [ - { - "name": "R", - "default": "any" - } - ], - "members": { - "member": { - "start": { - "overrideType": "UnderlyingSourceStartCallback" - }, - "pull": { - "overrideType": "UnderlyingSourcePullCallback" - } - } - } - }, "UIEventInit": { "members": { "member": { diff --git a/inputfiles/patches/underlying.kdl b/inputfiles/patches/underlying.kdl new file mode 100644 index 000000000..f7fb0a8ec --- /dev/null +++ b/inputfiles/patches/underlying.kdl @@ -0,0 +1,5 @@ +dictionary UnderlyingSource { + typeParameters R default = "any" + member start overrideType = "UnderlyingSourceStartCallback" + member pull overrideType = "UnderlyingSourcePullCallback" +} diff --git a/src/build/patches.ts b/src/build/patches.ts index 7c949ebce..719660e9d 100644 --- a/src/build/patches.ts +++ b/src/build/patches.ts @@ -63,14 +63,25 @@ function handleTyped(type: Node): Typed { }; } -function handleTypeParameters(value: Value) { +function handleTypeParameters(value: Value | Node) { if (!value) { return {}; } + if (typeof value === "string") { + return { + typeParameters: [ + { + name: string(value), + }, + ], + }; + } + const node = value as Node; return { typeParameters: [ { - name: string(value), + name: string(node.values[0]), + ...optionalMember("default", "string", node.properties?.default), }, ], }; @@ -318,6 +329,7 @@ function handleMethod(child: Node): DeepPartial { function handleDictionary(child: Node): DeepPartial { const name = string(child.values[0]); const member: Record> = {}; + let typeParameters = {}; for (const c of child.children) { switch (c.name) { @@ -326,6 +338,10 @@ function handleDictionary(child: Node): DeepPartial { member[memberName] = handleMember(c); break; } + case "typeParameters": { + typeParameters = handleTypeParameters(c); + break; + } default: throw new Error(`Unknown node name: ${c.name}`); } @@ -334,6 +350,7 @@ function handleDictionary(child: Node): DeepPartial { return { name, members: { member }, + ...typeParameters, ...handleTypeParameters(child.properties?.typeParameters), ...optionalMember( "legacyNamespace", From fcaa7f498c123efbccab0c40ba3a6aca9ab45959 Mon Sep 17 00:00:00 2001 From: Bashamega Date: Fri, 7 Nov 2025 09:39:09 +0200 Subject: [PATCH 2/2] - --- inputfiles/patches/readable-stream.kdl | 6 ++++++ inputfiles/patches/underlying.kdl | 5 ----- 2 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 inputfiles/patches/underlying.kdl diff --git a/inputfiles/patches/readable-stream.kdl b/inputfiles/patches/readable-stream.kdl index 7a8a6f6a0..a3fdbacfd 100644 --- a/inputfiles/patches/readable-stream.kdl +++ b/inputfiles/patches/readable-stream.kdl @@ -7,3 +7,9 @@ dictionary ReadableStreamReadValueResult typeParameters=T { member done required=#true overrideType="false" member value required=#true overrideType="T" } + +dictionary UnderlyingSource { + typeParameters R default = "any" + member start overrideType = "UnderlyingSourceStartCallback" + member pull overrideType = "UnderlyingSourcePullCallback" +} diff --git a/inputfiles/patches/underlying.kdl b/inputfiles/patches/underlying.kdl deleted file mode 100644 index f7fb0a8ec..000000000 --- a/inputfiles/patches/underlying.kdl +++ /dev/null @@ -1,5 +0,0 @@ -dictionary UnderlyingSource { - typeParameters R default = "any" - member start overrideType = "UnderlyingSourceStartCallback" - member pull overrideType = "UnderlyingSourcePullCallback" -}