1 |
|
2 | export const normalizeConditions = function (rawConditions) {
|
3 | const caseNormalizedConditions = normalizeConditionCases(rawConditions)
|
4 | const listNormalizedConditions = normalizeConditionLists(caseNormalizedConditions)
|
5 | return listNormalizedConditions
|
6 | }
|
7 |
|
8 |
|
9 | const normalizeConditionCases = function (conditions) {
|
10 | return CONDITION_CAPITALIZED_PROPS.reduce(normalizeConditionCase, conditions)
|
11 | }
|
12 |
|
13 | const CONDITION_CAPITALIZED_PROPS = [
|
14 | { name: 'role', capitalizedName: 'Role' },
|
15 | { name: 'language', capitalizedName: 'Language' },
|
16 | { name: 'country', capitalizedName: 'Country' },
|
17 | ]
|
18 |
|
19 | const normalizeConditionCase = function (conditions, { name, capitalizedName }) {
|
20 | const { [capitalizedName]: capitalizedProp, [name]: prop = capitalizedProp, ...conditionsA } = conditions
|
21 | return prop === undefined ? conditionsA : { ...conditionsA, [capitalizedName]: prop }
|
22 | }
|
23 |
|
24 |
|
25 |
|
26 | const normalizeConditionLists = function (conditions) {
|
27 | return CONDITION_LIST_PROPS.reduce(normalizeConditionList, conditions)
|
28 | }
|
29 |
|
30 | const CONDITION_LIST_PROPS = ['Role', 'Language', 'Country']
|
31 |
|
32 | const normalizeConditionList = function (conditions, name) {
|
33 | return typeof conditions[name] === 'string'
|
34 | ? { ...conditions, [name]: conditions[name].trim().split(CONDITION_LIST_REGEXP) }
|
35 | : conditions
|
36 | }
|
37 |
|
38 | const CONDITION_LIST_REGEXP = /\s*,\s*/gu
|