the-forest/client/node_modules/hpack.js/tools/gen-static-table.js
2024-09-17 20:35:18 -04:00

104 lines
1.9 KiB
JavaScript

var utils = require('./utils');
var table = `
1 :authority
2 :method GET
3 :method POST
4 :path /
5 :path /index.html
6 :scheme http
7 :scheme https
8 :status 200
9 :status 204
10 :status 206
11 :status 304
12 :status 400
13 :status 404
14 :status 500
15 accept-charset
16 accept-encoding gzip, deflate
17 accept-language
18 accept-ranges
19 accept
20 access-control-allow-origin
21 age
22 allow
23 authorization
24 cache-control
25 content-disposition
26 content-encoding
27 content-language
28 content-length
29 content-location
30 content-range
31 content-type
32 cookie
33 date
34 etag
35 expect
36 expires
37 from
38 host
39 if-match
40 if-modified-since
41 if-none-match
42 if-range
43 if-unmodified-since
44 last-modified
45 link
46 location
47 max-forwards
48 proxy-authenticate
49 proxy-authorization
50 range
51 referer
52 refresh
53 retry-after
54 server
55 set-cookie
56 strict-transport-security
57 transfer-encoding
58 user-agent
59 vary
60 via
61 www-authenticate
`;
var out = [];
table.split('\n').filter(function(line) {
return line;
}).forEach(function(line) {
var columns = line.split(/\t/g);
var name = columns[1];
var value = columns[2];
var nameSize = Buffer.byteLength(name);
var valueSize = Buffer.byteLength(value);
out.push({
name: name,
value: value,
nameSize: nameSize,
totalSize: nameSize + valueSize + 32
});
});
console.log('exports.table = ' + JSON.stringify(out, false, 2) + ';');
var map = {};
table.split('\n').filter(function(line) {
return line;
}).forEach(function(line) {
var columns = line.split(/\t/g);
var name = columns[1];
var value = columns[2];
var index = columns[0] | 0;
if (!map[name]) {
map[name] = {
index: index,
values: {}
};
}
map[name].values[value] = index;
});
console.log('exports.map = ' + JSON.stringify(map, false, 2) + ';');