@forwardslashns/taskit-validation-messages 1.10.16 → 1.10.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/validation/features/account-categories.validation-messages.d.ts +18 -14
- package/dist/validation/features/account-categories.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/account-categories.validation-messages.js +7 -2
- package/dist/validation/features/account-ids.validation-messages.d.ts +23 -18
- package/dist/validation/features/account-ids.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/account-ids.validation-messages.js +8 -2
- package/dist/validation/features/business-activities.validation-messages.d.ts +18 -14
- package/dist/validation/features/business-activities.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/business-activities.validation-messages.js +7 -2
- package/dist/validation/features/client-current-entity-statuses.validation-messages.d.ts +195 -158
- package/dist/validation/features/client-current-entity-statuses.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-current-entity-statuses.validation-messages.js +45 -7
- package/dist/validation/features/client-records-addresses.validation-messages.d.ts +71 -58
- package/dist/validation/features/client-records-addresses.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-records-addresses.validation-messages.js +16 -2
- package/dist/validation/features/client-records-banks.validation-messages.d.ts +20 -15
- package/dist/validation/features/client-records-banks.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-records-banks.validation-messages.js +8 -2
- package/dist/validation/features/client-records-commission-details.validation-messages.d.ts +21 -16
- package/dist/validation/features/client-records-commission-details.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-records-commission-details.validation-messages.js +8 -2
- package/dist/validation/features/client-records-contacts.validation-messages.d.ts +41 -33
- package/dist/validation/features/client-records-contacts.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-records-contacts.validation-messages.js +11 -2
- package/dist/validation/features/client-records-credit-cards.validation-messages.d.ts +24 -18
- package/dist/validation/features/client-records-credit-cards.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-records-credit-cards.validation-messages.js +9 -2
- package/dist/validation/features/client-records-entity-states-histories.validation-messages.d.ts +97 -80
- package/dist/validation/features/client-records-entity-states-histories.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-records-entity-states-histories.validation-messages.js +30 -12
- package/dist/validation/features/client-records-entity-types-histories.validation-messages.d.ts +96 -79
- package/dist/validation/features/client-records-entity-types-histories.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-records-entity-types-histories.validation-messages.js +30 -12
- package/dist/validation/features/client-records-filing-statuses-histories.validation-messages.d.ts +96 -79
- package/dist/validation/features/client-records-filing-statuses-histories.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-records-filing-statuses-histories.validation-messages.js +30 -12
- package/dist/validation/features/client-records-outside-providers.validation-messages.d.ts +10 -8
- package/dist/validation/features/client-records-outside-providers.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-records-outside-providers.validation-messages.js +6 -3
- package/dist/validation/features/client-relationships-common.validation-messages.d.ts +69 -55
- package/dist/validation/features/client-relationships-common.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-relationships-common.validation-messages.js +30 -15
- package/dist/validation/features/client-relationships-income-sources.validation-messages.d.ts +84 -68
- package/dist/validation/features/client-relationships-income-sources.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-relationships-income-sources.validation-messages.js +21 -4
- package/dist/validation/features/client-relationships-owners.validation-messages.d.ts +86 -69
- package/dist/validation/features/client-relationships-owners.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/client-relationships-owners.validation-messages.js +22 -4
- package/dist/validation/features/data-filters.validation-messages.d.ts +16 -12
- package/dist/validation/features/data-filters.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/data-filters.validation-messages.js +7 -2
- package/dist/validation/features/filing-categories.validation-messages.d.ts +18 -14
- package/dist/validation/features/filing-categories.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/filing-categories.validation-messages.js +7 -2
- package/dist/validation/features/income-accounts.validation-messages.d.ts +17 -13
- package/dist/validation/features/income-accounts.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/income-accounts.validation-messages.js +7 -2
- package/dist/validation/features/roles-and-permissions.validation-messages.d.ts +29 -23
- package/dist/validation/features/roles-and-permissions.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/roles-and-permissions.validation-messages.js +9 -2
- package/dist/validation/features/states.validation-messages.d.ts +55 -45
- package/dist/validation/features/states.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/states.validation-messages.js +13 -2
- package/dist/validation/features/template-assignments.validation-messages.d.ts +85 -68
- package/dist/validation/features/template-assignments.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/template-assignments.validation-messages.js +20 -2
- package/dist/validation/features/template-information.validation-messages.d.ts +218 -146
- package/dist/validation/features/template-information.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/template-information.validation-messages.js +75 -2
- package/dist/validation/features/template-recurrence-settings.validation-messages.d.ts +164 -132
- package/dist/validation/features/template-recurrence-settings.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/template-recurrence-settings.validation-messages.js +37 -4
- package/dist/validation/features/template-states.validation-messages.d.ts +49 -39
- package/dist/validation/features/template-states.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/template-states.validation-messages.js +13 -2
- package/dist/validation/features/user-preferences.validation-messages.d.ts +17 -13
- package/dist/validation/features/user-preferences.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/user-preferences.validation-messages.js +8 -3
- package/dist/validation/features/users.validation-messages.d.ts +65 -53
- package/dist/validation/features/users.validation-messages.d.ts.map +1 -1
- package/dist/validation/features/users.validation-messages.js +17 -4
- package/dist/validation/validation-message.formatter.d.ts +2 -0
- package/dist/validation/validation-message.formatter.d.ts.map +1 -1
- package/dist/validation/validation-message.formatter.js +1 -0
- package/dist/validation/validation-message.types.d.ts +30 -0
- package/dist/validation/validation-message.types.d.ts.map +1 -0
- package/dist/validation/validation-message.types.js +9 -0
- package/dist/validation/validation-messages.d.ts +1756 -1394
- package/dist/validation/validation-messages.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +14 -0
- package/src/validation/features/account-categories.validation-messages.ts +8 -2
- package/src/validation/features/account-ids.validation-messages.ts +9 -2
- package/src/validation/features/business-activities.validation-messages.ts +8 -2
- package/src/validation/features/client-current-entity-statuses.validation-messages.ts +46 -7
- package/src/validation/features/client-records-addresses.validation-messages.ts +17 -2
- package/src/validation/features/client-records-banks.validation-messages.ts +9 -2
- package/src/validation/features/client-records-commission-details.validation-messages.ts +9 -2
- package/src/validation/features/client-records-contacts.validation-messages.ts +12 -2
- package/src/validation/features/client-records-credit-cards.validation-messages.ts +10 -2
- package/src/validation/features/client-records-entity-states-histories.validation-messages.ts +31 -12
- package/src/validation/features/client-records-entity-types-histories.validation-messages.ts +31 -12
- package/src/validation/features/client-records-filing-statuses-histories.validation-messages.ts +31 -12
- package/src/validation/features/client-records-outside-providers.validation-messages.ts +7 -3
- package/src/validation/features/client-relationships-common.validation-messages.ts +31 -15
- package/src/validation/features/client-relationships-income-sources.validation-messages.ts +22 -4
- package/src/validation/features/client-relationships-owners.validation-messages.ts +23 -4
- package/src/validation/features/data-filters.validation-messages.ts +8 -2
- package/src/validation/features/filing-categories.validation-messages.ts +8 -2
- package/src/validation/features/income-accounts.validation-messages.ts +8 -2
- package/src/validation/features/roles-and-permissions.validation-messages.ts +10 -2
- package/src/validation/features/states.validation-messages.ts +14 -2
- package/src/validation/features/template-assignments.validation-messages.ts +21 -2
- package/src/validation/features/template-information.validation-messages.ts +83 -2
- package/src/validation/features/template-recurrence-settings.validation-messages.ts +38 -4
- package/src/validation/features/template-states.validation-messages.ts +14 -2
- package/src/validation/features/user-preferences.validation-messages.ts +9 -3
- package/src/validation/features/users.validation-messages.ts +18 -4
- package/src/validation/validation-message.formatter.ts +4 -6
- package/src/validation/validation-message.types.ts +36 -0
|
@@ -1,140 +1,174 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineValidationFeatureMessages, VALIDATION_SEVERITY } from '../validation-message.types';
|
|
2
|
+
|
|
3
|
+
export const TEMPLATE_RECURRENCE_SETTINGS = defineValidationFeatureMessages({
|
|
2
4
|
RECURRENCE_NOT_FOUND: {
|
|
5
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
3
6
|
message: 'Template recurrence setting not found',
|
|
4
7
|
affectedFields: [] as string[],
|
|
5
8
|
},
|
|
6
9
|
RECURRENCE_FREQUENCY_REQUIRED: {
|
|
10
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
7
11
|
message: 'Recurrence frequency is required',
|
|
8
12
|
affectedFields: ['recurrenceFrequency'],
|
|
9
13
|
},
|
|
10
14
|
RECURRENCE_FREQUENCY_NOT_FOUND: {
|
|
15
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
11
16
|
message: 'Recurrence frequency not found.',
|
|
12
17
|
affectedFields: ['recurrenceFrequencyId'],
|
|
13
18
|
},
|
|
14
19
|
RECURRENCE_FREQUENCY_ALREADY_EXISTS: {
|
|
20
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
15
21
|
message:
|
|
16
22
|
'Each recurrence frequency can only be added to a template once. A recurrence for {recurrenceFrequency} already exists. Please edit that recurrence setup, or change the recurrence frequency selected here before saving.',
|
|
17
23
|
params: ['recurrenceFrequency'],
|
|
18
24
|
affectedFields: ['recurrenceFrequencyId'],
|
|
19
25
|
},
|
|
20
26
|
INCOME_TAX_MUST_BE_ANNUAL: {
|
|
27
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
21
28
|
message:
|
|
22
29
|
'An Income tax filing template can only have an annual recurrence frequency. Please update your selection before saving.',
|
|
23
30
|
affectedFields: ['recurrenceFrequencyId'],
|
|
24
31
|
},
|
|
25
32
|
BASED_ON_MUST_BE_PERIOD: {
|
|
33
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
26
34
|
message:
|
|
27
35
|
"A {templateType} template recurrence must always be based on 'Period'. Please update your selection before saving.",
|
|
28
36
|
params: ['templateType'],
|
|
29
37
|
affectedFields: ['basedOn'],
|
|
30
38
|
},
|
|
31
39
|
BASED_ON_REQUIRED: {
|
|
40
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
32
41
|
message: 'Based on is required',
|
|
33
42
|
affectedFields: ['basedOn'],
|
|
34
43
|
},
|
|
35
44
|
BASED_ON_MUST_BE_DATE: {
|
|
45
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
36
46
|
message:
|
|
37
47
|
"A {templateType} template recurrence must always be based on 'Date'. Please update your selection before saving.",
|
|
38
48
|
params: ['templateType'],
|
|
39
49
|
affectedFields: ['basedOn'],
|
|
40
50
|
},
|
|
41
51
|
FIRST_MONTH_REQUIRED: {
|
|
52
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
42
53
|
message: 'First month is required',
|
|
43
54
|
affectedFields: ['firstMonth'],
|
|
44
55
|
},
|
|
45
56
|
FIRST_MONTH_INVALID: {
|
|
57
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
46
58
|
message: 'First month must be a value between 1 and 12.',
|
|
47
59
|
affectedFields: ['firstMonth'],
|
|
48
60
|
},
|
|
49
61
|
SECOND_MONTH_REQUIRED: {
|
|
62
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
50
63
|
message: 'Second month is required',
|
|
51
64
|
affectedFields: ['secondMonth'],
|
|
52
65
|
},
|
|
53
66
|
SECOND_MONTH_INVALID: {
|
|
67
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
54
68
|
message: 'Second month must be a value between 1 and 12.',
|
|
55
69
|
affectedFields: ['secondMonth'],
|
|
56
70
|
},
|
|
57
71
|
THIRD_MONTH_REQUIRED: {
|
|
72
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
58
73
|
message: 'Third month is required',
|
|
59
74
|
affectedFields: ['thirdMonth'],
|
|
60
75
|
},
|
|
61
76
|
THIRD_MONTH_INVALID: {
|
|
77
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
62
78
|
message: 'Third month must be a value between 1 and 12.',
|
|
63
79
|
affectedFields: ['thirdMonth'],
|
|
64
80
|
},
|
|
65
81
|
FOURTH_MONTH_REQUIRED: {
|
|
82
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
66
83
|
message: 'Fourth month is required',
|
|
67
84
|
affectedFields: ['fourthMonth'],
|
|
68
85
|
},
|
|
69
86
|
FOURTH_MONTH_INVALID: {
|
|
87
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
70
88
|
message: 'Fourth month must be a value between 1 and 12.',
|
|
71
89
|
affectedFields: ['fourthMonth'],
|
|
72
90
|
},
|
|
73
91
|
DAY_OF_MONTH_REQUIRED: {
|
|
92
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
74
93
|
message: 'Day of month is required',
|
|
75
94
|
affectedFields: ['dayOfMonth'],
|
|
76
95
|
},
|
|
77
96
|
DAY_OF_MONTH_INVALID: {
|
|
97
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
78
98
|
message: 'Day of month must be a value between 1 and 31.',
|
|
79
99
|
affectedFields: ['dayOfMonth'],
|
|
80
100
|
},
|
|
81
101
|
DUE_MONTH_REQUIRED: {
|
|
102
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
82
103
|
message: 'Due month is required',
|
|
83
104
|
affectedFields: ['dueMonth'],
|
|
84
105
|
},
|
|
85
106
|
DUE_MONTH_INVALID: {
|
|
107
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
86
108
|
message: 'Due month must be a value between 0 and 12.',
|
|
87
109
|
affectedFields: ['dueMonth'],
|
|
88
110
|
},
|
|
89
111
|
DUE_DAY_REQUIRED: {
|
|
112
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
90
113
|
message: 'Due day is required',
|
|
91
114
|
affectedFields: ['dueDay'],
|
|
92
115
|
},
|
|
93
116
|
DUE_DAY_INVALID: {
|
|
117
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
94
118
|
message: 'Due day must be a value between 0 and 31.',
|
|
95
119
|
affectedFields: ['dueDay'],
|
|
96
120
|
},
|
|
97
121
|
EXTEND_MONTH_REQUIRED: {
|
|
122
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
98
123
|
message: 'Extend month is required',
|
|
99
124
|
affectedFields: ['extendMonth'],
|
|
100
125
|
},
|
|
101
126
|
EXTEND_MONTH_INVALID: {
|
|
127
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
102
128
|
message: 'Extend month cannot be a negative number.',
|
|
103
129
|
affectedFields: ['extendMonth'],
|
|
104
130
|
},
|
|
105
131
|
GENERATE_BEFORE_REQUIRED: {
|
|
132
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
106
133
|
message: 'Before is required',
|
|
107
134
|
affectedFields: ['generateBeforeId'],
|
|
108
135
|
},
|
|
109
136
|
GENERATE_TASKS_DAYS_REQUIRED: {
|
|
137
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
110
138
|
message: 'Generate task days is required',
|
|
111
139
|
affectedFields: ['generateTasksDays'],
|
|
112
140
|
},
|
|
113
141
|
GENERATE_BEFORE_MUST_BE_DUE_DATE: {
|
|
142
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
114
143
|
message:
|
|
115
144
|
'This recurrence is based on a date, therefore it can only be generated before a due date. Please update your selection before saving.',
|
|
116
145
|
affectedFields: ['generateBeforeId'],
|
|
117
146
|
},
|
|
118
147
|
DAY_EXCEEDS_MONTH_MAX: {
|
|
119
|
-
|
|
148
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
149
|
+
message: `Day '{dayOfMonth}' is not valid for '{monthName}'. The maximum allowed day is '{maxDays}'.`,
|
|
120
150
|
params: ['dayOfMonth', 'monthName', 'maxDays'],
|
|
121
151
|
affectedFields: ['dayOfMonth'],
|
|
122
152
|
},
|
|
123
153
|
RECURRENCE_IN_USE_CANNOT_EDIT: {
|
|
154
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
124
155
|
message: 'This recurrence is currently applied to a client and cannot be edited.',
|
|
125
156
|
affectedFields: [] as string[],
|
|
126
157
|
},
|
|
127
158
|
RECURRENCE_IN_USE_CANNOT_DELETE: {
|
|
159
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
128
160
|
message: 'This recurrence is currently in use and cannot be deleted.',
|
|
129
161
|
affectedFields: [] as string[],
|
|
130
162
|
},
|
|
131
163
|
RECURRENCE_GENERATE_BEFORE_NOT_FOUND: {
|
|
164
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
132
165
|
message: 'Generate before option not found.',
|
|
133
166
|
affectedFields: ['generateBeforeId'],
|
|
134
167
|
},
|
|
135
168
|
RECURRENCE_REQUIRED_FOR_TEMPLATE_TYPE: {
|
|
136
|
-
|
|
169
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
170
|
+
message: `A '{templateType}' template must have a recurrence set up. Please add a recurrence before saving.`,
|
|
137
171
|
params: ['templateType'],
|
|
138
172
|
affectedFields: ['recurrenceSettings'],
|
|
139
173
|
},
|
|
140
|
-
}
|
|
174
|
+
});
|
|
@@ -1,42 +1,54 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineValidationFeatureMessages, VALIDATION_SEVERITY } from '../validation-message.types';
|
|
2
|
+
|
|
3
|
+
export const TEMPLATE_STATES = defineValidationFeatureMessages({
|
|
2
4
|
TEMPLATE_STATE_NOT_FOUND: {
|
|
5
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
3
6
|
message: 'Template state not found',
|
|
4
7
|
affectedFields: [],
|
|
5
8
|
},
|
|
6
9
|
NAME_REQUIRED: {
|
|
10
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
7
11
|
message: 'Name is required',
|
|
8
12
|
affectedFields: ['name'],
|
|
9
13
|
},
|
|
10
14
|
NAME_ALREADY_IN_USE: {
|
|
15
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
11
16
|
message: 'This name is already in use on this template. Please enter a different name.',
|
|
12
17
|
affectedFields: ['name'],
|
|
13
18
|
},
|
|
14
19
|
STATE_REQUIRED: {
|
|
20
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
15
21
|
message: 'State is required',
|
|
16
22
|
affectedFields: ['stateId'],
|
|
17
23
|
},
|
|
18
24
|
INVALID_STATE: {
|
|
25
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
19
26
|
message: 'Invalid state',
|
|
20
27
|
affectedFields: ['stateId'],
|
|
21
28
|
},
|
|
22
29
|
STATE_LOCKED_WHEN_IN_USE: {
|
|
30
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
23
31
|
message: 'The State field cannot be changed because this state is already applied to a client.',
|
|
24
32
|
affectedFields: ['stateId'],
|
|
25
33
|
},
|
|
26
34
|
DATE_STOPPED_REQUIRED_WHEN_INACTIVE: {
|
|
35
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
27
36
|
message: 'Date stopped is required when status is Inactive.',
|
|
28
37
|
affectedFields: ['dateStopped'],
|
|
29
38
|
},
|
|
30
39
|
IS_ACTIVE_REQUIRED: {
|
|
40
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
31
41
|
message: 'Status is required',
|
|
32
42
|
affectedFields: ['isActive'],
|
|
33
43
|
},
|
|
34
44
|
IN_USE_CANNOT_DELETE: {
|
|
45
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
35
46
|
message: 'This state is currently in use and cannot be deleted.',
|
|
36
47
|
affectedFields: [],
|
|
37
48
|
},
|
|
38
49
|
TEMPLATE_MUST_BE_FILING_TYPE: {
|
|
50
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
39
51
|
message: 'States can only be added to Filing type templates.',
|
|
40
52
|
affectedFields: [],
|
|
41
53
|
},
|
|
42
|
-
}
|
|
54
|
+
});
|
|
@@ -1,19 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineValidationFeatureMessages, VALIDATION_SEVERITY } from '../validation-message.types';
|
|
2
|
+
|
|
3
|
+
export const USER_PREFERENCES = defineValidationFeatureMessages({
|
|
2
4
|
FEATURE_DOES_NOT_EXIST: {
|
|
3
|
-
|
|
5
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
6
|
+
message: `Feature with name '{feature}' does not exist`,
|
|
4
7
|
params: ['feature'],
|
|
5
8
|
affectedFields: ['feature'],
|
|
6
9
|
},
|
|
7
10
|
INVALID_REQUEST: {
|
|
11
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
8
12
|
message: 'Request is invalid',
|
|
9
13
|
affectedFields: [],
|
|
10
14
|
},
|
|
11
15
|
PREFERENCE_DOES_NOT_BELONG_TO_USER: {
|
|
16
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
12
17
|
message: 'Preference does not belong to the user',
|
|
13
18
|
affectedFields: [],
|
|
14
19
|
},
|
|
15
20
|
INVALID_COLUMN_ORDER: {
|
|
21
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
16
22
|
message: 'Invalid columnOrder values',
|
|
17
23
|
affectedFields: ['columnOrder'],
|
|
18
24
|
},
|
|
19
|
-
}
|
|
25
|
+
});
|
|
@@ -1,56 +1,70 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineValidationFeatureMessages, VALIDATION_SEVERITY } from '../validation-message.types';
|
|
2
|
+
|
|
3
|
+
export const USERS = defineValidationFeatureMessages({
|
|
2
4
|
USERNAME_DOES_NOT_EXIST: {
|
|
3
|
-
|
|
5
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
6
|
+
message: `User with username '{username}' does not exist.`,
|
|
4
7
|
params: ['username'],
|
|
5
8
|
affectedFields: ['userName'],
|
|
6
9
|
},
|
|
7
10
|
INVALID_PASSWORD: {
|
|
8
|
-
|
|
11
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
12
|
+
message: `User with username '{username}' password does not match.`,
|
|
9
13
|
params: ['username'],
|
|
10
14
|
affectedFields: ['password'],
|
|
11
15
|
},
|
|
12
16
|
INVALID_RESET_PASSWORD_TOKEN: {
|
|
17
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
13
18
|
message: `Invalid or expired reset token.`,
|
|
14
19
|
affectedFields: ['resetToken'],
|
|
15
20
|
},
|
|
16
21
|
RESET_PASSWORD_LINK_ALREADY_USED: {
|
|
22
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
17
23
|
message: `Reset password link has already been used. Please request a new one.`,
|
|
18
24
|
affectedFields: ['resetToken'],
|
|
19
25
|
},
|
|
20
26
|
RESET_PASSWORD_LINK_NOT_LATEST: {
|
|
27
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
21
28
|
message: `Reset password link is no longer valid. Please use the most recent one.`,
|
|
22
29
|
affectedFields: ['resetToken'],
|
|
23
30
|
},
|
|
24
31
|
USERNAME_ALREADY_EXISTS: {
|
|
32
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
25
33
|
message: `User with username '{username}' already exists`,
|
|
26
34
|
params: ['username'],
|
|
27
35
|
affectedFields: ['userName'],
|
|
28
36
|
},
|
|
29
37
|
EMAIL_ALREADY_EXISTS: {
|
|
38
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
30
39
|
message: `User with email '{email}' already exists`,
|
|
31
40
|
params: ['email'],
|
|
32
41
|
affectedFields: ['email'],
|
|
33
42
|
},
|
|
34
43
|
ROLE_DOES_NOT_EXIST: {
|
|
44
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
35
45
|
message: `Role does not exist`,
|
|
36
46
|
params: ['roleId'],
|
|
37
47
|
},
|
|
38
48
|
USER_DOES_NOT_EXIST: {
|
|
49
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
39
50
|
message: `User does not exist`,
|
|
40
51
|
params: ['userId'],
|
|
41
52
|
affectedFields: ['userId'],
|
|
42
53
|
},
|
|
43
54
|
USER_PASSWORDS_DO_NOT_MATCH: {
|
|
55
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
44
56
|
message: `User passwords do not match`,
|
|
45
57
|
affectedFields: ['password', 'confirmPassword'],
|
|
46
58
|
},
|
|
47
59
|
USER_HAS_REFERENCED_DATA: {
|
|
60
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
48
61
|
message: `User '{fullName}' cannot be deleted because they are referenced by existing records.`,
|
|
49
62
|
params: ['fullName'],
|
|
50
63
|
affectedFields: ['userId'],
|
|
51
64
|
},
|
|
52
65
|
USER_CANNOT_DELETE_SELF: {
|
|
66
|
+
severity: VALIDATION_SEVERITY.ERROR,
|
|
53
67
|
message: `You cannot delete your own account.`,
|
|
54
68
|
affectedFields: ['userId'],
|
|
55
69
|
},
|
|
56
|
-
}
|
|
70
|
+
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { VALIDATION_MESSAGES } from './validation-messages';
|
|
2
|
+
import { ValidationMessageDefinition, ValidationSeverity } from './validation-message.types';
|
|
2
3
|
|
|
3
4
|
type Features = keyof typeof VALIDATION_MESSAGES;
|
|
4
5
|
type ErrorType<F extends Features> = keyof (typeof VALIDATION_MESSAGES)[F];
|
|
@@ -8,16 +9,12 @@ type ErrorMessageParams<F extends Features, E extends ErrorType<F>> = (typeof VA
|
|
|
8
9
|
? P
|
|
9
10
|
: [];
|
|
10
11
|
type MessageParams<T extends readonly string[]> = { [K in T[number]]: string };
|
|
11
|
-
type MessageConfig = {
|
|
12
|
-
message: string;
|
|
13
|
-
params?: readonly string[];
|
|
14
|
-
affectedFields?: readonly string[];
|
|
15
|
-
};
|
|
16
12
|
|
|
17
13
|
export type ValidationMessageResult = {
|
|
18
14
|
content: string;
|
|
19
15
|
affectedFields: string[];
|
|
20
16
|
feature: string;
|
|
17
|
+
severity: ValidationSeverity;
|
|
21
18
|
};
|
|
22
19
|
|
|
23
20
|
export const getValidationMessage = <FeatureType extends Features, FeatureErrorType extends ErrorType<FeatureType>>(
|
|
@@ -28,7 +25,7 @@ export const getValidationMessage = <FeatureType extends Features, FeatureErrorT
|
|
|
28
25
|
const feature = parts[0] as FeatureType;
|
|
29
26
|
const featureError = parts[1] as FeatureErrorType;
|
|
30
27
|
|
|
31
|
-
const messageConfig = VALIDATION_MESSAGES[feature][featureError] as
|
|
28
|
+
const messageConfig = VALIDATION_MESSAGES[feature][featureError] as ValidationMessageDefinition;
|
|
32
29
|
|
|
33
30
|
if (!messageConfig) {
|
|
34
31
|
throw new Error(
|
|
@@ -74,5 +71,6 @@ export const getValidationMessage = <FeatureType extends Features, FeatureErrorT
|
|
|
74
71
|
content: message,
|
|
75
72
|
affectedFields: messageConfig.affectedFields ? [...messageConfig.affectedFields] : [],
|
|
76
73
|
feature: feature,
|
|
74
|
+
severity: messageConfig.severity,
|
|
77
75
|
};
|
|
78
76
|
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export const VALIDATION_SEVERITY = {
|
|
2
|
+
ERROR: 'error',
|
|
3
|
+
WARNING: 'warning',
|
|
4
|
+
} as const;
|
|
5
|
+
|
|
6
|
+
export type ValidationSeverity = (typeof VALIDATION_SEVERITY)[keyof typeof VALIDATION_SEVERITY];
|
|
7
|
+
|
|
8
|
+
export type ValidationIssue = {
|
|
9
|
+
feature: string;
|
|
10
|
+
severity: ValidationSeverity;
|
|
11
|
+
message: string;
|
|
12
|
+
affectedFields: string[];
|
|
13
|
+
code: string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export type ManualValidationIssueInput = Omit<ValidationIssue, 'severity'> & {
|
|
17
|
+
severity?: ValidationSeverity;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type ValidationIssueInput = {
|
|
21
|
+
feature: string;
|
|
22
|
+
content: string;
|
|
23
|
+
affectedFields: string[];
|
|
24
|
+
severity?: ValidationSeverity;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export type ValidationMessageDefinition = {
|
|
28
|
+
severity: ValidationSeverity;
|
|
29
|
+
message: string;
|
|
30
|
+
params?: readonly string[];
|
|
31
|
+
affectedFields?: readonly string[];
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export type ValidationFeatureMessages = Record<string, ValidationMessageDefinition>;
|
|
35
|
+
|
|
36
|
+
export const defineValidationFeatureMessages = <T extends ValidationFeatureMessages>(messages: T): T => messages;
|