Skip to content

Commit 4ad6eb6

Browse files
BiswaVirajSokratisVidros
authored andcommitted
feat(dashboard): add invalid dynamic path values for enhanced autocomplete validation
1 parent 6769233 commit 4ad6eb6

File tree

3 files changed

+11
-19
lines changed

3 files changed

+11
-19
lines changed

apps/dashboard/src/utils/constants.ts

+9
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,12 @@ export const DEFAULT_CONTROL_DIGEST_DIGEST_KEY = '';
3939

4040
export const DYNAMIC_PATH_ROOTS = ['subscriber.data.', 'payload.'] as const;
4141
export const DYNAMIC_STEP_NAME_ROOT_REGEX = /^steps\.(.+?)\.events\[\d+\]\.payload$/;
42+
43+
export const INVALID_DYNAMIC_PATH_VALUES = [
44+
'subscriber.data',
45+
'subscriber.data.',
46+
'payload',
47+
'payload.',
48+
/^steps\.[^.]+\.events\[\d+\]\.payload$/, // Invalidates "steps.x.events[n].payload"
49+
/^steps\.[^.]+\.events\[\d+\]\.payload\.$/, // Invalidates "steps.x.events[n].payload."
50+
] as const;

apps/dashboard/src/utils/liquid-autocomplete.ts

+1-10
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { FILTERS } from '@/components/variable/constants';
22
import { LiquidVariable } from '@/utils/parseStepVariables';
33
import { Completion, CompletionContext, CompletionResult } from '@codemirror/autocomplete';
44
import { EditorView } from '@uiw/react-codemirror';
5-
import { DYNAMIC_PATH_ROOTS, DYNAMIC_STEP_NAME_ROOT_REGEX } from './constants';
5+
import { DYNAMIC_PATH_ROOTS, DYNAMIC_STEP_NAME_ROOT_REGEX, INVALID_DYNAMIC_PATH_VALUES } from './constants';
66

77
interface CompletionOption {
88
label: string;
@@ -22,15 +22,6 @@ const VALID_DYNAMIC_PATH_SUGGESTIONS = [
2222
/^steps\.[^.]+\.events\[\d+\]\.payload\./,
2323
] as const;
2424

25-
const INVALID_DYNAMIC_PATH_VALUES = [
26-
'subscriber.data',
27-
'subscriber.data.',
28-
'payload',
29-
'payload.',
30-
/^steps\.[^.]+\.events\[\d+\]\.payload$/, // Invalidates "steps.x.events[n].payload"
31-
/^steps\.[^.]+\.events\[\d+\]\.payload\.$/, // Invalidates "steps.x.events[n].payload."
32-
] as const;
33-
3425
/**
3526
* Liquid variable autocomplete for the following patterns:
3627
*

apps/dashboard/src/utils/parseStepVariables.ts

+1-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { JSONSchemaDefinition } from '@novu/shared';
2+
import { INVALID_DYNAMIC_PATH_VALUES } from './constants';
23

34
export interface LiquidVariable {
45
type: 'variable';
@@ -16,15 +17,6 @@ export interface ParsedVariables {
1617
isAllowedVariable: IsAllowedVariable;
1718
}
1819

19-
const INVALID_DYNAMIC_PATH_VALUES = [
20-
'subscriber.data',
21-
'subscriber.data.',
22-
'payload',
23-
'payload.',
24-
/^steps\.[^.]+\.events\[\d+\]\.payload$/, // Invalidates "steps.x.events[n].payload"
25-
/^steps\.[^.]+\.events\[\d+\]\.payload\.$/, // Invalidates "steps.x.events[n].payload."
26-
] as const;
27-
2820
/**
2921
* Parse JSON Schema and extract variables for Liquid autocompletion.
3022
* @param schema - The JSON Schema to parse.

0 commit comments

Comments
 (0)