diff --git a/inputfiles/patches/html-autocomplete.kdl b/inputfiles/patches/html-autocomplete.kdl index 986541bcb..f6d634849 100644 --- a/inputfiles/patches/html-autocomplete.kdl +++ b/inputfiles/patches/html-autocomplete.kdl @@ -74,9 +74,9 @@ enum AutoFillCredentialField { } typedef OptionalPrefixToken overrideType=#"`${T} ` | """# { - typeParameters T extends=string + typeParameter T extends=string } typedef OptionalPostfixToken overrideType=#"` ${T}` | """# { - typeParameters T extends=string + typeParameter T extends=string } diff --git a/inputfiles/patches/html.kdl b/inputfiles/patches/html.kdl index 92015674c..db73a8504 100644 --- a/inputfiles/patches/html.kdl +++ b/inputfiles/patches/html.kdl @@ -60,7 +60,7 @@ interface HTMLProgressElement { } } -interface-mixin MessageEventTarget overrideThis=T typeParameters=T +interface-mixin MessageEventTarget overrideThis=T typeParameter=T interface-mixin WindowEventHandlers { property onunload deprecated="The unload event is not reliable, consider visibilitychange or pagehide events." diff --git a/inputfiles/patches/indexeddb.kdl b/inputfiles/patches/indexeddb.kdl index 02a0fba2d..c8ce251fd 100644 --- a/inputfiles/patches/indexeddb.kdl +++ b/inputfiles/patches/indexeddb.kdl @@ -1,5 +1,5 @@ interface IDBRequest { - typeParameters T default=any + typeParameter T default=any property source { type nullable=#false } diff --git a/inputfiles/patches/readable-stream.kdl b/inputfiles/patches/readable-stream.kdl index e56076039..f475278c7 100644 --- a/inputfiles/patches/readable-stream.kdl +++ b/inputfiles/patches/readable-stream.kdl @@ -1,15 +1,15 @@ -dictionary ReadableStreamReadDoneResult typeParameters=T { +dictionary ReadableStreamReadDoneResult typeParameter=T { member done required=#true overrideType="true" member value required=#true overrideType="T | undefined" } -dictionary ReadableStreamReadValueResult typeParameters=T { +dictionary ReadableStreamReadValueResult typeParameter=T { member done required=#true overrideType="false" member value required=#true overrideType="T" } dictionary UnderlyingSource { - typeParameters R default=any + typeParameter R default=any member start overrideType="UnderlyingSourceStartCallback" member pull overrideType="UnderlyingSourcePullCallback" } diff --git a/inputfiles/patches/streams.kdl b/inputfiles/patches/streams.kdl index 3fd8228e7..b1cc50f1c 100644 --- a/inputfiles/patches/streams.kdl +++ b/inputfiles/patches/streams.kdl @@ -1,7 +1,7 @@ // https://streams.spec.whatwg.org/#dictdef-underlyingsource dictionary UnderlyingDefaultSource { - typeParameters R default=any + typeParameter R default=any member type type=undefined member start overrideType="(controller: ReadableStreamDefaultController) => any" member pull overrideType="(controller: ReadableStreamDefaultController) => void | PromiseLike" diff --git a/src/build/patches.ts b/src/build/patches.ts index ec9fa5954..cf112248d 100644 --- a/src/build/patches.ts +++ b/src/build/patches.ts @@ -100,13 +100,9 @@ function handleTypeParameters(value: Value | Node) { } const node = value as Node; return { - typeParameters: [ - { - name: string(node.values[0]), - ...optionalMember("default", "string", node.properties?.default), - ...optionalMember("extends", "string", node.properties?.extends), - }, - ], + name: string(node.values[0]), + ...optionalMember("default", "string", node.properties?.default), + ...optionalMember("extends", "string", node.properties?.extends), }; } @@ -207,7 +203,7 @@ function handleMixinAndInterfaces( const property: Record> = {}; let method: Record> = {}; let constructor: DeepPartial | undefined; - let typeParameters = {}; + const typeParameters = []; for (const child of node.children) { switch (child.name) { @@ -232,8 +228,8 @@ function handleMixinAndInterfaces( constructor = merge(constructor, c); break; } - case "typeParameters": { - typeParameters = handleTypeParameters(child); + case "typeParameter": { + typeParameters.push(handleTypeParameters(child)); break; } default: @@ -242,7 +238,7 @@ function handleMixinAndInterfaces( } const interfaceObject = type === "interface" && { - ...typeParameters, + ...optionalNestedMember("typeParameters", typeParameters, typeParameters), ...(constructor ? { constructor } : {}), ...optionalMember("exposed", "string", node.properties?.exposed), ...optionalMember("deprecated", "string", node.properties?.deprecated), @@ -270,7 +266,7 @@ function handleMixinAndInterfaces( "string", node.properties?.replaceReference, ), - ...handleTypeParameters(node.properties?.typeParameters), + ...handleTypeParameters(node.properties?.typeParameter), ...interfaceObject, } as DeepPartial; } @@ -396,7 +392,7 @@ function handleMethodAndConstructor( function handleDictionary(child: Node): DeepPartial { const name = string(child.values[0]); const member: Record> = {}; - let typeParameters = {}; + const typeParameters = []; for (const c of child.children) { switch (c.name) { @@ -405,8 +401,8 @@ function handleDictionary(child: Node): DeepPartial { member[memberName] = handleMember(c); break; } - case "typeParameters": { - typeParameters = handleTypeParameters(c); + case "typeParameter": { + typeParameters.push(handleTypeParameters(c)); break; } default: @@ -417,8 +413,8 @@ function handleDictionary(child: Node): DeepPartial { return { name, members: { member }, - ...typeParameters, - ...handleTypeParameters(child.properties?.typeParameters), + ...optionalNestedMember("typeParameters", typeParameters, typeParameters), + ...handleTypeParameters(child.properties?.typeParameter), ...optionalMember( "legacyNamespace", "string", @@ -450,14 +446,14 @@ function handleMember(c: Node): DeepPartial { */ function handleTypedef(node: Node): DeepPartial { const typeNodes: Node[] = []; - let typeParameters = {}; + const typeParameters = []; for (const child of node.children) { switch (child.name) { case "type": typeNodes.push(child); break; - case "typeParameters": { - typeParameters = handleTypeParameters(child); + case "typeParameter": { + typeParameters.push(handleTypeParameters(child)); break; } default: @@ -475,7 +471,7 @@ function handleTypedef(node: Node): DeepPartial { node.properties?.legacyNamespace, ), ...optionalMember("overrideType", "string", node.properties?.overrideType), - ...typeParameters, + ...optionalNestedMember("typeParameters", typeParameters, typeParameters), }; }