fix(editor): Support line breaks in resource mapper field names (#18982)

This commit is contained in:
Elias Meire
2025-08-29 17:56:18 +02:00
committed by GitHub
parent 2882547a69
commit 5ea4be474e
2 changed files with 30 additions and 2 deletions

View File

@@ -1,5 +1,9 @@
import type { ResourceMapperField } from 'n8n-workflow'; import type { ResourceMapperField } from 'n8n-workflow';
import { isCommunityPackageName, isResourceMapperFieldListStale } from './nodeTypesUtils'; import {
isCommunityPackageName,
isResourceMapperFieldListStale,
parseResourceMapperFieldName,
} from './nodeTypesUtils';
describe('isResourceMapperFieldListStale', () => { describe('isResourceMapperFieldListStale', () => {
const baseField: ResourceMapperField = { const baseField: ResourceMapperField = {
@@ -127,3 +131,27 @@ describe('isCommunityPackageName', () => {
expect(isCommunityPackageName('@test-scope/n8n-nodes-test')).toBe(true); expect(isCommunityPackageName('@test-scope/n8n-nodes-test')).toBe(true);
}); });
}); });
describe('parseResourceMapperFieldName', () => {
test.each([
{ input: 'value["fieldName"]', expected: 'fieldName', desc: 'basic field name' },
{
input: 'value["field with spaces"]',
expected: 'field with spaces',
desc: 'field with spaces',
},
{
input: 'value["field\nwith\nactual\nnewlines"]',
expected: 'field\nwith\nactual\nnewlines',
desc: 'field with newlines',
},
{
input: 'value["field\\"with\\"quotes"]',
expected: 'field\\"with\\"quotes',
desc: 'field with escaped quotes',
},
{ input: 'fieldName', expected: 'fieldName', desc: 'no value wrapper' },
])('should parse $desc', ({ input, expected }) => {
expect(parseResourceMapperFieldName(input)).toBe(expected);
});
});

View File

@@ -32,7 +32,7 @@ import {
const CRED_KEYWORDS_TO_FILTER = ['API', 'OAuth1', 'OAuth2']; const CRED_KEYWORDS_TO_FILTER = ['API', 'OAuth1', 'OAuth2'];
const NODE_KEYWORDS_TO_FILTER = ['Trigger']; const NODE_KEYWORDS_TO_FILTER = ['Trigger'];
const COMMUNITY_PACKAGE_NAME_REGEX = /^(?!@n8n\/)(@[\w.-]+\/)?n8n-nodes-(?!base\b)\b\w+/g; const COMMUNITY_PACKAGE_NAME_REGEX = /^(?!@n8n\/)(@[\w.-]+\/)?n8n-nodes-(?!base\b)\b\w+/g;
const RESOURCE_MAPPER_FIELD_NAME_REGEX = /value\[\"(.+)\"\]/; const RESOURCE_MAPPER_FIELD_NAME_REGEX = /value\["(.+?)"\]/s;
export function getAppNameFromCredType(name: string) { export function getAppNameFromCredType(name: string) {
return name return name