File tree 3 files changed +38
-2
lines changed
3 files changed +38
-2
lines changed Original file line number Diff line number Diff line change 1
1
# Node JS Exercise
2
2
3
+ Showing a list of settings on the ` /settings ` route.
4
+
3
5
## Requirements
4
6
5
7
### Global
24
26
``` bash
25
27
yarn start
26
28
```
29
+ You can display the settings on http://localhost:8042/settings .
30
+
31
+ * Check ESLint
32
+ ``` bash
33
+ yarn lint
34
+ ```
27
35
28
36
* Build for production
29
37
``` bash
Original file line number Diff line number Diff line change 34
34
"es6" : true
35
35
},
36
36
"rules" : {
37
+ "arrow-parens" : [" error" , " as-needed" ],
37
38
"no-console" : " off"
38
39
}
39
40
}
Original file line number Diff line number Diff line change @@ -19,16 +19,43 @@ class SettingsRouter {
19
19
* @returns {Promise }
20
20
*/
21
21
async init ( ) {
22
- const settingsData = await parseFile ( this . settingsFilePath ) ;
22
+ const settingsList = await parseFile ( this . settingsFilePath ) ;
23
23
const componentList = await parseFile ( this . componentsFilePath ) ;
24
+ const filteredList = SettingsRouter . filterSettingsList ( settingsList , componentList ) ;
24
25
25
26
this . expressRouter . get ( '/settings' , ( req , res ) => {
26
- res . send ( settingsData ) ;
27
+ res . send ( filteredList ) ;
27
28
res . end ( ) ;
28
29
} ) ;
29
30
30
31
return this . expressRouter ;
31
32
}
33
+
34
+ /**
35
+ * @param {Array } settingsList
36
+ * @param {Array } componentList
37
+ * @returns {Array }
38
+ */
39
+ static filterSettingsList ( settingsList , componentList ) {
40
+ // Put all the component name in an array of string (instead of objects)
41
+ const componentNameList = componentList . map ( item => item . name ) ;
42
+
43
+ let settingRequires ;
44
+
45
+ return settingsList . filter ( settingsItem => {
46
+ ( { requires : settingRequires } = settingsItem ) ;
47
+
48
+ if ( ! Array . isArray ( settingRequires ) ) {
49
+ return false ;
50
+ }
51
+
52
+ if ( settingRequires . length === 0 ) {
53
+ return true ;
54
+ }
55
+
56
+ return settingRequires . some ( requiredComponent => componentNameList . includes ( requiredComponent ) ) ;
57
+ } ) ;
58
+ }
32
59
}
33
60
34
61
export default SettingsRouter ;
You can’t perform that action at this time.
0 commit comments