Blame view

node_modules/hpack.js/tools/gen-static-table.js 1.86 KB
aaac7fed   liuqimichale   add
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) + ';');