JSFiddle - React, Tailwind, and code Playground

Proxy: cookie object

by Csaba Hellinger

JavaScript

function cookieObject() {
	// load current cookies
    const cookies = {}; 
    document.cookie.split(';').forEach(item => { 
        const i = item.indexOf('='),
              key = item.substr(0, i).trim(),
              value = item.substr(i + 1);
        cookies[key] = value;
    });
    // proxy to persist props to cookies
	const handler = {
    	set (obj, prop, value) {
            document.cookie = `${prop}=${value}`;
            Reflect.set(obj, prop, value);
        },
        deleteProperty (obj, prop) {
            document.cookie = `${prop}=; expires=Thu, 01 Jan 1970 00:00:01 GMT;`;
            return Reflect.deleteProperty(obj, prop);
        }
    };
	return new Proxy(cookies, handler);
}

// simulate previously saved/missing cookies
document.cookie='A=1';
document.cookie='BCD=234';
document.cookie='C=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';

// try the cookies proxy
const myCookies = cookieObject();
console.clear();
console.log('loaded:', myCookies);

myCookies.C = 'hello';
console.log(document.cookie);

delete myCookies.BCD;
console.log(document.cookie);