UNPKG

petite-utils

Version:

A collection of small util function in JavaScript.

87 lines (80 loc) 2.28 kB
/* * @Author : ZhouQiJun * @Date : 2024-11-28 11:34:51 * @LastEditors : ZhouQiJun * @LastEditTime: 2025-03-22 22:22:40 * @Description : 操作 cookie */ import { isArray, isBoolean, isFunction, isNullish, isNumber, isObject } from '../type'; /** * @group 浏览器 * @description 设置 cookie * @param name cookie 名字 * @param value cookie 值 * @param expiresInDay 过期时间 天 * @returns */ export function setCookie(name: string, value: string | object | Array<any> | boolean = '', expiresInDay: number = 30) { if (!name) return false; if (!isNumber(expiresInDay)) expiresInDay = 30; const milliseconds_one_day = 24 * 60 * 60 * 1000 const date = new Date(); date.setTime(date.getTime() + expiresInDay * milliseconds_one_day); if (isFunction(value) || isNullish(value)) return false; if (isArray(value) || isObject(value) || isBoolean(value)) { value = JSON.stringify(value); } value = encodeURIComponent(value as string); // write the cookie document.cookie = `${encodeURIComponent(name)}=${value}; expires=${date.toUTCString()}`; return true; } /** * @group 浏览器 * @description 查询 cookie * @param name cookie 名字 * @returns */ export function getCookie(name: string): string { if (!name) return ''; if (!document.cookie) return ''; const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { const cookie = cookies[i].trim(); const [key, value] = cookie.split('='); if (key === name) { try { const val = JSON.parse(decodeURIComponent(value)); return val; } catch (error) { // maybe set cookie by other way like document.cookie = 'name=cookie' return value; } } } return ''; } /** * @group 浏览器 * @description 移除 cookie * @param name cookie 名字 * @returns */ export function removeCookie(name: string) { setCookie(name, '', -1); return true; } /** * @group 浏览器 * @description 移除所有 cookie * @returns */ export function clearAllCookie() { const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { const cookie = cookies[i].trim(); const [key] = cookie.split('='); removeCookie(key); } return true; }