Skip to content

Commit 7ff1629

Browse files
committed
Add benchmark for parseSetCookie
1 parent 6fea506 commit 7ff1629

File tree

7 files changed

+174
-81
lines changed

7 files changed

+174
-81
lines changed

package-lock.json

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/parse-top.json

Lines changed: 0 additions & 22 deletions
This file was deleted.

scripts/top-cookie.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"accounts.google.com": "__Aaaa-AAAA=0:aA00a0AAaAaA0aAAAAaaaaAAa00AaA:0aAAaa0aaa_aA-Aa",
3+
"apple.com": "aaa=AA",
4+
"cloudflare.com": "_aaaa_aaaaaa=aaaaaa; _bb=BB1.1.11bb111b-b1b1-1bb1-bb1b-b11bb1b11111; ccc_cccccc-ccccccccc_c2={\"cccc_cc2\":{\"c\":\"22cc222c-c2c2-2cc2-cc2c-c22cc2c22222\",\"c\":2222222222222}}; ddd_ddddd={\"DdDD_dddd\":{\"d\":\"DdD3Ddd3DDDdDDddDDD3DDD3DDDdDDd3DDd3DDd3DDD3DdddDDDdDDDDDDdddddDDddDDdD3DDDdDddddddDDd==\",\"d\":3333333333333}}; eeeeee_4EE44E44444E44444E444EE4_EeeeeEee_eeeeeeee=EeE4Eee4EEEeEEeeEEE4EEE4EEEeEEe4EEe4EEe4EEE4EeeeEEEeEEEEEEeeeeeEEeeEEeE4EEEeEeeeeeeEEe==; __ff_ff=Fff.FfFfFffFFFffFFffF5fFFfFfFf5ffFfFFfffF5f-5555555555-5.5.5.5-f5FfF5F5Ff5Ff5fffFFfff5Ff5f5FFFFFFFffFff5FFfFFffff5f5f5FffFF5FffFFFffffffFfffFf5ffff5.fff5ffFff5ff5ffffFffF5F55ffffF_F5FfFFFFFff",
5+
"docs.google.com": "__Aaaa-AAAA=0:AaaaaaAAaa0aaa0a0aAAAaaaa0a0aa:0AaaaaAaaaaAaaa0",
6+
"drive.google.com": "__Aaaa-AAAA=0:AaA-aaAa-aA0AaaaaAaAAAAAaaAAaA:aaaaAa0aaaa000A0",
7+
"linkedin.com": "AAAAAAAAAA=aaaa:0000000000000000000; bbbb=b=1&bbbb=bb-bb; ccccccc=\"c=2&22c222cc-cc22-2ccc-22c2-2cc22ccccc22\"; dddddddd=\"d=3&3333333333333333d33333-d33d-33dd-3333-d33d3333333dDDDdd333D-DD3DdD3dddDDD3ddDd_D3d\"; eeee=\"e=EEEE44:e=E:e=E:e=E:e=E:e=4444:e=4:e=4:e=4444444444:e=4444444444:e=4:eee=EEEEEeE4Eee_Eeeee44EEeeEE4EEE4Ee\"; __ff_ff=f55_5f5f5fFff5fFFfF5f.FFFf5fFfF5F5Ff5_ff.Ff-5555555555-5.5.5.5-.FF5F_FFffffFFfFf.f55ffFFFf5ff5FFffFFFfFf5f5FFf_.FFf5FfFffFf5ffffffF5f5fFFF5FFfFFF55fffFfFFf5FfF55fFFfFFffF",
8+
"play.google.com": "AAA=000=AaaaaaAA-0AaAAa0AA0aAaaAAaaAaaAAAAAAaaaaAAaAaA0aA-AAaaAaaaAAAaAa0a-_AaaaA0aaaaaaaA0a0aaAAA0aaaAaAAaaAAaa00A0aAa0a0AAaAAaAaaaA0aAaaaAaAAAAAAAAa0AaaA0aAaAaaaaaaAa0aAa0AAaAAAaAAAAaA0aAAa0aAAaa00Aa0AaAA0",
9+
"policies.google.com": "AAA=000=aaA0-aAaaA0Aa0AaAaaaaaAa0aAaaAaaaAaa0aAa0AaaAAaaa0aAa00aAAa00aaaaA0aAAaaaa_0AaAaa0AAAAaaAAAAa0Aaaa-AaAaaAAaa00AA0AaaaA0aa00aAaA00aA0aaAAAAAa0AaAaaaaaaA0aAaAA_aAAAA0AaaAaaAAAaAAaaAAa_AaAAA0aAAAa0aaaaAaaAAA00AaaAAA",
10+
"support.google.com": "AAA=000=AaAaAA0AA0AA0000aaAAaa0a0aA0aA0AaaAaAAAaaaAAAA-aAaaAA_00aaA0_-Aa0AA0A0AAAAAAaaaaA0AAaAAaAA0aaa00aAaAaAAAAaaaAAAa0aAaaaaA0_AaaaaAaaaaAa_AA0aaa0aA0a00a00a0aaAAa0AAaaaAAaaAA_0-aaa00aAAaAaaa0AA-AAaA0aaa; BBB=111=BbBbBB1BB1BB1111bbBBbb1b1bB1bB1BbbBbBBBbbbBBBB-bBbbBB_11bbB1_-Bb1BB1B1BBBBBBbbbbB1BBbBBbBB1bbb11bBbBbBBBBbbbBBBb1bBbbbbB1_BbbbbBbbbbBb_BB1bbb1bB1b11b11b1bbBBb1BBbbbBBbbBB_1-bbb11bBBbBbbb1BB-BBbB1bbb",
11+
"wa.me": "aa_aaaa_aaaa=aa",
12+
"whatsapp.com": "aa_aaaa=aaAaaA0aAaAAa0aAaaAA0A; bb_bbbb_bbbb=bb; cc_cc=2c22c2cc-cc2c-2c22-cc22-c22cc22c2c22",
13+
"www.google.com": "AAA=AaAaa0aaAAaA0A0_aA0Aaaa0Aaa0aaaaA0aa0Aaa0aAa0aaaaaAAaAa0AA; BBB=111=BbBbb1bb-bBbBB1b1b1_1BB1bBBBbbBBBbbbbb_b1BBbbBbbBb11-Bbbb1bbBB1bBbBBBb-111bb11BbbbBbBBBBbB11B1Bbb1B1bBBBBbbbbbB1Bbbb_b1bBbBBBbbbBBbb1bbbbbBBB1BB_bBBbBBbb1bbB1Bbb1bBBbBBb1BbBbBBBBb_BbBbbbbbB11bbbBbb1BBbBBb1B1BbBbB-B-B",
14+
"youtu.be": "AAA=0; BBB=1BBbB11Bbbb; __Cccccc-CCC=; DDDDDDD_DDDD3_DDDD=DDDdDDdDdd3; EEEEEEE_EEEEEEE_EEEEEEEE=EeEEEeEEEeEeEe%22%22; __Ffffff-FFFFFFF_FFFFF=FFfffFfff5F5FFFFfF_ffffFFffFfF_ffffFFf%22%22",
15+
"youtube.com": "AAA=0; BBB=bBBbbbb1BbB; __Cccccc-CCC=; DDDDDDD_DDDD3_DDDD=dDdDddddD3D; EEEEEEE_EEEEEEE_EEEEEEEE=EeEEEeEEEeEeEE%22%22; __Ffffff-FFFFFFF_FFFFF=FFf5fFF5f_FffFFFfffF5555ffFFfffF5555ffF%22"
16+
}

