Guest User

Untitled

a guest
Apr 7th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. /***
  2. Usage:
  3. function saveUser(userInfo) {
  4. return pipe(
  5. validate,
  6. normalize,
  7. persist
  8. )(userInfo)
  9. }
  10.  
  11. function validate(
  12. id,
  13. firstName,
  14. lastName,
  15. email = requiredParam(),
  16. username = requiredParam(),
  17. pass = requiredParam(),
  18. address,
  19. ...rest
  20. ) {
  21. // do some validation
  22. return {
  23. id,
  24. firstName,
  25. lastName,
  26. email,
  27. username,
  28. pass,
  29. address,
  30. ...rest
  31. }
  32. }
  33.  
  34. function normalize(
  35. email,
  36. username,
  37. ...rest
  38. ) {
  39. // do some normalizing
  40. return {
  41. email,
  42. username,
  43. ...rest
  44. }
  45. }
  46.  
  47. async function persist({
  48. upsert = true,
  49. ...info
  50. }) {
  51. // save userInfo to the DB
  52. return {
  53. operation,
  54. status,
  55. saved: info
  56. }
  57. }
  58. ***/
  59.  
  60. function pipe(...fns) {
  61. return param => fns.reduce(
  62. (result, fn) => fn(result),
  63. param
  64. )
  65. }
  66.  
  67. function requiredParam (param) {
  68. const requiredParamError = new Error(
  69. `Required parameter, "${param}" is missing.`
  70. )
  71. // preserve original stack trace
  72. if (typeof Error.captureStackTrace === ‘function’) {
  73. Error.captureStackTrace(
  74. requiredParamError,
  75. requiredParam
  76. )
  77. }
  78. throw requiredParamError
  79. }
Add Comment
Please, Sign In to add comment