« get me outta code hell

data, test: collate update description from composition inputs - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/things/composite.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-09-23 20:35:57 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-09-23 20:35:57 -0300
commitf3d98f5ea63db7f7b2155e7efb0812f025c5bcf3 (patch)
tree0c98d998b42da9f1f6f57a5fc49c93635bd8a1bc /src/data/things/composite.js
parent8bcae16b391762f6b533654ec06c3bf0c8770d35 (diff)
data, test: collate update description from composition inputs
Diffstat (limited to 'src/data/things/composite.js')
-rw-r--r--src/data/things/composite.js11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/data/things/composite.js b/src/data/things/composite.js
index c0f0ab0b..34e550a1 100644
--- a/src/data/things/composite.js
+++ b/src/data/things/composite.js
@@ -837,6 +837,16 @@ export function compositeFrom(description) {
       .filter(dependency => isInputToken(dependency))
       .some(token => getInputTokenShape(token) === 'input.updateValue');
 
+  // Update descriptions passed as the value in an input.updateValue() token,
+  // as provided as inputs for this composition.
+  const inputUpdateDescriptions =
+    Object.values(description.inputs ?? {})
+      .map(token =>
+        (getInputTokenShape(token) === 'input.updateValue'
+          ? getInputTokenValue(token)
+          : null))
+      .filter(Boolean);
+
   const base = composition.at(-1);
   const steps = composition.slice();
 
@@ -1396,6 +1406,7 @@ export function compositeFrom(description) {
     constructedDescriptor.update =
       Object.assign(
         {...description.update ?? {}},
+        ...inputUpdateDescriptions,
         ...stepUpdateDescriptions.flat());
   }