From c0d9597a130c45e3faade8d0691719cc791faa20 Mon Sep 17 00:00:00 2001 From: Bashamega Date: Fri, 2 Jan 2026 09:51:20 +0200 Subject: [PATCH 1/6] Migrate OptionalPostfixToken and OptionalPrefixToken --- inputfiles/addedTypes.jsonc | 18 ------------------ inputfiles/patches/optional-tokens.kdl | 7 +++++++ src/build/patches.ts | 20 +++++++++++++++++++- 3 files changed, 26 insertions(+), 19 deletions(-) create mode 100644 inputfiles/patches/optional-tokens.kdl diff --git a/inputfiles/addedTypes.jsonc b/inputfiles/addedTypes.jsonc index 9260d0783..bfa25c385 100644 --- a/inputfiles/addedTypes.jsonc +++ b/inputfiles/addedTypes.jsonc @@ -511,24 +511,6 @@ "name": "EventListenerOrEventListenerObject", "overrideType": "EventListener | EventListenerObject" }, - { - "name": "OptionalPrefixToken", - "typeParameters": [ - { - "name": "T extends string" - } - ], - "overrideType": "`${T} ` | \"\"" - }, - { - "name": "OptionalPostfixToken", - "typeParameters": [ - { - "name": "T extends string" - } - ], - "overrideType": "` ${T}` | \"\"" - }, { "name": "AutoFillSection", // Note: this will also eagerly match any invalid string diff --git a/inputfiles/patches/optional-tokens.kdl b/inputfiles/patches/optional-tokens.kdl new file mode 100644 index 000000000..0d92f8d83 --- /dev/null +++ b/inputfiles/patches/optional-tokens.kdl @@ -0,0 +1,7 @@ +typedef OptionalPrefixToken overrideType=#"`${T} ` | """# { + typeParameters T extends=string +} + +typedef OptionalPostfixToken overrideType=#"` ${T}` | """# { + typeParameters T extends=string +} \ No newline at end of file diff --git a/src/build/patches.ts b/src/build/patches.ts index f2484e436..ec9fa5954 100644 --- a/src/build/patches.ts +++ b/src/build/patches.ts @@ -104,6 +104,7 @@ function handleTypeParameters(value: Value | Node) { { name: string(node.values[0]), ...optionalMember("default", "string", node.properties?.default), + ...optionalMember("extends", "string", node.properties?.extends), }, ], }; @@ -448,7 +449,23 @@ function handleMember(c: Node): DeepPartial { * @param node The typedef node to handle. */ function handleTypedef(node: Node): DeepPartial { - const typeNodes = node.children.filter((c) => c.name === "type"); + const typeNodes: Node[] = []; + let typeParameters = {}; + for (const child of node.children) { + switch (child.name) { + case "type": + typeNodes.push(child); + break; + case "typeParameters": { + typeParameters = handleTypeParameters(child); + break; + } + default: + throw new Error( + `Unexpected child "${child.name}" in typedef "${node.values[0]}"`, + ); + } + } return { name: string(node.values[0]), ...handleTyped(typeNodes), @@ -458,6 +475,7 @@ function handleTypedef(node: Node): DeepPartial { node.properties?.legacyNamespace, ), ...optionalMember("overrideType", "string", node.properties?.overrideType), + ...typeParameters, }; } From c1694270c8784fe2d5cce18b454ef590bd931b2e Mon Sep 17 00:00:00 2001 From: Bashamega Date: Fri, 2 Jan 2026 09:52:12 +0200 Subject: [PATCH 2/6] - --- inputfiles/patches/optional-tokens.kdl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inputfiles/patches/optional-tokens.kdl b/inputfiles/patches/optional-tokens.kdl index 0d92f8d83..1a27112ec 100644 --- a/inputfiles/patches/optional-tokens.kdl +++ b/inputfiles/patches/optional-tokens.kdl @@ -4,4 +4,4 @@ typedef OptionalPrefixToken overrideType=#"`${T} ` | """# { typedef OptionalPostfixToken overrideType=#"` ${T}` | """# { typeParameters T extends=string -} \ No newline at end of file +} From 020904679bf2305aa40d3ef9962432efb66ee793 Mon Sep 17 00:00:00 2001 From: Adam Naji <110662505+Bashamega@users.noreply.github.com> Date: Fri, 2 Jan 2026 10:31:36 +0200 Subject: [PATCH 3/6] Rename optional-tokens.kdl to autofill.kdl --- inputfiles/patches/{optional-tokens.kdl => autofill.kdl} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename inputfiles/patches/{optional-tokens.kdl => autofill.kdl} (100%) diff --git a/inputfiles/patches/optional-tokens.kdl b/inputfiles/patches/autofill.kdl similarity index 100% rename from inputfiles/patches/optional-tokens.kdl rename to inputfiles/patches/autofill.kdl From 5deedfe3d63fa14400f2eca01e1de5b88899c2cc Mon Sep 17 00:00:00 2001 From: Adam Naji <110662505+Bashamega@users.noreply.github.com> Date: Fri, 2 Jan 2026 11:07:34 +0200 Subject: [PATCH 4/6] Delete inputfiles/patches/autofill.kdl --- inputfiles/patches/autofill.kdl | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 inputfiles/patches/autofill.kdl diff --git a/inputfiles/patches/autofill.kdl b/inputfiles/patches/autofill.kdl deleted file mode 100644 index 1a27112ec..000000000 --- a/inputfiles/patches/autofill.kdl +++ /dev/null @@ -1,7 +0,0 @@ -typedef OptionalPrefixToken overrideType=#"`${T} ` | """# { - typeParameters T extends=string -} - -typedef OptionalPostfixToken overrideType=#"` ${T}` | """# { - typeParameters T extends=string -} From 1a2aec6d51062c005ed70cc9c7e47acc450602a5 Mon Sep 17 00:00:00 2001 From: Adam Naji <110662505+Bashamega@users.noreply.github.com> Date: Fri, 2 Jan 2026 11:08:00 +0200 Subject: [PATCH 5/6] Introduce OptionalPrefixToken and OptionalPostfixToken Add typedefs for OptionalPrefixToken and OptionalPostfixToken. --- inputfiles/patches/html-autocomplete.kdl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/inputfiles/patches/html-autocomplete.kdl b/inputfiles/patches/html-autocomplete.kdl index a73f49aac..130961560 100644 --- a/inputfiles/patches/html-autocomplete.kdl +++ b/inputfiles/patches/html-autocomplete.kdl @@ -72,3 +72,11 @@ enum AutoFillContactField { enum AutoFillCredentialField { webauthn } + +typedef OptionalPrefixToken overrideType=#"`${T} ` | """# { + typeParameters T extends=string +} + +typedef OptionalPostfixToken overrideType=#"` ${T}` | """# { + typeParameters T extends=string +} From f7bfec166bf144959fcf2ed595958a68f5a1b433 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 2 Jan 2026 20:08:18 +0100 Subject: [PATCH 6/6] fix indent --- inputfiles/patches/html-autocomplete.kdl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inputfiles/patches/html-autocomplete.kdl b/inputfiles/patches/html-autocomplete.kdl index 130961560..986541bcb 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 + typeParameters T extends=string } typedef OptionalPostfixToken overrideType=#"` ${T}` | """# { - typeParameters T extends=string + typeParameters T extends=string }