diff --git a/.changeset/proud-onions-notice.md b/.changeset/proud-onions-notice.md new file mode 100644 index 0000000..d0d30fc --- /dev/null +++ b/.changeset/proud-onions-notice.md @@ -0,0 +1,5 @@ +--- +"@getlang/get": patch +--- + +paint inputs diff --git a/packages/get/src/calls.ts b/packages/get/src/calls.ts index bdf96d8..a1dc0ed 100644 --- a/packages/get/src/calls.ts +++ b/packages/get/src/calls.ts @@ -68,7 +68,11 @@ export async function callModule( const [inputArgs, attrArgs] = partition(Object.entries(args.data), e => entry.inputs.has(e[0]), ) - const inputs = Object.fromEntries(inputArgs) + const inputs = materialize({ + data: Object.fromEntries(inputArgs), + typeInfo: args.typeInfo, + }) + let extracted = await hooks.call(module, inputs) if (typeof extracted === 'undefined') { extracted = await execute(entry, inputs) @@ -96,7 +100,10 @@ export async function callModule( return extracted } - const data = Object.fromEntries(attrArgs) - const raster = materialize({ data, typeInfo: args.typeInfo }) + const raster = materialize({ + data: Object.fromEntries(attrArgs), + typeInfo: args.typeInfo, + }) + return { ...raster, ...extracted } } diff --git a/packages/get/src/execute.ts b/packages/get/src/execute.ts index c8ecc97..85f2ffb 100644 --- a/packages/get/src/execute.ts +++ b/packages/get/src/execute.ts @@ -165,20 +165,19 @@ export async function execute( }, ModuleExpr(node) { - if (node.call) { - return callModule( - registry, - executeModule, - hooks, - node.module.value, - node.args, - scope.context?.typeInfo, - ) - } - return { - data: materialize(node.args), - typeInfo: node.typeInfo, - } + return node.call + ? callModule( + registry, + executeModule, + hooks, + node.module.value, + node.args, + scope.context?.typeInfo, + ) + : { + data: materialize(node.args), + typeInfo: node.typeInfo, + } }, ObjectEntryExpr(node) { diff --git a/test/modules.spec.ts b/test/modules.spec.ts index 37455a9..93baa7e 100644 --- a/test/modules.spec.ts +++ b/test/modules.spec.ts @@ -219,6 +219,23 @@ describe('modules', () => { }) }) + test('paint inputs', async () => { + const modules = { + Reverse: ` + inputs { list } + set result = | list.map(x => Number(x) * 10).reverse() | + extract { $result } + `, + Home: ` + set list = "
first
-second
- `), + +first
+second
+ `), }, )