Пример
cookie 1.1.1: parse
Проверенный пример — npm cookie 1.1.1: parse. Контракт выполнен на node 22 · linux debian/x64 · docker и пройден: cookie.parse parses simple key-value cookie…
sha256:0d89a962f11b13df9ea5f7344005d2257c4b237527da459fc45d9ac528884abd
Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла.
Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди.
MIT-0
Свидетельства выполнения
Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.
- Основа свидетельства
- Подписанный контракт пройден
- Квитанции проверки
- 1
- Ключи подписи, собравшие его
- 1
Заявленная среда
linux 24 · ubuntu · glibc 2.39 x64 npm
Среды запусков проверки
| Окружение | Контракт | Этапы | Запуск |
|---|---|---|---|
| node 22 · linux debian/x64 · docker ed25519:c1973797be207ac4 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · node-typescript@1node:22@sha256:8a34c4ab3ea2… |
2026-09-05 |
Кейс
HOW- Цель
- verify cookie.parse in pkg:npm/cookie@1.1.1
- Пакеты
- Символы
-
- cookie.parse
- Создан
- 2026-09-05T23:56:48Z
Контракт
- cookie.parse parses simple key-value cookie pairs separated by semicolons
- cookie.parse trims leading and trailing whitespace around names and values
- cookie.parse decodes URL-encoded values by default
- cookie.parse retains original string when percent-decoding fails
- cookie.parse assigns only the first value when duplicate cookie names appear
- cookie.parse supports custom decode function option to transform values
- cookie.parse handles empty values and empty or short header strings gracefully
Файлы
- PROMPT.md
- csx.json
- package-lock.json
- package.json
- spec.json
- src/index.mjs
- test/contract.mjs
Исходный код
Clean-room public code sample — generation instructions
Write a brand-new, minimal, self-contained code sample in this clean-room directory.
Do not copy, paraphrase, or reference any existing project source. Work only from this spec.
A csx.json manifest scaffold already exists. Do not recreate it from memory. Preserve its case.goal, packages and symbols; fill its empty case.contract with exact assertions and correct its environment, commands and verifierAdapter for the files you generate.
Goal: verify cookie.parse in pkg:npm/cookie@1.1.1
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:npm/cookie@1.1.1
Demonstrate these symbols/APIs:
- cookie.parse
Rules:
- One focused purpose; the smallest project that proves the goal.
- Include a contract test (test/contract.*) that runs OFFLINE and exits 0 exactly when the goal behavior works.
- Pin every dependency with a lockfile so resolution is reproducible.
- No secrets, credentials, or tokens. No real URLs (only example.com or localhost). No absolute paths.
- No personal names, emails, company names, or project identifiers of any kind.
- No binaries and no generated output (node_modules, dist, target, venv, .git, .env).
- Keep it under 200 files and 256KB packed.
{"case":{"caseId":"case:sha256:7793bf74f3f433cf60a8c89255d713904c0e946342f867f5ae4e2f7add0c3bba","contract":["cookie.parse parses simple key-value cookie pairs separated by semicolons","cookie.parse trims leading and trailing whitespace around names and values","cookie.parse decodes URL-encoded values by default","cookie.parse retains original string when percent-decoding fails","cookie.parse assigns only the first value when duplicate cookie names appear","cookie.parse supports custom decode function option to transform values","cookie.parse handles empty values and empty or short header strings gracefully"],"goal":"verify cookie.parse in pkg:npm/cookie@1.1.1","kind":"HOW","packages":["pkg:npm/cookie@1.1.1"],"schemaVersion":1,"symbols":["cookie.parse"]},"contractCommand":["node","test/contract.mjs"],"environment":{"arch":"x64","distro":"ubuntu","ecosystem":"npm","libc":"glibc","libcVersion":"2.39","os":"linux","osVersionBucket":"24","packageManager":"npm","schemaVersion":1},"license":"MIT-0","packages":["pkg:npm/cookie@1.1.1"],"schemaVersion":1,"subject":"pkg:npm/cookie@1.1.1","symbols":["cookie.parse"],"verifierAdapter":"node-typescript@1"}
{
"name": "sample-cookie-parse",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sample-cookie-parse",
"version": "1.0.0",
"license": "MIT-0",
"dependencies": {
"cookie": "1.1.1"
}
},
"node_modules/cookie": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz",
"integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
}
}
}
{
"name": "sample-cookie-parse",
"version": "1.0.0",
"type": "module",
"private": true,
"license": "MIT-0",
"scripts": {
"test": "node test/contract.mjs"
},
"dependencies": {
"cookie": "1.1.1"
}
}
{
"schemaVersion": 1,
"goal": "verify cookie.parse in pkg:npm/cookie@1.1.1",
"kind": "HOW",
"packages": [
"pkg:npm/cookie@1.1.1"
],
"symbols": [
"cookie.parse"
]
}
import * as cookie from 'cookie';
const { parse } = cookie;
/**
* Parse a Cookie header string into an object of key-value pairs.
* @param {string} str Cookie header string
* @param {import('cookie').ParseOptions} [options] Parse options
* @returns {Record<string, string | undefined>} Parsed cookies object
*/
export function parseCookieHeader(str, options) {
return parse(str, options);
}
export { cookie, parse };
export default parse;
import assert from 'node:assert/strict';
import { cookie, parse, parseCookieHeader } from '../src/index.mjs';
// 1. cookie.parse parses simple key-value cookie pairs separated by semicolons
{
const result = parse('foo=bar; equation=E%3Dmc%5E2');
assert.equal(result.foo, 'bar');
assert.equal(result.equation, 'E=mc^2');
const helperResult = parseCookieHeader('user=guest; session=active');
assert.equal(helperResult.user, 'guest');
assert.equal(helperResult.session, 'active');
}
// 2. cookie.parse trims leading and trailing whitespace around names and values
{
const result = cookie.parse(' theme = dark ; lang = en-US ');
assert.equal(result.theme, 'dark');
assert.equal(result.lang, 'en-US');
}
// 3. cookie.parse decodes URL-encoded values by default
{
const result = parse('token=abc%20123%2Fxyz; special=%24%26%2B');
assert.equal(result.token, 'abc 123/xyz');
assert.equal(result.special, '$&+');
}
// 4. cookie.parse retains original string when percent-decoding fails
{
// Malformed percent-encoded sequences fallback to raw string
const result = parse('bad=%E0%A4%A; regular=valid');
assert.equal(result.bad, '%E0%A4%A');
assert.equal(result.regular, 'valid');
}
// 5. cookie.parse assigns only the first value when duplicate cookie names appear
{
const result = parse('color=blue; color=red; color=green');
assert.equal(result.color, 'blue');
}
// 6. cookie.parse supports custom decode function option to transform values
{
const result = parse('env=PROD; flag=TRUE', {
decode: (val) => val.toLowerCase()
});
assert.equal(result.env, 'prod');
assert.equal(result.flag, 'true');
}
// 7. cookie.parse handles empty values and empty or short header strings gracefully
{
const emptyValues = parse('a=; b=; c=foo');
assert.equal(emptyValues.a, '');
assert.equal(emptyValues.b, '');
assert.equal(emptyValues.c, 'foo');
const emptyString = parse('');
assert.deepEqual(Object.keys(emptyString), []);
const singleChar = parse('x');
assert.deepEqual(Object.keys(singleChar), []);
}
console.log('Contract assertions passed.');
Исходный сидер
аноним