scripts/top-set-cookie.json

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
{
2+
"accounts.google.com": [
3+
"__Aaaa-AAAA=0:aA00a0AAaAaA0aAAAAaaaaAAa00AaA:0aAAaa0aaa_aA-Aa; Expires=Sun, 26-Sep-2027 19:02:11 GMT; Path=/; Secure; HttpOnly; Priority=HIGH"
4+
],
5+
"apple.com": ["aaa=AA; path=/; domain=.apple.com"],
6+
"cloudflare.com": [
7+
"_aaaa_aaaaaa=aaaaaa; Max-Age=1209600; path=/; domain=.www.cloudflare.com; SameSite=Strict; Secure",
8+
"_bb=BB1.1.11bb111b-b1b1-1bb1-bb1b-b11bb1b11111; Domain=.cloudflare.com; Expires=Mon, 26 Oct 2026 19:02:07 GMT; Path=/",
9+
"ccc_cccccc-ccccccccc_c2={\"cccc_cc2\":{\"c\":\"22cc222c-c2c2-2cc2-cc2c-c22cc2c22222\",\"c\":2222222222222}}; Domain=.cloudflare.com; Expires=Mon Oct 26 2026 19:02:07 GMT+0000 (Coordinated Universal Time); HttpOnly; SameSite=Lax; Path=/; Secure",
10+
"ddd_ddddd={\"DdDD_dddd\":{\"d\":\"DdD3Ddd3DDDdDDddDDD3DDD3DDDdDDd3DDd3DDd3DDD3DdddDDDdDDDDDDdddddDDddDDdD3DDDdDddddddDDd==\",\"d\":3333333333333}}; Domain=.cloudflare.com; Expires=Mon Oct 26 2026 19:02:07 GMT+0000 (Coordinated Universal Time); HttpOnly; SameSite=Lax; Path=/; Secure",
11+
"eeeeee_4EE44E44444E44444E444EE4_EeeeeEee_eeeeeeee=EeE4Eee4EEEeEEeeEEE4EEE4EEEeEEe4EEe4EEe4EEE4EeeeEEEeEEEEEEeeeeeEEeeEEeE4EEEeEeeeeeeEEe==; Domain=.cloudflare.com; Expires=Mon, 26 Oct 2026 19:02:07 GMT; Path=/; Secure; SameSite=Lax",
12+
"__ff_ff=Fff.FfFfFffFFFffFFffF5fFFfFfFf5ffFfFFfffF5f-5555555555-5.5.5.5-f5FfF5F5Ff5Ff5fffFFfff5Ff5f5FFFFFFFffFff5FFfFFffff5f5f5FffFF5FffFFFffffffFfffFf5ffff5.fff5ffFff5ff5ffffFffF5F55ffffF_F5FfFFFFFff; path=/; expires=Fri, 26-Sep-25 19:32:08 GMT; domain=.www.cloudflare.com; HttpOnly; Secure"
13+
],
14+
"docs.google.com": [
15+
"__Aaaa-AAAA=0:AaaaaaAAaa0aaa0a0aAAAaaaa0a0aa:0AaaaaAaaaaAaaa0; Expires=Sun, 26-Sep-2027 19:02:09 GMT; Path=/; Secure; HttpOnly; Priority=HIGH"
16+
],
17+
"drive.google.com": [
18+
"__Aaaa-AAAA=0:AaA-aaAa-aA0AaaaaAaAAAAAaaAAaA:aaaaAa0aaaa000A0; Expires=Sun, 26-Sep-2027 19:02:12 GMT; Path=/; Secure; HttpOnly; Priority=HIGH"
19+
],
20+
"linkedin.com": [
21+
"AAAAAAAAAA=aaaa:0000000000000000000; SameSite=None; Path=/; Domain=.www.linkedin.com; Secure",
22+
"bbbb=b=1&bbbb=bb-bb; SameSite=None; Path=/; Domain=linkedin.com; Secure",
23+
"ccccccc=\"c=2&22c222cc-cc22-2ccc-22c2-2cc22ccccc22\"; domain=.linkedin.com; Path=/; Secure; Expires=Sat, 26-Sep-2026 19:02:05 GMT; SameSite=None",
24+
"dddddddd=\"d=3&3333333333333333d33333-d33d-33dd-3333-d33d3333333dDDDdd333D-DD3DdD3dddDDD3ddDd_D3d\"; domain=.www.linkedin.com; Path=/; Secure; Expires=Sat, 26-Sep-2026 19:02:05 GMT; HttpOnly; SameSite=None",
25+
"eeee=\"e=EEEE44:e=E:e=E:e=E:e=E:e=4444:e=4:e=4:e=4444444444:e=4444444444:e=4:eee=EEEEEeE4Eee_Eeeee44EEeeEE4EEE4Ee\"; Expires=Sat, 27 Sep 2025 19:02:05 GMT; domain=.linkedin.com; Path=/; Secure",
26+
"__ff_ff=f55_5f5f5fFff5fFFfF5f.FFFf5fFfF5F5Ff5_ff.Ff-5555555555-5.5.5.5-.FF5F_FFffffFFfFf.f55ffFFFf5ff5FFffFFFfFf5f5FFf_.FFf5FfFffFf5ffffffF5f5fFFF5FFfFFF55fffFfFFf5FfF55fFFfFFffF; path=/; expires=Fri, 26-Sep-25 19:32:05 GMT; domain=.linkedin.com; HttpOnly; Secure"
27+
],
28+
"play.google.com": [
29+
"AAA=000=AaaaaaAA-0AaAAa0AA0aAaaAAaaAaaAAAAAAaaaaAAaAaA0aA-AAaaAaaaAAAaAa0a-_AaaaA0aaaaaaaA0a0aaAAA0aaaAaAAaaAAaa00A0aAa0a0AAaAAaAaaaA0aAaaaAaAAAAAAAAa0AaaA0aAaAaaaaaaAa0aAa0AAaAAAaAAAAaA0aAAa0aAAaa00Aa0AaAA0; expires=Sat, 28-Mar-2026 19:02:09 GMT; path=/; domain=.google.com; HttpOnly"
30+
],
31+
"policies.google.com": [
32+
"AAA=000=aaA0-aAaaA0Aa0AaAaaaaaAa0aAaaAaaaAaa0aAa0AaaAAaaa0aAa00aAAa00aaaaA0aAAaaaa_0AaAaa0AAAAaaAAAAa0Aaaa-AaAaaAAaa00AA0AaaaA0aa00aAaA00aA0aaAAAAAa0AaAaaaaaaA0aAaAA_aAAAA0AaaAaaAAAaAAaaAAa_AaAAA0aAAAa0aaaaAaaAAA00AaaAAA; expires=Sat, 28-Mar-2026 19:02:10 GMT; path=/; domain=.google.com; HttpOnly"
33+
],
34+
"support.google.com": [
35+
"AAA=000=AaAaAA0AA0AA0000aaAAaa0a0aA0aA0AaaAaAAAaaaAAAA-aAaaAA_00aaA0_-Aa0AA0A0AAAAAAaaaaA0AAaAAaAA0aaa00aAaAaAAAAaaaAAAa0aAaaaaA0_AaaaaAaaaaAa_AA0aaa0aA0a00a00a0aaAAa0AAaaaAAaaAA_0-aaa00aAAaAaaa0AA-AAaA0aaa; expires=Sat, 28-Mar-2026 19:02:08 GMT; path=/; domain=.google.com; HttpOnly",
36+
"BBB=111=BbBbBB1BB1BB1111bbBBbb1b1bB1bB1BbbBbBBBbbbBBBB-bBbbBB_11bbB1_-Bb1BB1B1BBBBBBbbbbB1BBbBBbBB1bbb11bBbBbBBBBbbbBBBb1bBbbbbB1_BbbbbBbbbbBb_BB1bbb1bB1b11b11b1bbBBb1BBbbbBBbbBB_1-bbb11bBBbBbbb1BB-BBbB1bbb; expires=Sat, 28-Mar-2026 19:02:08 GMT; path=/; domain=.google.com; HttpOnly"
37+
],
38+
"wa.me": [
39+
"aa_aaaa_aaaa=aa; expires=Fri, 03-Oct-2025 19:02:11 GMT; Max-Age=604800; path=/; domain=.whatsapp.com; secure"
40+
],
41+
"whatsapp.com": [
42+
"aa_aaaa=aaAaaA0aAaAAa0aAaaAA0A; path=/; domain=.whatsapp.com; secure; httponly",
43+
"bb_bbbb_bbbb=bb; expires=Fri, 03-Oct-2025 19:02:08 GMT; Max-Age=604800; path=/; domain=.whatsapp.com; secure",
44+
"cc_cc=2c22c2cc-cc2c-2c22-cc22-c22cc22c2c22; expires=Thu, 25-Dec-2025 19:02:08 GMT; Max-Age=7776000; path=/; domain=.www.whatsapp.com; secure; httponly; SameSite=Lax"
45+
],
46+
"www.google.com": [
47+
"AAA=AaAaa0aaAAaA0A0_aA0Aaaa0Aaa0aaaaA0aa0Aaa0aAa0aaaaaAAaAa0AA; expires=Wed, 25-Mar-2026 19:02:04 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax",
48+
"BBB=111=BbBbb1bb-bBbBB1b1b1_1BB1bBBBbbBBBbbbbb_b1BBbbBbbBb11-Bbbb1bbBB1bBbBBBb-111bb11BbbbBbBBBBbB11B1Bbb1B1bBBBBbbbbbB1Bbbb_b1bBbBBBbbbBBbb1bbbbbBBB1BB_bBBbBBbb1bbB1Bbb1bBBbBBb1BbBbBBBBb_BbBbbbbbB11bbbBbb1BBbBBb1B1BbBbB-B-B; expires=Sat, 28-Mar-2026 19:02:04 GMT; path=/; domain=.google.com; HttpOnly"
49+
],
50+
"youtu.be": [
51+
"AAA=0; Domain=.youtube.com; Expires=Fri, 26-Sep-2025 19:32:10 GMT; Path=/; Secure; HttpOnly",
52+
"BBB=1BBbB11Bbbb; Domain=.youtube.com; Path=/; Secure; HttpOnly; SameSite=none",
53+
"__Cccccc-CCC=; Domain=.youtube.com; Expires=Sat, 31-Dec-2022 19:02:10 GMT; Path=/; Secure; HttpOnly; SameSite=lax",
54+
"DDDDDDD_DDDD3_DDDD=DDDdDDdDdd3; Domain=.youtube.com; Expires=Wed, 25-Mar-2026 19:02:10 GMT; Path=/; Secure; HttpOnly; SameSite=none",
55+
"EEEEEEE_EEEEEEE_EEEEEEEE=EeEEEeEEEeEeEe%22%22; Domain=.youtube.com; Expires=Wed, 25-Mar-2026 19:02:10 GMT; Path=/; Secure; HttpOnly; SameSite=none",
56+
"__Ffffff-FFFFFFF_FFFFF=FFfffFfff5F5FFFFfF_ffffFFffFfF_ffffFFf%22%22; Domain=youtube.com; Expires=Wed, 25-Mar-2026 19:02:10 GMT; Path=/; Secure; HttpOnly; SameSite=none; Partitioned"
57+
],
58+
"youtube.com": [
59+
"AAA=0; Domain=.youtube.com; Expires=Fri, 26-Sep-2025 19:32:04 GMT; Path=/; Secure; HttpOnly",
60+
"BBB=bBBbbbb1BbB; Domain=.youtube.com; Path=/; Secure; HttpOnly; SameSite=none",
61+
"__Cccccc-CCC=; Domain=.youtube.com; Expires=Sat, 31-Dec-2022 19:02:04 GMT; Path=/; Secure; HttpOnly; SameSite=lax",
62+
"DDDDDDD_DDDD3_DDDD=dDdDddddD3D; Domain=.youtube.com; Expires=Wed, 25-Mar-2026 19:02:04 GMT; Path=/; Secure; HttpOnly; SameSite=none",
63+
"EEEEEEE_EEEEEEE_EEEEEEEE=EeEEEeEEEeEeEE%22%22; Domain=.youtube.com; Expires=Wed, 25-Mar-2026 19:02:04 GMT; Path=/; Secure; HttpOnly; SameSite=none",
64+
"__Ffffff-FFFFFFF_FFFFF=FFf5fFF5f_FffFFFfffF5555ffFFfffF5555ffF%22; Domain=youtube.com; Expires=Wed, 25-Mar-2026 19:02:04 GMT; Path=/; Secure; HttpOnly; SameSite=none; Partitioned"
65+
]
66+
}

