npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@just4/cookie

v2.0.0

Published

Just for cookie manipulation in browser.

Downloads

6

Readme

@just4/cookie

提供浏览器端的 cookie 操作接口。

特性

  • 提供了浏览器端 cookie 读取、写入以及删除的接口。
  • 写入 cookie 时,支持设置有效时间、主机名、路径、Secure、SameSite 等属性。

安装

npm i @just4/cookie

调用

安装完毕之后,就可以引入并调用相关的方法:

import {
  getCookie,
  setCookie,
  removeCookie
} from '@just4/cookie';

读取 cookie

getCookie('nickname');

默认情况下,读取 cookie 时分别是用 encodeURIComponentdecodeURIComponent 进行编码和解码的。如果要用其他编解码函数,可以通过 encodedecode 选项指定。

getCookie('nickname', {
  encode(content) {
    //...
  },
  decode(content) {
    //...
  }
});

写入 cookie

最简单的 cookie 写入只需指定 key 和 value 的值。

setCookie('nickname', 'Tom');

但 Cookie 还有多个属性(见 MDN 的《Set-Cookie》文档),除了 HttpOnly 以外,其他均可在浏览器端进行设置。可通过 setCookie 函数的选项参数对 cookie 的属性进行设置。

有效时间

有效时间有绝对时间相对时间两种形式:

  • 使用绝对时间时,要传入对应时间点的日期对象。
  • 使用相对时间时,传入“数量 单位”格式的字符串,其中单位可以为单数也可以为复数。
// 相对时间
setCookie('nickname', 'Tom', {
  expires: '1 month'  // 有效时间为一个月
});
// 相对时间
setCookie('nickname', 'Tom', {
  expires: '2 years'  // 有效时间为两年
});
// 绝对时间
setCookie('nickname', 'Tom', {
  expires: new Date(2023, 0, 1)  // 2023 年 1 月 1 日 0 点过期
});

主机名和路径

setCookie('nickname', 'Tom', {
  domain: '.abc.com',
  path: '/'
});

仅在 https 请求中可用

setCookie('nickname', 'Tom', {
  secure: true
});

SameSite

关于 SameSite 的说明可以参阅 MDN 的《SameSite cookies》。

setCookie('nickname', 'Tom', {
  sameSite: 'strict'
});
// SameSite 设为 none 时需要同时设置 Secure
setCookie('nickname', 'Tom', {
  sameSite: 'none',
  secure: true
});

指定内容编码

默认情况下,写入 cookie 时是用 encodeURIComponent 进行编码的。如果要用其他编码函数,可以通过 encode 选项指定。

setCookie('nickname', '汤姆', {
  encode(content) {
    //...
  }
});

删除 cookie

removeCookie('nickname');

删除 cookie 实质上是把 cookie 设为过期,因此 removeCookie 支持 setCookie 的所有选项。

相关文档

Changelog

v2.0.0

  • 设置 cookie 有效时间时,对相对时间的处理修改为通过 @just4/util 中的 addRelativeTime 实现,因此:
    • 不再支持小数的数量(例如 0.5 month)。因为单位不一定是常量(例如一个月的总天数可能是 28、29、30、31),数量为小数时,表达的意思不明确。
    • 计算方式的变化。
      • 在 1.x 版本中,1 个月按 30 天算。如果有效时间为 1 个月,就是在当前时间的 30 天后过期;自本版本开始,变更为在下个月同一天同样的时间点过期。
      • 在 1.x 版本中,1 年按 365 天算。如果有效时间为 1 年,就是在当前时间的 365 天后过期;自本版本开始,变更为在下一年同一天同样的时间点过期。