From fb3d2bc9e6cf989f6b68325869a78441a34f00c5 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Tue, 15 Mar 2022 18:53:59 +0100 Subject: [PATCH] =?UTF-8?q?fix(logic):=20=F0=9F=90=9B=20Parse=20variables?= =?UTF-8?q?=20for=20code=20step?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/builder/components/shared/CodeEditor.tsx | 10 ++++++++-- package.json | 2 +- packages/bot-engine/src/services/logic.ts | 9 ++++++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/apps/builder/components/shared/CodeEditor.tsx b/apps/builder/components/shared/CodeEditor.tsx index 2a5100e8a..0cb882930 100644 --- a/apps/builder/components/shared/CodeEditor.tsx +++ b/apps/builder/components/shared/CodeEditor.tsx @@ -1,11 +1,14 @@ import { Box, BoxProps } from '@chakra-ui/react' import { EditorState, EditorView, basicSetup } from '@codemirror/basic-setup' -import { json } from '@codemirror/lang-json' +import { json, jsonParseLinter } from '@codemirror/lang-json' import { css } from '@codemirror/lang-css' import { javascript } from '@codemirror/lang-javascript' import { html } from '@codemirror/lang-html' import { useEffect, useRef, useState } from 'react' import { useDebouncedCallback } from 'use-debounce' +import { linter } from '@codemirror/lint' + +const linterExtension = linter(jsonParseLinter()) type Props = { value: string @@ -71,7 +74,10 @@ export const CodeEditor = ({ basicSetup, EditorState.readOnly.of(isReadOnly), ] - if (lang === 'json') extensions.push(json()) + if (lang === 'json') { + extensions.push(json()) + extensions.push(linterExtension) + } if (lang === 'css') extensions.push(css()) if (lang === 'js') extensions.push(javascript()) if (lang === 'html') extensions.push(html()) diff --git a/package.json b/package.json index a05ae60ac..bbe501b23 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "docker:nuke": "docker compose -f docker-compose.dev.yml down --volumes --remove-orphans", "dev:prepare": "turbo run build --scope=bot-engine --no-deps --include-dependencies", "dev": "yarn docker:up && yarn dev:prepare && turbo run dx --parallel", - "dev:mocking": "yarn docker:up && NEXT_PUBLIC_E2E_TEST=enabled turbo run dev --parallel", + "dev:mocking": "yarn docker:up && NEXT_PUBLIC_E2E_TEST=enabled turbo run dx --parallel", "build": "yarn docker:up && turbo run build", "test:builder": "cd apps/builder && yarn test", "lint": "turbo run lint", diff --git a/packages/bot-engine/src/services/logic.ts b/packages/bot-engine/src/services/logic.ts index a0659abbf..7e583a19e 100644 --- a/packages/bot-engine/src/services/logic.ts +++ b/packages/bot-engine/src/services/logic.ts @@ -48,7 +48,7 @@ export const executeLogic = async ( case LogicStepType.REDIRECT: return { nextEdgeId: executeRedirect(step, context) } case LogicStepType.CODE: - return { nextEdgeId: executeCode(step) } + return { nextEdgeId: executeCode(step, context) } case LogicStepType.TYPEBOT_LINK: return await executeTypebotLink(step, context) } @@ -121,9 +121,12 @@ const executeRedirect = ( return step.outgoingEdgeId } -const executeCode = (step: CodeStep) => { +const executeCode = ( + step: CodeStep, + { typebot: { variables } }: LogicContext +) => { if (!step.options.content) return - Function(step.options.content)() + Function(parseVariables(variables)(step.options.content))() return step.outgoingEdgeId }