饼干蛋糕
在浏览器中读取和写入 cookie 或任何曝光环境的无依赖性小助手 document- 风格界面.
目录
特征
- 零运行时间依赖性和ES5友好源,因此它与遗留的工具链保持了干净的捆绑.
- 工作在浏览器,浏览器风格的捆绑,以及当您提供文档分页时的Node.js.
- 内建的TypeScript声明与JavaScript模块具有相同的API形状.
- 已分割的 CHIPS 属性支持外加 SameSite 守护符,以保持您与当前浏览器要求保持一致 .
释放要闻(0.3.x)
- 添加
partitioned属性使 Cookie 在匹配 Mozilla 的 Set- Cookie 指引的同时可以选择 CHIPS . - 警告时
SameSite: "None"以无secure: true提供cookie.configure({ suppressInsecureSameSiteNoneWarning: true })关闭本地 HTTP 设置中的警告 . - 引入顶级
cookie.clear帮助(包括类型脚本声明)和保证删除强制Max-Age=0。 。 。 . - 扩展序列化以覆盖
HttpOnly, (中文(简体) ),Max-Age,以及SameSite因此释放出cookie的属性反映了现代浏览器的期望.
安装
npm install @boiseitguru/cookie-cutter
快速启动
// CommonJS
var cookie = require("@boiseitguru/cookie-cutter");
var visits = parseInt(cookie.get("visits"), 10) || 0;
cookie.set("visits", visits + 1, { path: "/" });
// ES Modules (modern bundlers)
import cookie from "@boiseitguru/cookie-cutter";
const visits = Number(cookie.get("visits") || 0) + 1;
cookie.set("visits", String(visits), { path: "/" });
API 参考
cookie(document?: Document | string)
创建一个绑定在所提供文档或饼干字符串上的饼干控制器。 如果没有给出参数,则创建一个空的饼干罐.
当您在浏览器中导入/要求模块时,默认导出已经
与全球 document,所以你可以打电话 cookie.get, (中文(简体) ), cookie.set, (中文(简体) ),
财务报告和审定财务报表 cookie.clear 直接如“快速启动”所示.
cookie.get(key: string): string | undefined
返回为 key,或 undefined 如果饼干没有设置.
cookie.set(key: string, value: string, options?: CookieOptions): string
序列化 key=value 带有任何提供的饼干属性,指定给 document.cookie,然后返回序列字符串。 何时 options.SameSite === "None" 财务报告和审定财务报表 options.secure 没有 true,然后将警告打印到 console.warn 预测即将执行。 设置 options.partitioned === true 附加 Partitioned 属性.
cookie.clear(key: string, options?: CookieOptions): string
清除饼干 key 通过授权 set 过去已过期的 Max-Age = 0。通过与设置饼干时相同的选项(例如 path 或者说 domain)所以浏览器的目标是正确的饼干.
cookie.configure(options: CookieConfig): void
调整未来 cookie 操作的全局默认值, 如在本地开发时静音 SameSite 警告 .
type CookieConfig = {
suppressInsecureSameSiteNoneWarning?: boolean;
};
suppressInsecureSameSiteNoneWarning: 当true,禁用由cookie.set页:1SameSite: "None"饼干不见了secure旗帜。 适用于HTTP的非生产开发.
Cookie 选项
| 选项 | 类型 | 说明 |
|---|---|---|
expires | Date | 设定饼干过期日期 . |
path | string | 将饼干限制在特定路径上 . |
domain | string | 将饼干限制在特定域内. |
secure | boolean | 将饼干标为仅安全的. 浏览器在 SameSite 实值 "None"。 。 。 . |
HttpOnly | boolean | 添加 HttpOnly 属性. |
MaxAge | number | 通过 Max-Age。 。 。 . |
SameSite | "Strict" | "Lax" | "None" | 控制跨场饼干行为. |
partitioned | boolean | 附加 Partitioned cHIPS 存储属性( 需要) secure: true 在支持浏览器中). |
实例
分区的 SameSite=无 Cookie
var cookie = require("@boiseitguru/cookie-cutter");
var api = cookie(document);
api.set("session", "abc123", {
secure: true,
SameSite: "None",
partitioned: true
});
这种组合满足了当前Mozilla Set-Cookie对分块饼干的期望.
在地方发展期间制止警告
var cookie = require("@boiseitguru/cookie-cutter");
cookie.configure({ suppressInsecureSameSiteNoneWarning: true });
var api = cookie({ cookie: "" });
api.set("token", "dev-only", { SameSite: "None" });
类型脚本
类型定义船与包。 使用默认或普通JS语法导入模块,并享受饼干选项的自动完成,包括 partitioned 财务报告和审定财务报表 SameSite。 。 。 .
import cookie = require("@boiseitguru/cookie-cutter");
const api = cookie();
api.set("theme", "dark", { SameSite: "Lax", MaxAge: 300 });
测试
运行磁带测试套件 :
npm test
捐款
- 保持ES5编码样式:双相距缩进,
var声明、双引字符串和明确的分号. - 当运行时间 API 改变时更新 TypeScript 声明 .
- 在功能改变的同时添加有重点的测试, 以便行为保持锁定 .
项目来源和信用
这个寄存器保存了詹姆斯·哈利迪(英语:James Halliday (substack))最初的cookie-cutter模块,以确保持续提供,TypeScript支持和现代cookie属性更新在此保持.
许可证
麻省理工学院. 见 自由主义 详细文件.