Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions inputfiles/patches/html-autocomplete.kdl
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
2 changes: 1 addition & 1 deletion inputfiles/patches/html.kdl
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down
2 changes: 1 addition & 1 deletion inputfiles/patches/indexeddb.kdl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
interface IDBRequest {
typeParameters T default=any
typeParameter T default=any
property source {
type nullable=#false
}
Expand Down
6 changes: 3 additions & 3 deletions inputfiles/patches/readable-stream.kdl
Original file line number Diff line number Diff line change
@@ -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<R>"
member pull overrideType="UnderlyingSourcePullCallback<R>"
}
2 changes: 1 addition & 1 deletion inputfiles/patches/streams.kdl
Original file line number Diff line number Diff line change
@@ -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<R>) => any"
member pull overrideType="(controller: ReadableStreamDefaultController<R>) => void | PromiseLike<void>"
Expand Down
38 changes: 17 additions & 21 deletions src/build/patches.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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),
};
}

Expand Down Expand Up @@ -207,7 +203,7 @@ function handleMixinAndInterfaces(
const property: Record<string, DeepPartial<Property>> = {};
let method: Record<string, DeepPartial<OverridableMethod>> = {};
let constructor: DeepPartial<OverridableMethod> | undefined;
let typeParameters = {};
const typeParameters = [];

for (const child of node.children) {
switch (child.name) {
Expand All @@ -232,8 +228,8 @@ function handleMixinAndInterfaces(
constructor = merge(constructor, c);
break;
}
case "typeParameters": {
typeParameters = handleTypeParameters(child);
case "typeParameter": {
typeParameters.push(handleTypeParameters(child));
break;
}
default:
Expand All @@ -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),
Expand Down Expand Up @@ -270,7 +266,7 @@ function handleMixinAndInterfaces(
"string",
node.properties?.replaceReference,
),
...handleTypeParameters(node.properties?.typeParameters),
...handleTypeParameters(node.properties?.typeParameter),
...interfaceObject,
} as DeepPartial<Interface>;
}
Expand Down Expand Up @@ -396,7 +392,7 @@ function handleMethodAndConstructor(
function handleDictionary(child: Node): DeepPartial<Dictionary> {
const name = string(child.values[0]);
const member: Record<string, DeepPartial<Member>> = {};
let typeParameters = {};
const typeParameters = [];

for (const c of child.children) {
switch (c.name) {
Expand All @@ -405,8 +401,8 @@ function handleDictionary(child: Node): DeepPartial<Dictionary> {
member[memberName] = handleMember(c);
break;
}
case "typeParameters": {
typeParameters = handleTypeParameters(c);
case "typeParameter": {
typeParameters.push(handleTypeParameters(c));
break;
}
default:
Expand All @@ -417,8 +413,8 @@ function handleDictionary(child: Node): DeepPartial<Dictionary> {
return {
name,
members: { member },
...typeParameters,
...handleTypeParameters(child.properties?.typeParameters),
...optionalNestedMember("typeParameters", typeParameters, typeParameters),
...handleTypeParameters(child.properties?.typeParameter),
...optionalMember(
"legacyNamespace",
"string",
Expand Down Expand Up @@ -450,14 +446,14 @@ function handleMember(c: Node): DeepPartial<Member> {
*/
function handleTypedef(node: Node): DeepPartial<TypeDef> {
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:
Expand All @@ -475,7 +471,7 @@ function handleTypedef(node: Node): DeepPartial<TypeDef> {
node.properties?.legacyNamespace,
),
...optionalMember("overrideType", "string", node.properties?.overrideType),
...typeParameters,
...optionalNestedMember("typeParameters", typeParameters, typeParameters),
};
}

Expand Down