scripts/update-benchmark.js

Lines changed: 70 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,89 @@
11
"use strict";
22

3-
const fs = require("fs");
3+
const fs = require("fs/promises");
44
const http = require("http");
55
const https = require("https");
66
const path = require("path");
77
const topSites = require("top-sites");
88
const url = require("url");
99

10-
const BENCH_COOKIES_FILE = path.join(__dirname, "parse-top.json");
11-
const domains = topSites.slice(0, 30).map((x) => x.rootDomain);
12-
13-
getAllCookies(domains, function (err, cookies) {
14-
if (err) throw err;
15-
16-
const str = JSON.stringify(
17-
Object.fromEntries(
18-
Object.keys(cookies)
19-
.sort()
20-
.map((key) => [key, cookies[key]])
21-
.concat([["example.com", ""]]),
22-
),
23-
null,
24-
2,
10+
const BENCH_COOKIES_FILE = path.join(__dirname, "top-cookie.json");
11+
const BENCH_SET_COOKIES_FILE = path.join(__dirname, "top-set-cookie.json");
12+
const domains = topSites.slice(0, 20).map((x) => x.rootDomain);
13+
14+
async function main() {
15+
const [cookies, setCookies] = await getAllCookies(domains);
16+
17+
await fs.writeFile(
18+
BENCH_COOKIES_FILE,
19+
JSON.stringify(sortObject(cookies), null, 2) + "\n",
2520
);
2621

27-
fs.writeFile(BENCH_COOKIES_FILE, `${str}\n`, function (err) {
28-
if (err) throw err;
29-
console.log("Cookies saved to", BENCH_COOKIES_FILE);
30-
process.exit();
31-
});
32-
});
22+
await fs.writeFile(
23+
BENCH_SET_COOKIES_FILE,
24+
JSON.stringify(sortObject(setCookies), null, 2) + "\n",
25+
);
26+
27+
console.log("Cookies saved");
28+
process.exit();
29+
}
30+
31+
main();
3332

34-
function get(href, callback) {
33+
function get(href) {
3534
const protocol = url.parse(href, false, true).protocol;
3635
const proto = protocol === "https:" ? https : http;
3736

38-
proto
39-
.get(href)
40-
.on("error", callback)
41-
.on("response", function (res) {
42-
if (
43-
res.headers.location &&
44-
res.statusCode >= 300 &&
45-
res.statusCode < 400
46-
) {
47-
get(url.resolve(href, res.headers.location), callback);
48-
} else {
49-
callback(null, res);
50-
}
51-
});
37+
return new Promise((resolve, reject) => {
38+
proto
39+
.get(href)
40+
.on("error", reject)
41+
.on("response", function (res) {
42+
if (
43+
res.headers.location &&
44+
res.statusCode >= 300 &&
45+
res.statusCode < 400
46+
) {
47+
return resolve(get(url.resolve(href, res.headers.location)));
48+
}
49+
50+
return resolve(res);
51+
});
52+
});
5253
}
5354

54-
function getAllCookies(domains, callback) {
55-
const all = Object.create(null);
56-
let wait = domains.length;
57-
58-
domains.forEach(function (domain) {
59-
getCookies(domain, function (err, cookies) {
60-
if (!err && cookies.length) {
61-
all[domain] = cookies.map(obfuscate).join("; ");
62-
}
63-
if (!--wait) {
64-
callback(null, all);
65-
}
55+
async function getAllCookies(domains) {
56+
const allCookies = Object.create(null);
57+
const allSetCookies = Object.create(null);
58+
59+
for (const domain of domains) {
60+
const setCookies = await getSetCookies(domain);
61+
if (!setCookies.length) continue;
62+
63+
const cookies = toCookies(setCookies);
64+
allCookies[domain] = cookies.map(obfuscate).join("; ");
65+
allSetCookies[domain] = setCookies.map((header, index) => {
66+
const attrs = header.split(";");
67+
return [obfuscate(attrs.shift(), index), ...attrs].join("; ");
6668
});
67-
});
69+
}
70+
71+
return [allCookies, allSetCookies];
6872
}
6973

70-
function getCookies(domain, callback) {
74+
async function getSetCookies(domain) {
7175
const href = url.format({ hostname: domain, protocol: "http" });
72-
get(href, function (err, res) {
73-
if (err) return callback(err);
74-
const cookies = (res.headers["set-cookie"] || []).map(function (c) {
75-
return c.split(";")[0];
76-
});
77-
callback(null, cookies);
78-
});
76+
try {
77+
const res = await get(href);
78+
return res.headers["set-cookie"] || [];
79+
} catch (err) {
80+
if (err.code === "ENOTFOUND") return [];
81+
throw err;
82+
}
83+
}
84+
85+
function toCookies(setCookies) {
86+
return setCookies.map((c) => c.split(";")[0]);
7987
}
8088

8189
function obfuscate(str, index) {
@@ -96,3 +104,7 @@ function obfuscate(str, index) {
96104
return "%22";
97105
});
98106
}
107+
108+
function sortObject(obj) {
109+
return Object.fromEntries(Object.entries(obj).sort());
110+
}

src/parse-cookie.bench.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { describe, bench } from "vitest";
22
import * as cookie from "./index.js";
3-
import top from "../scripts/parse-top.json";
3+
import top from "../scripts/top-cookie.json";
44

55
describe("cookie.parseCookie", () => {
6+
bench("empty", () => {
7+
cookie.parseCookie("");
8+
});
9+
610
bench("simple", () => {
711
cookie.parseCookie("foo=bar");
812
});

src/parse-set-cookie.bench.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { describe, bench } from "vitest";
2+
import * as cookie from "./index.js";
3+
import top from "../scripts/top-set-cookie.json";
4+
5+
describe("parse top-sites", () => {
6+
Object.entries(top).forEach(function ([domain, values]) {
7+
bench("parse " + domain, () => {
8+
for (const value of values) {
9+
cookie.parseSetCookie(value);
10+
}
11+
});
12+
});
13+
});

0 commit comments

Comments
 (0)