diff --git a/src/components/sequencing/SequenceEditor.svelte b/src/components/sequencing/SequenceEditor.svelte index 065509d109..2965095f1d 100644 --- a/src/components/sequencing/SequenceEditor.svelte +++ b/src/components/sequencing/SequenceEditor.svelte @@ -265,10 +265,19 @@ const sequence = viewUpdate.state.doc.toString(); disableCopyAndExport = sequence === ''; const tree = syntaxTree(viewUpdate.state); - const output = await selectedOutputFormat?.toOutputFormat?.(tree, sequence, commandDictionary, sequenceName); + let output = await selectedOutputFormat?.toOutputFormat?.(tree, sequence, commandDictionary, sequenceName); if ($sequenceAdaptation?.modifyOutput !== undefined && output !== undefined) { - $sequenceAdaptation?.modifyOutput(output, parameterDictionaries, channelDictionary); + const modifiedOutput = $sequenceAdaptation.modifyOutput(output, parameterDictionaries, channelDictionary); + if (modifiedOutput === null) { + output = 'modifyOutput returned null. Verify your adaptation is correct'; + } else if (modifiedOutput === undefined) { + output = 'modifyOutput returned undefined. Verify your adaptation is correct'; + } else if (typeof modifiedOutput === 'object') { + output = JSON.stringify(modifiedOutput); + } else { + output = `${modifiedOutput}`; + } } editorOutputView.dispatch({ changes: { from: 0, insert: output, to: editorOutputView.state.doc.length } }); diff --git a/src/utilities/sequence-editor/extension-points.ts b/src/utilities/sequence-editor/extension-points.ts index 225bca51a8..8d238f41d8 100644 --- a/src/utilities/sequence-editor/extension-points.ts +++ b/src/utilities/sequence-editor/extension-points.ts @@ -54,15 +54,22 @@ export async function toInputFormat( channelDictionary: ChannelDictionary | null, ) { const modifyOutputParse = get(sequenceAdaptation).modifyOutputParse; - let modifiedOutput = null; - if (modifyOutputParse !== undefined) { - modifiedOutput = await modifyOutputParse(output, parameterDictionaries, channelDictionary); - } - - const input = await get(inputFormat)?.toInputFormat?.(modifiedOutput ?? output); + let modifiedOutput = await modifyOutputParse(output, parameterDictionaries, channelDictionary); + if (modifiedOutput === null) { + modifiedOutput = 'modifyOutputParse returned null. Verify your adaptation is correct'; + } else if (modifiedOutput === undefined) { + modifiedOutput = 'modifyOutputParse returned undefined. Verify your adaptation is correct'; + } else if (typeof modifiedOutput === 'object') { + modifiedOutput = JSON.stringify(modifiedOutput); + } else { + modifiedOutput = `${modifiedOutput}`; + } - return input; + return await get(inputFormat)?.toInputFormat?.(modifiedOutput); + } else { + return await get(inputFormat)?.toInputFormat?.(output); + } } export function inputLinter(