function peek({
notebook = "@tomlarkworthy/metaprogramming",
cell = undefined,
filter = value => true
} = {}) {
notebook = notebook.replace('https://observablehq.com/', '');
const safeFilter = value => {
try {
return filter(value);
} catch (err) {
console.error(err);
return false;
}
};
return Generators.observe(next => {
const library = Object.assign(new Library(), { require: () => require });
const runtime = new Runtime(library);
import(`https://api.observablehq.com/${notebook}.js?v=3`)
.then(({ default: define } = {}) => {
const imported = runtime.module(define, name => {
if (cell && name !== cell) return null;
console.log("name", name);
return {
fulfilled(value) {
if (safeFilter(value)) next(value);
},
rejected(err) {
if (safeFilter(err)) next(Promise.reject(err));
}
};
});
})
.catch(err => next(Promise.reject(err)));
return () => runtime.dispose();
});
}