| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- class @CookiesStore
- # Intentionally called CookiesStore instead of CookieStore
- # Calling it CookieStore causes issues when the Experimental Web Platform features flag is enabled in Chrome
- # Related issue: https://github.com/freeCodeCamp/devdocs/issues/932
- INT = /^\d+$/
- @onBlocked: ->
- get: (key) ->
- value = Cookies.get(key)
- value = parseInt(value, 10) if value? and INT.test(value)
- value
- set: (key, value) ->
- if value == false
- @del(key)
- return
- value = 1 if value == true
- value = parseInt(value, 10) if value and INT.test?(value)
- Cookies.set(key, '' + value, path: '/', expires: 1e8)
- @constructor.onBlocked(key, value, @get(key)) if @get(key) != value
- return
- del: (key) ->
- Cookies.expire(key)
- return
- reset: ->
- try
- for cookie in document.cookie.split(/;\s?/)
- Cookies.expire(cookie.split('=')[0])
- return
- catch
- dump: ->
- result = {}
- for cookie in document.cookie.split(/;\s?/) when cookie[0] isnt '_'
- cookie = cookie.split('=')
- result[cookie[0]] = cookie[1]
- result
|