From a00467c9fa57d740de9eccfcd136267bc9e9559d Mon Sep 17 00:00:00 2001 From: Michael Kret <88898367+michael-radency@users.noreply.github.com> Date: Fri, 10 May 2024 09:51:26 +0300 Subject: [PATCH] feat(core): Node version available in expression (#9350) --- .../CodeNodeEditor/completions/base.completions.ts | 4 ++++ packages/editor-ui/src/constants.ts | 1 + .../src/plugins/codemirror/completions/constants.ts | 5 +++++ packages/editor-ui/src/plugins/i18n/index.ts | 1 + packages/editor-ui/src/plugins/i18n/locales/en.json | 1 + packages/workflow/src/WorkflowDataProxy.ts | 2 ++ 6 files changed, 14 insertions(+) diff --git a/packages/editor-ui/src/components/CodeNodeEditor/completions/base.completions.ts b/packages/editor-ui/src/components/CodeNodeEditor/completions/base.completions.ts index f03470915..ed8687616 100644 --- a/packages/editor-ui/src/components/CodeNodeEditor/completions/base.completions.ts +++ b/packages/editor-ui/src/components/CodeNodeEditor/completions/base.completions.ts @@ -92,6 +92,10 @@ export const baseCompletions = defineComponent({ label: `${prefix}runIndex`, info: this.$locale.baseText('codeNodeEditor.completer.$runIndex'), }, + { + label: `${prefix}nodeVersion`, + info: this.$locale.baseText('codeNodeEditor.completer.$nodeVersion'), + }, ]; const options: Completion[] = TOP_LEVEL_COMPLETIONS_IN_BOTH_MODES.map(addVarType); diff --git a/packages/editor-ui/src/constants.ts b/packages/editor-ui/src/constants.ts index aedd7743a..0dc74a40a 100644 --- a/packages/editor-ui/src/constants.ts +++ b/packages/editor-ui/src/constants.ts @@ -518,6 +518,7 @@ export const MAPPING_PARAMS = [ '$today', '$vars', '$workflow', + '$nodeVersion', ]; export const DEFAULT_STICKY_HEIGHT = 160; diff --git a/packages/editor-ui/src/plugins/codemirror/completions/constants.ts b/packages/editor-ui/src/plugins/codemirror/completions/constants.ts index cb8b3aeb3..b55fba66e 100644 --- a/packages/editor-ui/src/plugins/codemirror/completions/constants.ts +++ b/packages/editor-ui/src/plugins/codemirror/completions/constants.ts @@ -133,6 +133,11 @@ export const ROOT_DOLLAR_COMPLETIONS: Completion[] = [ section: METHODS_SECTION, info: i18n.rootVars.$min, }, + { + label: '$nodeVersion', + section: METADATA_SECTION, + info: i18n.rootVars.$nodeVersion, + }, ]; export const STRING_RECOMMENDED_OPTIONS = [ diff --git a/packages/editor-ui/src/plugins/i18n/index.ts b/packages/editor-ui/src/plugins/i18n/index.ts index 1f2fe1395..c8c0bab31 100644 --- a/packages/editor-ui/src/plugins/i18n/index.ts +++ b/packages/editor-ui/src/plugins/i18n/index.ts @@ -379,6 +379,7 @@ export class I18nClass { $request: this.baseText('codeNodeEditor.completer.$request'), $response: this.baseText('codeNodeEditor.completer.$response'), $pageCount: this.baseText('codeNodeEditor.completer.$pageCount'), + $nodeVersion: this.baseText('codeNodeEditor.completer.$nodeVersion'), } as const satisfies Record; proxyVars: Record = { diff --git a/packages/editor-ui/src/plugins/i18n/locales/en.json b/packages/editor-ui/src/plugins/i18n/locales/en.json index 548db56c7..82c489b3d 100644 --- a/packages/editor-ui/src/plugins/i18n/locales/en.json +++ b/packages/editor-ui/src/plugins/i18n/locales/en.json @@ -217,6 +217,7 @@ "codeNodeEditor.completer.$prevNode.runIndex": "The run of the node providing input data to the current one", "codeNodeEditor.completer.$runIndex": "The index of the current run of this node", "codeNodeEditor.completer.$today": "A timestamp representing the current day (at midnight, as a Luxon object)", + "codeNodeEditor.completer.$nodeVersion": "The type version of the current node", "codeNodeEditor.completer.$vars": "The variables defined in your instance", "codeNodeEditor.completer.$vars.varName": "Variable set on this n8n instance. All variables evaluate to strings.", "codeNodeEditor.completer.$secrets": "The external secrets connected to your instance", diff --git a/packages/workflow/src/WorkflowDataProxy.ts b/packages/workflow/src/WorkflowDataProxy.ts index e8a109178..4f29e6467 100644 --- a/packages/workflow/src/WorkflowDataProxy.ts +++ b/packages/workflow/src/WorkflowDataProxy.ts @@ -995,6 +995,7 @@ export class WorkflowDataProxy { // Before resolving the pairedItem make sure that the requested node comes in the // graph before the current one const activeNode = that.workflow.getNode(that.activeNodeName); + let contextNode = that.contextNodeName; if (activeNode) { const parentMainInputNode = that.workflow.getParentMainInputNode(activeNode); @@ -1281,6 +1282,7 @@ export class WorkflowDataProxy { $thisItem: that.connectionInputData[that.itemIndex], $thisItemIndex: this.itemIndex, $thisRunIndex: this.runIndex, + $nodeVersion: that.workflow.getNode(that.activeNodeName)?.typeVersion, }; return new Proxy(base, {