This code was extracted from d3-hierarchy (licensed under BSD-3 by Mike Bostock).
From npm:
var enclose = require('circle-enclose');
var circle = enclose([
{x: -5, y: 0, r: 5},
{x: 0, y: 0, r: 2},
{x: 5, y: 0, r: 5}
])
assert(circle.r === 10);
assert(circle.x === 0);
assert(circle.y === 0);
BSD-3-Clause