| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // 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
- class CookiesStore {
- static INT = /^\d+$/;
- static onBlocked() {}
- get(key) {
- let value = Cookies.get(key);
- if (value != null && CookiesStore.INT.test(value)) {
- value = parseInt(value, 10);
- }
- return value;
- }
- set(key, value) {
- if (value === false) {
- this.del(key);
- return;
- }
- if (value === true) {
- value = 1;
- }
- if (
- value &&
- (typeof CookiesStore.INT.test === "function"
- ? CookiesStore.INT.test(value)
- : undefined)
- ) {
- value = parseInt(value, 10);
- }
- Cookies.set(key, "" + value, { path: "/", expires: 1e8 });
- if (this.get(key) !== value) {
- CookiesStore.onBlocked(key, value, this.get(key));
- }
- }
- del(key) {
- Cookies.expire(key);
- }
- reset() {
- try {
- for (var cookie of document.cookie.split(/;\s?/)) {
- Cookies.expire(cookie.split("=")[0]);
- }
- return;
- } catch (error) {}
- }
- dump() {
- const result = {};
- for (var cookie of document.cookie.split(/;\s?/)) {
- if (cookie[0] !== "_") {
- cookie = cookie.split("=");
- result[cookie[0]] = cookie[1];
- }
- }
- return result;
- }
- }
|