| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | #!/usr/bin/env nodevar fs = require("fs"),    commander = require("commander"),    topojson = require("../");commander    .version(require("../package.json").version)    .usage("[options] <n> [file]")    .description("Quantizes TopoJSON.")    .option("-o, --out <file>", "output topology file name; defaults to “-” for stdout", "-")    .parse(process.argv);if (commander.args.length < 1) {  console.error();  console.error("  error: missing quantization parameter n");  console.error();  process.exit(1);} else if (commander.args.length > 2) {  console.error();  console.error("  error: multiple input files");  console.error();  process.exit(1);} else if (commander.args.length === 1) {  commander.args.push("-");}if (!(Math.floor(commander.args[0]) >= 2)) {  console.error();  console.error("  error: invalid quantization parameter " + commander.args[0]);  console.error();  process.exit(1);}read(commander.args[1]).then(quantize).then(write(commander.out)).catch(abort);function read(file) {  return new Promise(function(resolve, reject) {    var data = [], stream = file === "-" ? process.stdin : fs.createReadStream(file);    stream        .on("data", function(d) { data.push(d); })        .on("end", function() { resolve(JSON.parse(Buffer.concat(data))); })        .on("error", reject);  });}function quantize(topology) {  return topojson.quantize(topology, +commander.args[0]);}function write(file) {  var stream = (file === "-" ? process.stdout : fs.createWriteStream(file)).on("error", handleEpipe);  return function(topology) {    return new Promise(function(resolve, reject) {      stream.on("error", reject)[stream === process.stdout ? "write" : "end"](JSON.stringify(topology) + "\n", function(error) {        if (error) reject(error);        else resolve();      });    });  };}function handleEpipe(error) {  if (error.code === "EPIPE" || error.errno === "EPIPE") {    process.exit(0);  }}function abort(error) {  console.error();  console.error("  error: " + error.message);  console.error();  process.exit(1);}
 |