From 0d20710fff4c2571825d7aa94c9f76cc4e161bdf Mon Sep 17 00:00:00 2001 From: Bashamega Date: Sat, 2 Aug 2025 14:41:08 +0300 Subject: [PATCH 1/4] Enhance handleMixin function to include 'extends' property in return value if present --- inputfiles/overridingTypes.jsonc | 3 --- inputfiles/patches/childnode.kdl | 1 + src/build/patches.ts | 8 ++++++-- 3 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 inputfiles/patches/childnode.kdl diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index 756c85010..881877489 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -19,9 +19,6 @@ } } }, - "ChildNode": { - "extends": "Node" - }, "ParentNode": { "extends": "Node" }, diff --git a/inputfiles/patches/childnode.kdl b/inputfiles/patches/childnode.kdl new file mode 100644 index 000000000..538520f3b --- /dev/null +++ b/inputfiles/patches/childnode.kdl @@ -0,0 +1 @@ +interface-mixin ChildNode extends="Node" diff --git a/src/build/patches.ts b/src/build/patches.ts index 50a105a95..4d3d1a014 100644 --- a/src/build/patches.ts +++ b/src/build/patches.ts @@ -92,11 +92,15 @@ function handleMixin(node: Node): DeepPartial { } } - return { + const result: any = { name, events: { event }, properties: { property }, - } as DeepPartial; + }; + if (node.properties.extends) { + result.extends = node.properties.extends; + } + return result as DeepPartial; } /** From b6522ae3ebdbb876b352caaa2d1268f2cc191f7e Mon Sep 17 00:00:00 2001 From: Bashamega Date: Sat, 2 Aug 2025 15:36:39 +0300 Subject: [PATCH 2/4] Refactor handleMixin function to improve type safety by explicitly defining return type and casting 'extends' property --- src/build/patches.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/build/patches.ts b/src/build/patches.ts index 4d3d1a014..de5cee7f4 100644 --- a/src/build/patches.ts +++ b/src/build/patches.ts @@ -92,15 +92,15 @@ function handleMixin(node: Node): DeepPartial { } } - const result: any = { + const result = { name, events: { event }, properties: { property }, - }; + } as DeepPartial; if (node.properties.extends) { - result.extends = node.properties.extends; + result.extends = node.properties.extends as string; } - return result as DeepPartial; + return result; } /** From c1dcccee40235253539de32be15b9297ea6c4b47 Mon Sep 17 00:00:00 2001 From: Bashamega Date: Sat, 2 Aug 2025 15:39:21 +0300 Subject: [PATCH 3/4] convert --- inputfiles/overridingTypes.jsonc | 3 --- inputfiles/patches/childnode.kdl | 4 +++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index 881877489..05ddf2334 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -19,9 +19,6 @@ } } }, - "ParentNode": { - "extends": "Node" - }, "Animatable": { "methods": { "method": { diff --git a/inputfiles/patches/childnode.kdl b/inputfiles/patches/childnode.kdl index 538520f3b..63bf8de68 100644 --- a/inputfiles/patches/childnode.kdl +++ b/inputfiles/patches/childnode.kdl @@ -1 +1,3 @@ -interface-mixin ChildNode extends="Node" +// ChildNode and ParentNode are actually defined as mixins, but because of their names they have historically been used as a sub-interface of Node. +interface-mixin ChildNode extends=Node +interface-mixin ParentNode extends=Node From 4de2cc15b16f5ee4887635d56c08c5dbcf979190 Mon Sep 17 00:00:00 2001 From: Adam Naji <110662505+Bashamega@users.noreply.github.com> Date: Sat, 2 Aug 2025 15:55:09 +0300 Subject: [PATCH 4/4] Rename childnode.kdl to child-parent-node.kdl --- inputfiles/patches/{childnode.kdl => child-parent-node.kdl} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename inputfiles/patches/{childnode.kdl => child-parent-node.kdl} (100%) diff --git a/inputfiles/patches/childnode.kdl b/inputfiles/patches/child-parent-node.kdl similarity index 100% rename from inputfiles/patches/childnode.kdl rename to inputfiles/patches/child-parent-node.kdl