‘liusuyi’
2023-08-09 161b9318e345c8a0c9cdc133b33a1c759495f323
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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) + ';');