cookies_store.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. class @CookiesStore
  2. # Intentionally called CookiesStore instead of CookieStore
  3. # Calling it CookieStore causes issues when the Experimental Web Platform features flag is enabled in Chrome
  4. # Related issue: https://github.com/freeCodeCamp/devdocs/issues/932
  5. INT = /^\d+$/
  6. @onBlocked: ->
  7. get: (key) ->
  8. value = Cookies.get(key)
  9. value = parseInt(value, 10) if value? and INT.test(value)
  10. value
  11. set: (key, value) ->
  12. if value == false
  13. @del(key)
  14. return
  15. value = 1 if value == true
  16. value = parseInt(value, 10) if value and INT.test?(value)
  17. Cookies.set(key, '' + value, path: '/', expires: 1e8)
  18. @constructor.onBlocked(key, value, @get(key)) if @get(key) != value
  19. return
  20. del: (key) ->
  21. Cookies.expire(key)
  22. return
  23. reset: ->
  24. try
  25. for cookie in document.cookie.split(/;\s?/)
  26. Cookies.expire(cookie.split('=')[0])
  27. return
  28. catch
  29. dump: ->
  30. result = {}
  31. for cookie in document.cookie.split(/;\s?/) when cookie[0] isnt '_'
  32. cookie = cookie.split('=')
  33. result[cookie[0]] = cookie[1]
  34. result