From 819ebd058d1d60b3663d92b4a652728da7134a3b Mon Sep 17 00:00:00 2001
From: jeanpaul <jeanpaul@users.noreply.github.com>
Date: Wed, 22 Jan 2025 12:16:01 +0100
Subject: [PATCH] fix(editor): Add unicode code points to expression language
 for emoji (#12633)

---
 .../src/expressions/expressions.grammar          |  2 +-
 .../codemirror-lang/src/expressions/grammar.ts   |  2 +-
 .../codemirror-lang/test/expressions/cases.txt   | 16 ++++++++++++++++
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/packages/@n8n/codemirror-lang/src/expressions/expressions.grammar b/packages/@n8n/codemirror-lang/src/expressions/expressions.grammar
index 9217f2c2fbaeb..6e9efee7876a1 100644
--- a/packages/@n8n/codemirror-lang/src/expressions/expressions.grammar
+++ b/packages/@n8n/codemirror-lang/src/expressions/expressions.grammar
@@ -15,7 +15,7 @@ entity { Plaintext | Resolvable }
 
   resolvableChar { unicodeChar | "}" ![}] | "\\}}" }
 
-  unicodeChar { $[\u0000-\u007C] | $[\u007E-\u20CF] | $[\u{1F300}-\u{1F64F}] | $[\u4E00-\u9FFF] }
+  unicodeChar { $[\u0000-\u007C] | $[\u007E-\u20CF] | $[\u{1F300}-\u{1FAF8}] | $[\u4E00-\u9FFF] }
 }
 
 @detectDelim
diff --git a/packages/@n8n/codemirror-lang/src/expressions/grammar.ts b/packages/@n8n/codemirror-lang/src/expressions/grammar.ts
index bd081b4832d4c..fc3a2c9e31620 100644
--- a/packages/@n8n/codemirror-lang/src/expressions/grammar.ts
+++ b/packages/@n8n/codemirror-lang/src/expressions/grammar.ts
@@ -10,7 +10,7 @@ export const parser = LRParser.deserialize({
 	skippedNodes: [0],
 	repeatNodeCount: 1,
 	tokenData:
-		"&U~RTO#ob#o#p!h#p;'Sb;'S;=`!]<%lOb~gTQ~O#ob#o#pv#p;'Sb;'S;=`!]<%lOb~yUO#ob#p;'Sb;'S;=`!]<%l~b~Ob~~!c~!`P;=`<%lb~!hOQ~~!kVO#ob#o#p#Q#p;'Sb;'S;=`!]<%l~b~Ob~~!c~#TWO#O#Q#O#P#m#P#q#Q#q#r%Z#r$Ml#Q*5S41d#Q;(b;(c%x;(c;(d&O~#pWO#O#Q#O#P#m#P#q#Q#q#r$Y#r$Ml#Q*5S41d#Q;(b;(c%x;(c;(d&O~$]TO#q#Q#q#r$l#r;'S#Q;'S;=`%r<%lO#Q~$qWR~O#O#Q#O#P#m#P#q#Q#q#r%Z#r$Ml#Q*5S41d#Q;(b;(c%x;(c;(d&O~%^TO#q#Q#q#r%m#r;'S#Q;'S;=`%r<%lO#Q~%rOR~~%uP;=`<%l#Q~%{P;NQ<%l#Q~&RP;=`;JY#Q",
+		"&_~RTO#ob#o#p!h#p;'Sb;'S;=`!]<%lOb~gTQ~O#ob#o#pv#p;'Sb;'S;=`!]<%lOb~yUO#ob#p;'Sb;'S;=`!]<%l~b~Ob~~!c~!`P;=`<%lb~!hOQ~~!kVO#ob#o#p#Q#p;'Sb;'S;=`!]<%l~b~Ob~~!c~#TXO#O#Q#O#P#p#P#q#Q#q#r%d#r$Ml#Q*5S41d#Q;(b;(c&R;(c;(d%{;(d;(e&X~#sXO#O#Q#O#P#p#P#q#Q#q#r$`#r$Ml#Q*5S41d#Q;(b;(c&R;(c;(d%{;(d;(e&X~$cTO#q#Q#q#r$r#r;'S#Q;'S;=`%{<%lO#Q~$wXR~O#O#Q#O#P#p#P#q#Q#q#r%d#r$Ml#Q*5S41d#Q;(b;(c&R;(c;(d%{;(d;(e&X~%gTO#q#Q#q#r%v#r;'S#Q;'S;=`%{<%lO#Q~%{OR~~&OP;=`<%l#Q~&UP;NQ<%l#Q~&[P;=`;My#Q",
 	tokenizers: [0],
 	topRules: { Program: [0, 1] },
 	tokenPrec: 0,
diff --git a/packages/@n8n/codemirror-lang/test/expressions/cases.txt b/packages/@n8n/codemirror-lang/test/expressions/cases.txt
index 36f41ddccd60d..37db1e0bc0087 100644
--- a/packages/@n8n/codemirror-lang/test/expressions/cases.txt
+++ b/packages/@n8n/codemirror-lang/test/expressions/cases.txt
@@ -277,3 +277,19 @@ Program(Resolvable)
 ==>
 
 Program(Resolvable)
+
+# Resolvable with new emoji range
+
+{{ '🟢' }}
+
+==>
+
+Program(Resolvable)
+
+# Resolvable with new emoji range end of range
+
+{{ '🫸' }}
+
+==>
+
+Program(Resolvable)