mirror of https://github.com/lukechilds/node.git
Browse Source
Embed the compressed and minified protocol.json from the bundled v8_inspector and make it available through the /json/protocol endpoint. Refs: https://github.com/nodejs/diagnostics/issues/52 PR-URL: https://github.com/nodejs/node/pull/7491 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>v6
Ben Noordhuis
9 years ago
7 changed files with 113 additions and 1 deletions
@ -0,0 +1,22 @@ |
|||
// Flags: --inspect={PORT}
|
|||
'use strict'; |
|||
|
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const http = require('http'); |
|||
|
|||
const options = { |
|||
path: '/json/protocol', |
|||
port: common.PORT, |
|||
host: common.localhostIPv4, |
|||
}; |
|||
|
|||
http.get(options, common.mustCall((res) => { |
|||
let body = ''; |
|||
res.setEncoding('utf8'); |
|||
res.on('data', (data) => body += data); |
|||
res.on('end', common.mustCall(() => { |
|||
assert(body.length > 0); |
|||
assert.deepStrictEqual(JSON.stringify(JSON.parse(body)), body); |
|||
})); |
|||
})); |
@ -0,0 +1,25 @@ |
|||
#!/usr/bin/env python |
|||
|
|||
import json |
|||
import struct |
|||
import sys |
|||
import zlib |
|||
|
|||
if __name__ == '__main__': |
|||
fp = open(sys.argv[1]) |
|||
obj = json.load(fp) |
|||
text = json.dumps(obj, separators=(',', ':')) |
|||
data = zlib.compress(text, zlib.Z_BEST_COMPRESSION) |
|||
|
|||
# To make decompression a little easier, we prepend the compressed data |
|||
# with the size of the uncompressed data as a 24 bits BE unsigned integer. |
|||
assert len(text) < 1 << 24, 'Uncompressed JSON must be < 16 MB.' |
|||
data = struct.pack('>I', len(text))[1:4] + data |
|||
|
|||
step = 20 |
|||
slices = (data[i:i+step] for i in xrange(0, len(data), step)) |
|||
slices = map(lambda s: ','.join(str(ord(c)) for c in s), slices) |
|||
text = ',\n'.join(slices) |
|||
|
|||
fp = open(sys.argv[2], 'w') |
|||
fp.write(text) |
Loading…
Reference in new issue