{"_id":"@boiseitguru/cookie-cutter","_rev":"6-287bc1f2d5f887d4f1ee8b80a66e2d05","name":"@boiseitguru/cookie-cutter","dist-tags":{"latest":"0.3.1"},"versions":{"0.2.0":{"name":"@boiseitguru/cookie-cutter","version":"0.2.0","keywords":["cookie","browser","browserify"],"author":{"url":"http://boiseitguru.com","name":"BoiseITGuru","email":"dev@BoiseITGuru.com"},"license":"MIT","_id":"@boiseitguru/cookie-cutter@0.2.0","maintainers":[{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"}],"homepage":"https://github.com/substack/cookie-cutter#readme","bugs":{"url":"https://github.com/substack/cookie-cutter/issues"},"dist":{"shasum":"4d7587da929e08a6dffcd7841d92af383c3d2649","tarball":"https://registry.npmjs.org/@boiseitguru/cookie-cutter/-/cookie-cutter-0.2.0.tgz","fileCount":7,"integrity":"sha512-p7g9TrFzzGUstatQaTkQdI1eudNCwJLx+qcdTGBxXPyO8GcJHmtM8OoQ7VS+QQaIVOpIK36Q+oB788j5elxs8w==","signatures":[{"sig":"MEUCIQCweMQrYIXh5S6qBEc1jpVJUEZbb7Q8WqKj62vbe6PL5gIgeS+S7iQl9h2lrrUzZJ+C2VYxnxoVgBjgsoum6SuBBcc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4908},"main":"index.js","gitHead":"6b55022d40636a48f09c85d74bdf8232518567e3","_npmUser":{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"},"repository":{"url":"git://github.com/substack/cookie-cutter.git","type":"git"},"_npmVersion":"9.7.2","description":"Browserify-compatible module to get and set cookies in the browser","directories":{},"_nodeVersion":"16.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cookie-cutter_0.2.0_1688939396201_0.04887067498205866","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@boiseitguru/cookie-cutter","version":"0.2.1","keywords":["cookie","browser","browserify"],"author":{"url":"http://boiseitguru.com","name":"BoiseITGuru","email":"dev@BoiseITGuru.com"},"license":"MIT","_id":"@boiseitguru/cookie-cutter@0.2.1","maintainers":[{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"}],"homepage":"https://github.com/boiseitguru/cookie-cutter#readme","bugs":{"url":"https://github.com/boiseitguru/cookie-cutter/issues"},"dist":{"shasum":"f1f28f760cb614f3166d860b1097ddafa1dfefb3","tarball":"https://registry.npmjs.org/@boiseitguru/cookie-cutter/-/cookie-cutter-0.2.1.tgz","fileCount":7,"integrity":"sha512-MLYTqtyECvjq+Wjq2k++bXReIlClTrtpSWSXeamp868MWKggn6SanFBZRVhI61isf3ETuvmDJObexW36Ck4SCQ==","signatures":[{"sig":"MEYCIQC/WjE1WRoYS5dK0fqivenK3ghG770Oyj0xvGc7aUwZBAIhAK6/lA39ItmQWhH9PYd/mVf2RTaIultglc19n6hbtNod","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4911},"main":"index.js","gitHead":"c38a7dd18f1af0e1a9b068e2633cdaec82539a3c","_npmUser":{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"},"repository":{"url":"git://github.com/boiseitguru/cookie-cutter.git","type":"git"},"_npmVersion":"9.7.2","description":"Browserify-compatible module to get and set cookies in the browser","directories":{},"_nodeVersion":"16.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cookie-cutter_0.2.1_1689182122147_0.8782118010708755","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@boiseitguru/cookie-cutter","version":"0.2.2","keywords":["cookie","browser","browserify"],"author":{"url":"http://boiseitguru.com","name":"BoiseITGuru","email":"dev@BoiseITGuru.com"},"license":"MIT","_id":"@boiseitguru/cookie-cutter@0.2.2","maintainers":[{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"}],"homepage":"https://github.com/boiseitguru/cookie-cutter#readme","bugs":{"url":"https://github.com/boiseitguru/cookie-cutter/issues"},"dist":{"shasum":"0cf6d064b0099fce0ed7870669ca8de62012c3f4","tarball":"https://registry.npmjs.org/@boiseitguru/cookie-cutter/-/cookie-cutter-0.2.2.tgz","fileCount":8,"integrity":"sha512-KVDj83qltMkSTR0V4PMTYe5QN8jCzs7qLbFtctf6qhis7/fNh74ymiGG9Xx0kyizNL7eECD5287HZTHMPCtXVw==","signatures":[{"sig":"MEUCIQD8jOWigAURIr/NI7cLxvjgqGIzgtm6KsL7QI5F8C5KcgIgDWF6732XrjW/eo9r171JgS/wusyUvfQpJV0hTVUmGIg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5517},"main":"index.js","gitHead":"c38a7dd18f1af0e1a9b068e2633cdaec82539a3c","_npmUser":{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"},"repository":{"url":"git://github.com/boiseitguru/cookie-cutter.git","type":"git"},"_npmVersion":"9.8.1","description":"Browserify-compatible module to get and set cookies in the browser","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/cookie-cutter_0.2.2_1704230783434_0.9793120699490461","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@boiseitguru/cookie-cutter","version":"0.2.3","keywords":["cookie","browser","browserify"],"author":{"url":"http://boiseitguru.com","name":"BoiseITGuru","email":"dev@BoiseITGuru.com"},"license":"MIT","_id":"@boiseitguru/cookie-cutter@0.2.3","maintainers":[{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"}],"homepage":"https://github.com/boiseitguru/cookie-cutter#readme","bugs":{"url":"https://github.com/boiseitguru/cookie-cutter/issues"},"dist":{"shasum":"34c64e5e2d78f820b03f29e9f3703fac85725fcd","tarball":"https://registry.npmjs.org/@boiseitguru/cookie-cutter/-/cookie-cutter-0.2.3.tgz","fileCount":8,"integrity":"sha512-5Qc77XxPKZ3nQi+UZux31YdPZjNirrYYDTUUhmmHvvE8LqTgmwtXOdrOFCNhp4u+2O6uKFHg1s/B/AqiBQCDTA==","signatures":[{"sig":"MEUCIFyL3eYREaoLkBJNwDgPkOI1MX49N816cjBstz8ufHYEAiEAyUEaYqCGdj0jmipx7iaqmrc37Gp0R7gfRNqMeNv2IRY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5500},"main":"index.js","types":"./@types/cookie-cutter.d.ts","gitHead":"af44c84d8de844aea07965351b34428d333347aa","_npmUser":{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"},"repository":{"url":"git://github.com/boiseitguru/cookie-cutter.git","type":"git"},"_npmVersion":"9.8.1","description":"Browserify-compatible module to get and set cookies in the browser","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cookie-cutter_0.2.3_1704236396447_0.9563623968269528","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@boiseitguru/cookie-cutter","version":"0.3.0","keywords":["cookie","browser","browserify"],"author":{"url":"http://boiseitguru.com","name":"BoiseITGuru","email":"dev@BoiseITGuru.com"},"license":"MIT","_id":"@boiseitguru/cookie-cutter@0.3.0","maintainers":[{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"}],"homepage":"https://github.com/boiseitguru/cookie-cutter#readme","bugs":{"url":"https://github.com/boiseitguru/cookie-cutter/issues"},"dist":{"shasum":"516857440eb2efe5ecb52990f96fab6d54b77157","tarball":"https://registry.npmjs.org/@boiseitguru/cookie-cutter/-/cookie-cutter-0.3.0.tgz","fileCount":10,"integrity":"sha512-UGvnnilrKdP0BS65CjaTHIAWbuywy8J14eruZrOBVeY4ZAo8SLVlr4SgdlITqCqzm5IHG8wg8cJA946Z2yAbEA==","signatures":[{"sig":"MEUCIQDlq/YHo7ERHzdN/bXQPJXyyVJViqa+gI9XKiuyuRAWFAIgA+F5+U+AGN29JEHvl4DfDzpvjL1Ak9foAoiJ/ah8mrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9708},"main":"index.js","types":"./@types/cookie-cutter.d.ts","gitHead":"4eff99bbff422872875411e8c6fb2c35c71e3d70","_npmUser":{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"},"repository":{"url":"git://github.com/boiseitguru/cookie-cutter.git","type":"git"},"_npmVersion":"10.8.2","description":"Browserify-compatible module to get and set cookies in the browser","directories":{},"_nodeVersion":"20.19.5","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cookie-cutter_0.3.0_1762185917469_0.20495977764181705","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@boiseitguru/cookie-cutter","description":"Browserify-compatible module to get and set cookies in the browser","version":"0.3.1","repository":{"type":"git","url":"git://github.com/boiseitguru/cookie-cutter.git"},"main":"index.js","types":"./@types/cookie-cutter.d.ts","keywords":["cookie","browser","browserify"],"scripts":{"test":"tape test/*.test.js"},"devDependencies":{"tape":"^5.8.0"},"license":"MIT","author":{"name":"BoiseITGuru","email":"dev@BoiseITGuru.com","url":"http://boiseitguru.com"},"_id":"@boiseitguru/cookie-cutter@0.3.1","gitHead":"b06fede3a84e32e3a2716bda3857899bd103081f","bugs":{"url":"https://github.com/boiseitguru/cookie-cutter/issues"},"homepage":"https://github.com/boiseitguru/cookie-cutter#readme","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-+kC0aflk5cXxIAlRiTLjXpZqpEAnTiPLaNNXt8O0BpBHQwp8xdM++gXT9kvjclrJgyWc9hKnLWVwbdTv9IWKGg==","shasum":"ea60ec974c872593ef2ca1707636d26c17b7af45","tarball":"https://registry.npmjs.org/@boiseitguru/cookie-cutter/-/cookie-cutter-0.3.1.tgz","fileCount":5,"unpackedSize":12274,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBnZzFnQ/u44+H5bSUe9mqhpfT8pVqV/GuGxPGlhtYwjAiAd9+FYhVdFQYyoLeD1z6SrgZFrqqiQyp/4QwlGZKJWhw=="}]},"_npmUser":{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"},"directories":{},"maintainers":[{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cookie-cutter_0.3.1_1762204612178_0.9881817376336521"},"_hasShrinkwrap":false}},"time":{"created":"2023-07-09T21:49:56.145Z","modified":"2025-11-03T21:16:52.616Z","0.2.0":"2023-07-09T21:49:56.350Z","0.2.1":"2023-07-12T17:15:22.393Z","0.2.2":"2024-01-02T21:26:23.630Z","0.2.3":"2024-01-02T22:59:56.597Z","0.3.0":"2025-11-03T16:05:17.743Z","0.3.1":"2025-11-03T21:16:52.392Z"},"bugs":{"url":"https://github.com/boiseitguru/cookie-cutter/issues"},"author":{"name":"BoiseITGuru","email":"dev@BoiseITGuru.com","url":"http://boiseitguru.com"},"license":"MIT","homepage":"https://github.com/boiseitguru/cookie-cutter#readme","keywords":["cookie","browser","browserify"],"repository":{"type":"git","url":"git://github.com/boiseitguru/cookie-cutter.git"},"description":"Browserify-compatible module to get and set cookies in the browser","maintainers":[{"name":"boiseitguru","email":"epoch-platens0o@icloud.com"}],"readme":"# cookie-cutter\n\n[![npm version](https://img.shields.io/npm/v/%40boiseitguru/cookie-cutter.svg)](https://www.npmjs.com/package/@boiseitguru/cookie-cutter)\n[![bundle size](https://img.shields.io/bundlephobia/minzip/@boiseitguru/cookie-cutter.svg)](https://bundlephobia.com/package/@boiseitguru/cookie-cutter)\n\nTiny, dependency-free helper for reading and writing cookies in browsers or any environment that exposes a `document`-style interface.\n\n## Table of Contents\n- [Features](#features)\n- [Release Highlights (0.3.x)](#release-highlights-03x)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [API Reference](#api-reference)\n- [Cookie Options](#cookie-options)\n- [Examples](#examples)\n- [TypeScript](#typescript)\n- [Testing](#testing)\n- [Contributing](#contributing)\n- [Project Origins & Credits](#project-origins--credits)\n- [License](#license)\n\n## Features\n- Zero runtime dependencies and ES5-friendly source so it bundles cleanly with legacy toolchains.\n- Works in browsers, Browserify-style bundles, and Node.js when you provide a document stub.\n- Built-in TypeScript declarations with the same API shape as the JavaScript module.\n- Partitioned CHIPS attribute support plus SameSite guardrails to keep you aligned with current browser requirements.\n\n## Release Highlights (0.3.x)\n- Adds the `partitioned` attribute so cookies can opt into CHIPS while matching Mozilla’s Set-Cookie guidance.\n- Warns when `SameSite: \"None\"` is paired without `secure: true` and provides `cookie.configure({ suppressInsecureSameSiteNoneWarning: true })` to silence the warning in local HTTP setups.\n- Introduces a top-level `cookie.clear` helper (including TypeScript declarations) and guarantees deletes force `Max-Age=0`.\n- Extends serialization to cover `HttpOnly`, `Max-Age`, and `SameSite` attributes so emitted cookies reflect modern browser expectations.\n\n## Installation\n\n```sh\nnpm install @boiseitguru/cookie-cutter\n```\n\n## Quick Start\n\n```javascript\n// CommonJS\nvar cookie = require(\"@boiseitguru/cookie-cutter\");\n\nvar visits = parseInt(cookie.get(\"visits\"), 10) || 0;\ncookie.set(\"visits\", visits + 1, { path: \"/\" });\n```\n\n```javascript\n// ES Modules (modern bundlers)\nimport cookie from \"@boiseitguru/cookie-cutter\";\n\nconst visits = Number(cookie.get(\"visits\") || 0) + 1;\ncookie.set(\"visits\", String(visits), { path: \"/\" });\n```\n\n## API Reference\n\n### `cookie(document?: Document | string)`\nCreates a cookie controller bound to the supplied document or cookie string. If no argument is given, an empty cookie jar is created.\nWhen you import/require the module in a browser, the default export is already\nbound to the global `document`, so you can call `cookie.get`, `cookie.set`,\nand `cookie.clear` directly as shown in the Quick Start.\n\n### `cookie.get(key: string): string | undefined`\nReturns the value stored for `key`, or `undefined` if the cookie is not set.\n\n### `cookie.set(key: string, value: string, options?: CookieOptions): string`\nSerializes `key=value` with any supplied cookie attributes, assigns it to `document.cookie`, and returns the serialized string. When `options.SameSite === \"None\"` and `options.secure` is not `true`, a warning is printed to `console.warn` to anticipate upcoming enforcement. Setting `options.partitioned === true` appends the `Partitioned` attribute.\n\n### `cookie.clear(key: string, options?: CookieOptions): string`\nClears the cookie for `key` by delegating to `set` with an expiry in the past and `Max-Age = 0`. Pass the same options you used when setting the cookie (such as `path` or `domain`) so the browser targets the correct cookie.\n\n### `cookie.configure(options: CookieConfig): void`\nAdjusts global defaults for future cookie operations, such as silencing SameSite warnings during local development.\n\n```typescript\ntype CookieConfig = {\n  suppressInsecureSameSiteNoneWarning?: boolean;\n};\n```\n\n- `suppressInsecureSameSiteNoneWarning`: When `true`, disables the warning emitted by `cookie.set` for `SameSite: \"None\"` cookies missing the `secure` flag. Useful for non-production development over HTTP.\n\n## Cookie Options\n\n| Option      | Type             | Description                                                                                          |\n|-------------|------------------|------------------------------------------------------------------------------------------------------|\n| `expires`   | `Date`           | Sets the cookie expiry date.                                                                         |\n| `path`      | `string`         | Restricts the cookie to a particular path.                                                           |\n| `domain`    | `string`         | Restricts the cookie to a particular domain.                                                         |\n| `secure`    | `boolean`        | Marks the cookie as secure-only. Required by browsers when `SameSite` is `\"None\"`.                   |\n| `HttpOnly`  | `boolean`        | Adds the `HttpOnly` attribute.                                                                       |\n| `MaxAge`    | `number`         | Sets the cookie lifetime (in seconds) via `Max-Age`.                                                 |\n| `SameSite`  | `\"Strict\" \\| \"Lax\" \\| \"None\"` | Controls cross-site cookie behavior.                                                     |\n| `partitioned` | `boolean`     | Appends the `Partitioned` attribute for CHIPS storage (requires `secure: true` in supporting browsers). |\n\n## Examples\n\n### Partitioned SameSite=None Cookie\n\n```javascript\nvar cookie = require(\"@boiseitguru/cookie-cutter\");\nvar api = cookie(document);\n\napi.set(\"session\", \"abc123\", {\n  secure: true,\n  SameSite: \"None\",\n  partitioned: true\n});\n```\n\nThis combination satisfies current Mozilla Set-Cookie expectations for partitioned cookies.\n\n### Suppressing Warnings During Local Development\n\n```javascript\nvar cookie = require(\"@boiseitguru/cookie-cutter\");\n\ncookie.configure({ suppressInsecureSameSiteNoneWarning: true });\nvar api = cookie({ cookie: \"\" });\n\napi.set(\"token\", \"dev-only\", { SameSite: \"None\" });\n```\n\n## TypeScript\n\nType definitions ship with the package. Import the module using either default or CommonJS syntax and enjoy auto-complete for cookie options, including `partitioned` and `SameSite`.\n\n```typescript\nimport cookie = require(\"@boiseitguru/cookie-cutter\");\n\nconst api = cookie();\napi.set(\"theme\", \"dark\", { SameSite: \"Lax\", MaxAge: 300 });\n```\n\n## Testing\n\nRun the Tape test suite:\n\n```sh\nnpm test\n```\n\n## Contributing\n- Keep the ES5 coding style: two-space indentation, `var` declarations, double-quoted strings, and explicit semicolons.\n- Update TypeScript declarations whenever the runtime API changes.\n- Add focused tests alongside functional changes so behavior stays locked down.\n\n## Project Origins & Credits\n\nThis repository preserves the original cookie-cutter module by James Halliday (substack) to ensure ongoing availability, with TypeScript support and modern cookie attribute updates maintained here.\n\n## License\n\nMIT. See the [LICENSE](./LICENSE) file for details.\n","readmeFilename":"README.md"}