Published
Edited
Jan 8, 2022
23 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
dependencies = {
const links = new Set();
let queue = [query];
while (queue.length) {
const dependant = queue.pop();
if (dependees.has(dependant)) {
for (const dependee of dependees.get(dependant)) {
links.add(`${dependee},${dependant}`);
queue.push(dependee);
}
}
}
return Array.from(links, link => link.split(","));
}
Insert cell
dependees = {
const dependees = [];
for (const key in lock) {
for (const dependencyKey in lock[key].dependencies) {
dependees.push([dependencyKey, parseResolution(key)[0]]);
}
}
return d3.rollup(dependees, V => V.map(([, v]) => v), ([name]) => name);
}
Insert cell
function parseResolution(resolution) {
const i = resolution.indexOf("@", 1);
return [resolution.slice(0, i), resolution.slice(i + 1)];
}
Insert cell
sample = FileAttachment("yarn.lock") // @observablehq/plot
Insert cell
lock = lockfile.parse(await (file ?? sample).text()).object
Insert cell
lockfile = require(await FileAttachment("lockfile-1.1.0.js").url())
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more